Lisp, onu desteklemek için geniş ve karmaşık bir çalışma süresine sahip büyük ve karmaşık bir dildir. Bu nedenle Lisp, büyük ve karmaşık problemler için en uygunudur.
Şimdi, karmaşık problem aynı değildir karmaşık biri. Bir kompleks sorun küçük ayrıntılar bir sürü biridir, ancak zor olmadığı. Bir havayolu rezervasyon sistemi yazmak karmaşık bir iştir, ancak yeterli para ve programcı ile zor değildir. Farkı anladın mı?
Karmaşık bir sorun, kıvrımlı, geleneksel bölme ve fethetmenin işe yaramadığı bir sorundur. Bir robotu kontrol etmek veya tablo şeklinde olmayan verilerle (örneğin diller) veya son derece dinamik durumlarda çalışmak.
Lisp, çözümün genişletilebilir olması gereken problemler için gerçekten çok uygundur; klasik örnek, emacs metin düzenleyicisidir. Tamamen programlanabilir ve dolayısıyla kendi başına bir programlama ortamıdır.
Norvig, PAIP adlı ünlü kitabında , Lisp'in keşifsel programlama için ideal olduğunu söylüyor. Yani, tam olarak anlaşılmayan bir soruna bir çözüm programlamaktır (çevrimiçi rezervasyon sisteminin aksine). Başka bir deyişle: Karmaşık sorunlar.
Dahası, Lisp öğrenmek size unutulmuş temel bir şeyi hatırlatacaktır: Von Neumann ve Turing arasındaki fark. Bildiğimiz gibi, Turing'in hesaplama modeli ilginç bir teorik modeldir, ancak bilgisayar tasarımı için bir model olarak işe yaramaz. Öte yandan Von Neumann, bilgisayarların ve hesaplamanın nasıl yürütüleceğine dair bir model tasarladı: Von Neumann modeli. Von Neumann modelinin merkezi, yalnızca bir belleğiniz olması ve hem kodunuzu hem de verilerinizi orada depolamanızdır. Bir Java programının (veya C # veya ne isterseniz) Turing modelinin bir tezahürü olduğuna dikkat edin. Programınızı kesin olarak somut olarak belirlediniz. Ardından, üzerine atılan tüm verilerle başa çıkabileceğinizi umarsınız.
Lisp, Von Neuman modelini sürdürüyor; kod ve veriler arasında keskin, önceden belirlenmiş bir sınır yoktur. Lisp'de programlama, zihninizi Von Neumann modelinin gücüne açar. Lisp'te programlama, eski kavramları yeni bir ışıkta görmenizi sağlar.
Son olarak, etkileşimli olarak, programlarınızı geliştirirken (derleyip çalıştırmanın aksine) onlarla etkileşim kurmayı öğreneceksiniz. Bu aynı zamanda programlama şeklinizi ve programlamaya bakışınızı da değiştirir.
Bu giriş ile nihayet sorunuza bir cevap sunabilirim: "Geleneksel" dilleri gölgede bıraktığı yerler bulacak mısınız?
Gelişmiş bir programcıysanız, gelişmiş araçlara ihtiyacınız vardır. Ve Lisp'ten daha gelişmiş bir araç yoktur. Veya başka bir deyişle: Sorunlarınız zorsa cevap evettir. Aksi yok.