lisp

gomünüst gomünüst
object oriented dillerde kullanılan class, function overloading, operator function, operator overloading, fonksiyon çağıran fonksyion gibisinden tuhaf şeyleri ilk defa kullanan, kullandıran tarihimizin ilk yüksek seviyeli programlama dili.

yüksekliği üstüne kurulduğu mantıktan ileri gelir. c ve türevleri ile programlamayı öğrenenler bilirler ki arkada hep bir bellk hücresi, 8-16-32-64-128... bitlik şeyler vardır bizi bağlayan. stack bazen overflow olur. memory bilmem nesine su kaçar ve işlemci gücünün döngüler üzerinde olumsuz etkisi vardır falan...

oysa lisp programlama dili matematik uygulamak için, matematikçiler için geliştirilmiştir. bu dilde program yazarken bellek yetti mi, verinin tipi kayık mıydı, kayık olmazsa suda batar mıydı, ne kadar bellek harcar, ne kadar hızlı çalışırdı, dögülerle bekleme koysak ya da sisteme 100 milisaniye sleep koysak harfler yukarıdan aşağı kayar mıydı diye düşünmez programcısı.
bir matematikçi bilgisayar sistemine iş yaptırmak istediğinde neyle ilgilenmek ister, neyle ilgilenmez istemezse bunlar gözönüne alınarak geliştirilmiş.

değişken tanımlamak diye birşey yoktur zira bellekte yer ayırmak gibi bir cümleyi kafalarından geçirmez lisp programcıları.
bir matematiksel işlemin sonucu (abartmıyorum) 20000 basamaklı bir sayı olsa bunu rahatlıkla bir değişkene atar yer yetiyor mu misafir çağırmasak mı diye dertlenmez.

sonuc = 20000_basamklı_sonuc_ureten_fonksiyon()
yani (= sonuc 20000_basamklı_sonuc_ureten_fonksiyon())

programcısı hız konusunda dertlenmez, zaten istediğiniz işi beklediğiniz süre içinde yapacak, yapabilecektir büyük ihtimalle (burada bahsi geçen işlem matematiksel işlemlerdir)

eğer biraz tuhaf biriyseniz ve başka bir programlama dili kullanan bir arkadaşınızdan c# syntaxının güzel olduğunu falan duymuşsanız oturup c# syntaxını algılayacak bir hale getirebildiğiniz lisp yorumlayıcınızla dövüşsüz kavgasız yeni kodlama biçimlerinin tecrübeleri yaşayabilirsiniz.

java dilinin tamtamcılarının bahsettiği çöp toplayıcıları ile 70lerden beri haşır neşir olan bu dil ile eski yeni bütün makinelerde iş yapan programlar yapabilirsiniz.
iş yapan programların dışında bir de buton yapan, mesaj verdiren, muhtara kimin mahalleye girip çıktığını söyleyen vb programları da yazmak isterseniz bir iki ek paket kullanıp hacet giderebilirsiniz bu yönde de.

yapay zeka denen science-fiction kavramın matematiksel zeminde icra edilmesini sağlayan - bunu nasıl yaptığını anlamak için önce yapay zekanın dayandığı algortimaları-matematiği bilmek gerekiyor- acayip özellikleri vardır.

eğer lisp hakkında hiçbir şey bilmeyen biri iseniz bu dili öğrendiğinizde bir programlama dilinin tutulması için reklamın ne kadar önemli olduğunu anlayacaksınız. zira uygulamada ne kadar yetenekli olduğu autocad ile ispatlamış olan lisp dilinin vb ile karşılaştırılması gibi onur kırıcı şeyleri koca koca adamlardan duyuyor olmamız bu sektörün de popülizme ne kadar açık olduğunun, uzmanlığın, profesyonelliğin gerçekçiliği içermediğinin göstergesidir.
tayyizemane tayyizemane
günümüzde kullanılan lisp dili değil, lisp ailesi dilleridir (ansi common lisp). elisp, scheme, autolisp gibi lehçeleri vardır, autocad de autolisp kullanılmıştır. oluşturulma gayesi açısından pearl, python, ruby gibi dillerin atası sayılır.
ali kamber ali kamber
dünyanın en ilkel programlama dili (sadelik anlamında, tırtlık anlamında değil). her şey liste (ya da listeler listesi) bu dilde; programın kendisi dâhil. örneğin:

(bu 1 lisp ifadesi)
(bu da (başka 1) lisp ifadesi)
((((maalesef) bu (da) 1 lisp) ifadesi))

her şey liste olduğundan ve listeler parantez içinde gösterildiğinden en çok parantez israf edilen dillerden biri aynı zamanda. ağızdan ağıza aktarılan bir efsaneye göre, ermiş lisp programcıları bir lisp programına baktıklarında parantezleri değil, ifade ağacını görürlermiş. hâlâ bir lisp programına baktığınızda parantez görüyorsanız bilin ki daha toysunuz.
il principa il principa
c, turing machine implementasyonudur. lisp ise turing machine'e alternatif geliştirilen hesaplama modellerinden en çok tutanıdır. çok şık ve özlü bir matematiksel temeli vardır. lambda calculus modeline akraba sayılır, ki lisp ve lambda calculus modellerinin mimarları akrandır.
c' den sonraki süreçte ortaya çıkan modern dillerde standart tarif c' yi baz alıp, üzerine lisp tarzı özellikler eklemektir.
lisp'e yaklaşan dillerde metaprogramming ve fonksiyonel dil özellikleri öne çıkar.
python c' yi baz alarak yazılmıştır. içinde functional programming özellikleri bulundurur ama metaprogramming namına ele gelir pek bir şey yoktur. gerçekten lisp' den esinlenmiş bir dil için julia'a göz atılması gerekir.