
Lisp, Jhon McHarty tarafından 1958 yılında geliştirilen yüksek seviyeli, fonksiyonel bir programlama dilidir. Hatta Fortan’dan sonra en eski 2. yüksek seviyeli programlama dili olduğu kabul edilir. Her ne kadar günümüz programlama dillerinden kendini ayıran birçok yönü olsa da öğrenilmesi kolay, basit bir dildir.
Lisp, genel amaçlı kullanılabileceği gibi özellikle yapay zeka ve sembolik hesaplama alanlarında tercih edilir. Bunun sebebi ise aynı zamanda yapay zekanın mucide de olan Jhon Mcharty’nin bu dili yapay zeka çalışmaları için geliştirmiş olmasıdır.
Lisp’in günümüze kadar birçok lehçesi geliştirilmiştir ve kullanılmıştır. Öyle ki bu dili kullanmak istediğimizde karşımıza saf Lisp isminde bir dil çıkmayacaktır. Günümüzde Lisp’in karşılığı olarak kabul edebileceğimiz dil ise ANSI Common Lisp’tir. 1970’li yıllarda çok fazla Lisp türevinin ortaya çıkmasıyla piyasada bir Lisp furyası oluşmuş, bu furyadan kurtulmak için piyasadaki Lisp türevlerinin dezavantajları ayıklanıp en iyi yönleri birleştirilerek Lisp için yeni bir standart olan Common Lisp geliştirilmiştir. Daha sonrasında Common Lisp ANSI X3.226-1994 standartı olarak kabul edilmesiyle bu standart resmileşmiştir.
Common Lisp haricinde günümüzde hala kullanılmaya devam eden birçok Lisp türevi daha bulunmaktadır. En yaygın kullanılan türevlerden bazıları:
- Scheme
- Autolisp
- Racket
- Clojure
- Emacs Lisp
tir. Bu türevlerin hepsi temel lisp felsefesine sadık ve syntaxları hemen hemen aynıdır. Lisp türevlerinden herhangi birini kullanan bir kişi başka bir lisp türevini de rahatlıkla kullanabilir.
Şimdi de Lisp’in syntax yapısını inceleyelim.
- Lisp dilinde her bir işlem (aritmetik işlemler, mantıksal işlemler, karşılaştırma ifadeleri, değişken-fonksiyon tanımlama ve çağırma…) parantezler parantezler içerisinde yapılır. Bundan dolayı bir lisp kodunda çok fazla içe prantez yapılarını görebiliriz.
- Aritmetik ve mantıksal işlemlerde diğer programlama dillerinden aşina olduğumuz infix notasyonu yerine prefix notasyonu kullanılır. Bu notasyonda operatör, operandların arasına değil operandların başına yani soluna koyulur. Örneğin 2 ve 5 sayısının toplama işlemini “+ 2 5” şeklinde ifade ederiz.
- Lisp dilinde “{}” parantez kullanımı yer almaz. Bloklar “()” ile oluşturulur.
- Yorum satırı için “;” kullanılır. Yani buradan noktalı virgülün Lisp dilinde komutu sonlandırmak için kullanılmadığını anlayabiliriz.
- Lisp’te değişken ve fonksiyon tanımlamalarında veri tipi belirtilmez. Veri tipi değişkenin değerine göre otomatik olarak atanır.
Bu yazıda Lisp dilinin temel özelliklerini ele aldık. Bir sonraki yazıda Lisp’te kod yapısını örneklerle inceleyeceğiz.