
Turkish: 
Lisp, 1950'lerde icat edilmiş bir dildir.
İşlevsel programlama yapabiliyor, ancak aslında
genellikle işlevsel bir programlama dili olarak algılanır.
Genel olarak, bu bir metaprogramlama dili veya sembolik bir programlama dilidir.
Yapmak isteyebileceğiniz her türlü görev için kullanılabilir. Bu genel amaçlı bir dil, Lisp.
Lisp öğrenmenin genel olarak daha iyi bir programcı olmanıza yardımcı olduğu söylenir.
Bir tür farklı düşünme biçimleri açar.
Java ya da C ++ gibi dillerde ya da ne varsa.
Homoconicity fikri gibi ilginç fikirleri var.
dilin kendisi, o dilde temsil edebileceğiniz bir veri yapısı olarak yazılmıştır.
Bu metaprogramlama fikri, sadece bir sorunu çözmek için dilde programlama yapmıyorsanız,

English: 
Lisp is a language that was invented back in the 1950s.
It is capable of doing functional programming, but it's actually
often misattributed as being a functional programming language.
In general, it's a so-called metaprogramming language, or a symbolic programming language.
It can be used for any sort of task that you might want do. It's a general-purpose language, Lisp.
It's been said that learning Lisp just helps you be a better programmer in general.
It opens up a lot of different ways of thinking that are sort of
locked away in languages like Java or C++ or what have you.
It has a few interesting ideas, such as this idea of homoiconicity,
where the language itself is written as a data structure that you can represent in that language..
This idea of metaprogramming, where not only are you programming in the language to solve a problem,

Turkish: 
ancak dilin kendisini programlayabilirsiniz. Dilin yapısını değiştirebilirsiniz
belirli bir uygulama için daha uygun hale getirmek için.
Ve bu kavramları öğrenmek için olsa bile, diğer dillerde daha iyi bir programcı olursunuz.
Bununla birlikte, hala bir dil olarak kalıyor ... Ortak Lisp, özellikle
modern gerçek dünyadaki problemleri çözmede çok ama çok iyi bir dil olmaya devam ediyor.
Aslında biraz fiziğe benzetme yapardım.
Mesela, iyi fikirler, temelde iyi olan fikirler genellikle zaman testine dayanan fikirlerdir.
Şimdi, bilgisayar bilimi ve bilgisayar programlaması çok eski bir sanat değil, tabiri caizse.
Biliyorsun, asırdan daha eski.
Bununla birlikte, fizikte, mantıklı olan birçok teori vardır.
tahminlerde bulunmana izin verdiler. Mesela, Güneş dünyayı dolaşıyor.
Makul görünüyor. Görüyorsun Fakat daha sonra Dünya'nın güneşin etrafında dolaştığı fikrinin bir çekirdeği var.
Ve bu, doğru olduğu ortaya çıkan, aynı zamanda zaman testine dayanan fiziksel bir teoridir.

English: 
but you can program the language itself. You can change the structure of the language itself
to make it more suitable for a particular application.
And even if it was just for learning those concepts, you'd become a better programmer in other languages.
Nonetheless, it still remains a language... Common Lisp, in particular
remains a language that's very, very good at solving modern real-world problems.
I actually would draw an analogy to physics a little bit.
Like, good ideas, ideas that are fundamentally good are usually ones that stand the test of time.
Now, computer science and computer programming is not a very old art, so to speak.
It's, you know, less than a century old.
However, there are lots of theories in physics, for instance, that were sensible,
they allowed you to make predictions. For example, the sun going around the Earth.
It seems reasonable. You see it. But there's a kernel of an idea later that the Earth goes around the sun.
And that is a physical theory that, one, turned out to be true, but also stands the test of time.

Turkish: 
İçinde temelde iyi olan iyi fikirler var.
Ben de Lisp’in 1950’lerde başladığını ve hala bir şeylerinin olduğunu düşünüyorum.
hala iyi bir fikir çekirdeği var, her gün kullanılmasa bile öğrenmeye değer olduğunu düşünüyorum.
(kapalı) Günden güne kullanıyorsun, değil mi?
(Smith) Evet.
Öyleyse Lisp, yine de bir fikrin bu çekirdeğine geri dönmek bile, istediğim bir dili oluşturmakta iyidir.
Sorunumu ifade etmem için gereken dili oluşturmamı sağlayan bir programlama dili kullanmaktan daha iyi bir şey düşünemiyorum.
Her gün çalıştığım şeyler, çok fazla literatürün olmadığı kuantum hesaplamadır.
kuantum hesaplamada ortaya çıkan problemlerin nasıl çözüleceği hakkında.
Kuantum hesaplama, örneğin sayıların eklenmesinden çok, çok farklı bir matematik dili olan kuantum mekaniğini kullanır.
Her şeyin farklı türden kurallara sahip olduğu çok garip bir dünya.

English: 
There are good ideas in it that are fundamentally good.
And so I think that just the fact that Lisp started in the 1950s and still has something,
still has some kernel of an idea that's good, I think makes it worth learning, even if it's not used day to day.
(off) You do use it day to day, don't you?
(Smith) Yes.
So, Lisp, even still, going back to this kernel of an idea, is good at building a language that I want.
I can't think of anything that's better than using a programming language that allows me to build the language that I need to express my problem.
The stuff that I work on day to day is quantum computing, where there isn't a lot of literature
on how to wrangle the problems that come up in quantum computing.
Quantum computing uses quantum mechanics, which is a very, very different mathematical language than just addition of numbers, for instance.
It is a very strange world, where things have all different types of rules.

Turkish: 
Dolayısıyla, modern programlama dilleri bu yapıları çok akıcı bir şekilde ifade etmeyi desteklememektedir.
Sık sık, yaşadığım sorunlara çözüm bulmak için kendi dilimi oluşturmam gerekiyor.
Şimdi, bunu C ++ veya Java gibi bir dilde yapabilirsiniz. Kendi ayrıştırıcınızı oluşturabilirsiniz, kendi ayrıştırıcınızı oluşturabilirsiniz.
derleyici, ihtiyacınız olan her şeyi sadece problemlere çözüm yazabilmek için oluşturabilirsiniz.
Ancak Lisp'te dili çok kolay bir şekilde çok hafifçe büyütmenizi sağlar,
Böylece Lisp'te doğrudan bu yeni yapıları ifade edebiliyorum.
Ve bu yeni alan türleri için çok faydalıdır.
Aslında dilin sözdizimini genişletiyoruz.
Bu yüzden, yetiştirmeyi sevdiğim bir örnek, programlama Meclisi günlerinde,
"for" döngüsü gibi bir şey yapmak isteseydiniz, bu yapıyı açık bir şekilde yazacağınız bu yapıyı yazdınız.
"zıpla" ifadesi, ve sonra başka bir yerde ayrı bir sayacın olur,
ve hepsi sadece bir demet montaj hattı.
Meclis kodunun hiçbir yerinde, aslında "1 ila 10 için" gibi bir şey demiyorsunuz veya

English: 
So, modern programming languages don't support expressing these constructs in a very fluid way.
Often, I need to sort of build my own sort of language in order to express solutions to problems that I'm having.
Now, you can do this in a language like C++ or Java. You can build your own parser, you can build your own
compiler, you can build all of the things you need just to be able to write solutions to problems.
But in Lisp, it allows you to grow the language ever so slightly in a very easy way,
so that in Lisp directly I can express these new constructs.
And it's very helpful for these types of new domains.
We're actually extending the syntax of the language.
So, one example that I like to bring up is, back in the days of programming Assembly,
if you wanted to do something like a "for" loop, you wrote down this structure where you'd have this explicit
"jump" statement, and then you'd have a separate counter somewhere,
and it's all just a bunch of lines of Assembly.
Nowhere in the Assembly code are you actually saying, like, "for i from 1 to 10", or something like that,

Turkish: 
ama kavramın orada olduğunu biliyorsun. Programcı olarak bu talimatlarla ne demek istediğinizi "for" döngüsünden geçirdiğinizi biliyorsunuz.
Lisp'in yaptığı şey, "for" döngüsünün bu fikrini almanıza ve aslında sözdizimsel olarak "for" döngüsünü yazmanıza olanak tanır.
Yani bu sadece bir fonksiyon kütüphanesi değil. Aslında yeni bir sözdizimi ve dilde yeni bir işlevsellik.
(kapalı) Ama sonunda her şey sonunda Meclise geldi, değil mi?
(Smith) Evet, kesinlikle.
Evet, sonuçta hepsi Meclis'e derlendi.
(kapalı) Yani bu, düşüncelerinizi programcı olarak düzenlemenin bir yoludur.
(Smith) Doğru, evet.
Bu, sonuçta, bunun için neyin optimize ettiğini, programcının düşüncelerinizi düzenlemenizi sağladığını düşünüyorum.
Programlamada çoğu zaman düşünmeye harcanır, bu yüzden programlamada optimize etmek istediğim ilerleme budur.
Programın verimliliği mutlaka değil, bunu ve diğer şeyleri yapabilmenize rağmen.
Sorunun çözümünü ilk önce kağıt üzerinde ya da ekranda görüntüleyebiliyor.
(kapalı) Ve bu şekilde daha hızlı yaptığınızı söyler misiniz?
(kapalı) Dışarıda birileri olabilir, "Evet, bunu Haskell'de yapabilirim, bunu C'de yapabilirim."

English: 
but you know the concept is there. You know as the programmer what you mean by these instructions is a "for" loop.
What Lisp does is allow you to take that idea of a "for" loop and actually syntactically be able to write a "for" loop.
So it's not just a library of functions. It's actually new syntax and new functionality in the language.
(off) But it all does come down to Assembly in the end, doesn't it?
(Smith) Yes, absolutely.
Yeah, it all gets compiled to Assembly in the end.
(off) So this is a way of organizing your thoughts as a programmer.
(Smith) Correct, yes.
That's, I think, ultimately what it's optimizing for, allowing you the programmer to organize your thoughts.
Most of the time in programming is spent thinking, so that's the progress that I want to optimize in programming.
Not necessarily the efficiency of the program, although you can do that, and other things.
It's being able to even get the solution to the problem out on paper or on the screen in the first place.
(off) And would you say you're faster doing it this way?
(off) There might be somebody out there going, "Yeah, I could do that in Haskell, I could do that in C."

English: 
(Smith) So, instead of taking my word for it, we did this little program where I work where we had
college students, interns, come in and try the language, then try to use it for solving some of these quantum problems.
And the first reaction is, like, "Whoa, there are lots of parentheses."
If you look at Lisp code, there are lots of parentheses. And then it's... Well, the documentation is sometimes
a little bit shaky in certain places.
But once they kind of got through that first bit of the learning curve,
the feedback that I got is that they could think about their problems in a more fundamental,
or more structural fashion, that the language itself wasn't getting in the way of solving their problems.
It's that now they could express what they think in a more direct fashion, without so much of an impedance mismatch.
Fortunately, Lisp was originally defined in, like, half a page of code. Like, the entire language.
And in that page of code, they had very few concepts that bring to light all of these things that I'm discussing.
Namely, the notion of S expressions, which is how the Lisp language itself is built, how you write it.

Turkish: 
(Smith) Yani, sözümü almak yerine, çalıştığım yerde çalıştığım bu küçük programı yaptık.
üniversite öğrencileri, stajyerler, içeri girip dili deneyin, ardından bu kuantum problemlerinden bazılarını çözmek için kullanmaya çalışın.
Ve ilk tepki, "Whoa, bir sürü parantez var."
Lisp koduna bakarsanız, çok parantez var. Ve sonra o ... Şey, belgeler bazen
bazı yerlerde biraz titrek.
Fakat bir kez öğrenme eğrisinin ilk kısmını geçtiklerinde,
Aldığım geri bildirimler, sorunları hakkında daha temel bir şekilde düşünebilecekleridir.
ya da daha fazla yapısal moda, dilin kendi sorunlarını çözme yolunda olmadığından.
Artık, empedans uyumsuzluğu olmadan, doğrudan düşünceyle düşündüklerini ifade edebiliyorlar.
Neyse ki, Lisp başlangıçta yarım sayfa kod olarak tanımlandı. Tüm dil gibi.
Ve bu kod sayfasında, tartıştığım her şeyi aydınlatan çok az kavramı vardı.
Yani, S ifadeleri kavramı, Lisp dilinin kendisinin nasıl inşa edildiği, nasıl yazdığınız.

Turkish: 
Ve bunu takiben, bu makro ve metaprogram kavramı, dili nasıl genişletebileceğimizi gösteriyor.
Ve bence bu iki şey gerçekten tüm bu şeylerin nasıl çalıştığını aydınlatıyor.
Bu konuda özel olan, onu iki şekilde yorumlayabilmemiz.
Kod olarak bakılabilir. Görünüşe göre 1 + 2 * 3 yapıyoruz.
Ancak aynı zamanda veri olarak da görülebilir. Lisp'te burada parantez kullanarak bir liste yazdığımızı unutmayın.
Sembolleri tıpkı isimleri gibi yazıyoruz. Öyleyse Lisp'te aslında açık bir köprü var ...

English: 
And following that, this notion of macros and metaprogramming, how we can extend the language.
And I think these two things really bring to light how all this stuff works.
The special thing about this is that we can interpret it in two ways.
It can be looked at as code. It looks like we're doing 1+2*3.
But it can also be looked at as data. Remember that in Lisp we write out a list using parentheses, here.
We write out symbols just as their names here. So in Lisp, actually have this explicit bridge...
