Lisp adı verilen aynı dil ailesinin lehçeleri olduklarını biliyorum, ama tam olarak ne farklar? Mümkünse sözdizimi, özellikler, özellikler ve kaynaklar gibi konuları kapsayan bir genel bakış verebilir misiniz?
Lisp adı verilen aynı dil ailesinin lehçeleri olduklarını biliyorum, ama tam olarak ne farklar? Mümkünse sözdizimi, özellikler, özellikler ve kaynaklar gibi konuları kapsayan bir genel bakış verebilir misiniz?
Yanıtlar:
Hepsinin birçok ortak noktası var:
(function-name arg1 arg2)
Common Lisp'in ayırt edici özellikleri:
Clojure'un ayırt edici özellikleri:
[]
ve haritalar - vektörlerin ve haritaların genel kullanışlılığına ek olarak, bazıları bunun genel olarak daha okunabilir kılan bir yenilik olduğuna inanıyor{}
()
Şema ayırt edici özellikler:
Yukarıdaki insanlar bir kaç şeyi kaçırdı
Common Lisp'de vektörler ve hash tabloları da vardır. Aradaki fark, Common Lisp'in vektörler için # () kullanması ve karma tablolar için sözdizimi olmamasıdır. Şemanın vektörleri var, inanıyorum
Common Lisp, yeni parantezleri kullanmanıza izin veren okuyucu makrolarına sahiptir (Scheme'nin soyundan gelen Racket gibi).
Scheme ve Clojure, Common Lisp'in hijyenik olmayan makrolarının aksine hijyenik makrolara sahiptir.
Tüm diller ya moderndir ya da kapsamlı yenileme projelerine sahiptir. Common Lisp son beş yılda (çoğunlukla Quicklisp sayesinde) kapsamlı kitaplıklar edinmiştir, Scheme bazı modern uygulamalara sahiptir (Racket, Chicken, Chez Scheme, vb.) Ve Clojure nispeten yakın zamanda oluşturulmuştur.
Common Lisp, kullanmış olabileceğiniz diğer OO sistemlerinden oldukça farklı olsa da yerleşik bir OO sistemine sahiptir. Özellikle, bu zorlanmaz - sen yok olması OO kod yazmak.
Dillerin biraz farklı tasarım felsefeleri var. Şema, Aktör Modeli'ni anlamak için minimal bir lehçe olarak tasarlandı; daha sonra pedagoji için kullanıldı. Common Lisp, ortaya çıkan sayısız Lisp lehçesini birleştirmek için tasarlandı. Clojure eşzamanlılık için tasarlanmıştır. Sonuç olarak Scheme, minimal ve zarif olma, Common Lisp'in güçlü ve paradigma-agnostik olma (işlevsel, OO, her neyse) ve Clojure'un işlevsel programlamayı tercih etme konusunda bir üne sahiptir.
Lisp-1 ve Lisp-2 farklılıklarını unutmayın.
Scheme ve Clojure Lisp-1'dir:
Bu, hem değişkenlerin hem de işlevlerin adlarının aynı ad alanında bulunduğu anlamına gelir.
Common Lisp Lisp-2'dir:
Fonksiyon ve değişkenler farklı ad alanlarına sahiptir (aslında, CL'nin birçok ad alanı vardır).
Gimp, Scheme'de yazılmıştır :)
Aslında, bazılarının C ++ ile yazılabileceğini düşündüğü yazılımın tahsisi muhtemelen Lisp şemsiyesi altında yapıldı, altın elmaları gruptan ayırmak zor. Gerçek şu ki, C ++ her zaman popüler değildi, sadece güncellemeler geçmişi nedeniyle bugün popüler görünüyor. Yüzyılın daha küçük yarısı için C ++ çoklu iş parçacığı kullanmadı bile, Python bugün işe yaramaz test edilmemiş hatalı yapıştırıcı kodunun bir fosseptik olduğu yerdi. Biraz daha hızlı ilerliyor ve şimdi işlevsel programlamada bir artış görüyoruz, bu daha çok uyum sağlamak veya ölmek gibi. Bence Java'nın uyarlama kısmı söz konusu olduğunda haklı.
Scheme, Lisp dilini basitleştirmek için tasarlandı, bu onun tek amacı hiçbir zaman gerçekten yakalanmaması dışında buydu. Bence Clojure, JVM için Scheme'i basitleştirme amacına benzer bir şey yapıyor. Tıpkı diğer tüm JVM dilleri gibi, kullanıcı deneyimini şişirmek için, yalnızca Java ülkesinde ortak metin yazmayı basitleştirmek için.