Lisp 幾種方言的一些區別

Common Lisp

規模太大,文檔太厚,讓人望而生畏。繼承了 Lisp 50年的許多精華, 還有糟粕.正則表達式

精華: 完整的 Lisp 實現, 龐大完整的庫. 生產級的設計. 支持 Read Macro, package 命名空間。緩存

糟粕:數據結構

  1. 符號名稱默認不分大小寫,雖然能夠用 ‘| 。。 |’ 的形式建立小寫符號,但太難看了。併發

  2. 沒有定義正則表達式的支持,這個功能是如此的普通,導致大量的非官方庫被使用,並所以了不少爭論。編輯器

  3. 大量冗餘的函數庫。模塊化

  4. 文檔古舊,社區鬆散。大部分的文檔和書籍都是10年之前的。社區代碼的發佈推廣,基本上仍是靠人工宣傳。太多分散的網站和平臺。讓社區不少人作了不少相同的無用功。函數

  5. 沒有出色的應用。好的語言若是沒有好的應用,誰能相信呢?網站

Scheme

文檔少,學院氣氛濃厚,缺少應用。不適合生產應用。 鎖定了 Read Macro 語法,語法分化傾向明顯。不支持 Pakcage,不支持函數和變量命名空間的分離。不支持 Unicode。設計

若是有一些好的文檔,也許能讓更多人認識到這門語言精巧,優美的設計。code

Emacs Lisp

沒有語言基礎的入門資料,假定每一個人都學過 Lisp。不支持 Pakcage,只能經過命名約定的方式創建模塊化管理機制。隱藏在一個編輯器之中。

也鎖定了 Read Macro。

優勢:符號區分大小寫。文檔豐富細緻,沒有實現分化的傾向。大量優秀的文本處理方面的函數和功能完整的正則表達式實現。

不適合批量文件處理,緩存是文本的表現形式。

Clojure

用 Java 實現的 Lisp 解釋器。鎖定了 Read macro, 大量分化的語法,減弱了代碼和數據結構之間的轉換能力。

優勢:共享 Java 的庫,吸收了不少語言的優勢,命名風格簡潔清晰,併發支持出色。已經有了 C# 和 JavaScript 的實現。

在語言表達能力上作了不少妥協,發展迅速。對 Lisp 的推廣做用很正面。

相關文章
相關標籤/搜索