
ABCL全名是「Armed Bear Common Lisp」,是一個在JVM上的Common Lisp語言實現。
除了實現Common Lisp的標準規範外,支援流行的既定標準(不在標準規範中,但幾乎可以視作標準的規範),包含ASDF、Quicklisp、named-readtable等。也在ANSI標準實現上提供了Package別名、多執行緒,和與JAVA JVM天然交互的能力。
我自己是很喜歡Common Lisp這個雖然古老,但異常靈活強大的程式語言(有多古老?第二個高級程式語言)。它讓我感覺程式開發人員真的在掌控程式語言。
Common Lisp的出現比C語言更早,僅在Fortran之後,是第二個出現高級程式語言。
有這麼一條定律:格林斯潘第十定律(Greenspun's tenth rule):「任何C或Fortran程序複雜到一定程度之後,都會包含一個臨時開發的、不合規範的、充滿程序錯誤的、運行速度很慢的、只有一半功能的Common Lisp實現。」。既然如此,為什麼不一開始就直接使用Common Lisp?我第一個接觸的Common Lisp實現是GNU CLISP,不過通常更推薦使用SBCL或CCL,此外還有定位與lua類似,做為嵌入膠水語言設計的ecl和C++開發的Clasp。商業實現上還有Allegro CL和LispWorks。LispWorks甚至有對於行動裝置開發的支援。
但既然這次的主要學習目標是JavaFX,自然要選擇使用JAVA實現的ABCL摩擦更小。這也就是為什麼雖然SBCL更穩定、快速,但卻使用ABCL進行開發與學習。
ABCL使用者文檔這麼形容:「JAVA有很棒的GUI函式庫,但並不是最棒的程式語言。LISP是世界上最棒的程式語言,但沒有標準的GUI函式庫。」
Benefits of using ABCL
-------
* Java has great GUI libraries, but it's not the world's greatest programming language
* Lisp is the world's greatest programming language but has no standard GUI libraries.
* Therefore: Write great applications using Java for your front-end GUI backed with Lisp code and get the best of both worlds.
如果你也想試試 ABCL,現在可以先在終端機確認 Java 執行環境:
java --version
確認可以執行後,接著閱讀準備ABCL執行環境,下載 ABCL 並在 REPL 中執行第一個 Hello ABCL。