各種Lisp系語言大檢閱


主要特色:

 

CommonLISP : lisp系集大成者, 工業化強度的大型語言. 擁有理論上最高的表達力, 非常復雜, 學習難度極大. 喜歡的人捧到天上, 覺得它是一切語言的終點, 不喜歡的人惡心死, 覺得各種混亂各種冗余, 缺失美感. (工業化語言)

Scheme: 一種以靜態作用域和強制嚴格尾遞歸實現為特色, 遵從的理念是編程語言發展不該越來越復雜,不斷堆疊新的功能和特色, 而是應該不斷消除缺陷和限制, 以使得不再需要添加功能和特性就能達到目的. 追求數學上的美感, 跟CommonLISP在很多理念上完全相反, 相對簡單,但是極端靈活. 由於缺少實用的庫而長期淪為教學語言, 很少用於實用. (算法語言)

Clojure: 一種新興的lisp, 起於jvm平台, 現在已經移植到了.Net 和 Node.js 因為根植於幾個非常流行的平台,使得其具有得天獨厚的優勢, 市場占有率節節上升, 直追前兩大lisp. 語法上充分利用了多種括號,使得括號總數減少了.同時追求工業化強度和數學美感之間的平衡. 啟動時間過長是最大的缺點.

newLISP: 劍走偏鋒的獨特lisp, 有大量創新內容, 同時保留一些在lisp系進化過程中被拋棄的設計(可能是過於大膽或者過於靈活副作用太大等原因),這些魔鬼設計的組合形成了一個強大獨特的動態腳本語言系統.最大特色是語言好小,整個只有200k.

 

AutoLISP:曾經作為AutoCAD軟件的內置腳本而成為最多人使用的lisp,但是語法古老, 缺陷很多,性能低下,代碼丑陋, 世人關於lisp的種種不實的評論很多是由它而來. 現在已經被淘汰, 新版本AutoCAD用CommonLISP.

EmacsLISP: Emacs編輯器的擴展腳本語言, 現在依然存活的最古老的lisp語法之一, 因為編輯器而為世人所知. 但是跟AutoLISP一樣,是一種古老的落后的lisp語言.

 


 

各個有影響力的分支:

 

Scheme的分支:

Racket: 以Scheme為基礎, 增加了大量實用的語法和庫, 使其成為一種更實用的語言而不僅僅是教學語言, 完全兼容低版本的scheme, 大部分兼容高版本的scheme.
IronScheme: .Net上的Scheme實現, 在R6RS標准的95%之上, 增加了跟.Net庫的互操作和集成, 使得其成為一種實用的嵌入.NET程序的靈活腳本語言.在ngen的幫助上, 它成為啟動最快的.Net lisp.

Clojure的分支:
ClojureCLR: .NET的DLR上的Clojure,並不是對jvm版的翻譯,而是根據.Net而定制的實現. 
ClojureScript: 把Clojure編譯為javascript以運行在瀏覽器或Node.js. 是clpjure的子集


 

 

 

社區和文檔:

 

CommonLISP 社區對新人很不友好, 充滿歧視. 教程很多, 但是很古老,文檔多但是都過於龐大, 讓人望而生畏.

EmacsLISP 社區教程豐富細致

Scheme社區像大學, 文檔都像論文一樣

Clojure社區非常友好, 同時文檔書籍以很快的速度增加着

Racket文檔龐雜,社區沒什么人, 並且設計者很有閉門造車的意味

newLISP社區在沒落,文檔不完整, 但整體方向沒問題.


 

 

流行程度:

CommonLISP (30幾位)  
Scheme (40幾位)
Clojure (50-100位)

其他(不在前100)

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM