連休中にぼんやりとしていたので、今回は短めの「今時のLisp入門」の続きです。
はじめてLispを学ぼうとする人が悩むのは、どのLispを使ったら良いのかが判りにくい事もあると思います。
たいてのプログラム言語には複数の処理系があります、PythonにはCPython, PyPy, IronPython, Jythonなど処理系がありますが、普通はCPythonを使うと思います。
ところが、WikipediaのLISPを見ると26個もの方言があります、1つの方言に複数の処理系がる事が多いので、世の中にはたくさんのLisp処理系があります。
どれを使え良いのでしょうか ???
Common Lisp
「Lisp利用者の数だけのLisp処理系がある」という迷言があります、Lispは昔から方言だらけでした。 しかし、これではいけなと1984年に標準規格が作られました、これがCommon Lispです。現在はANSI規格になっています。
そして、処理系もたくさんあります!
Allegro Common Lisp、LispWorksなどの、商用(有償)の処理系もあり、お仕事で使うなら選択肢の1つです。また、どちらの会社も無料版を公開しています。オープンソース系は SBCL や Clozure CL などでしょうか。
Scheme
Schemeは有力なLisp方言です。Common Lispは強力ですが、いろいろな機能を詰め込みすぎ大きな仕様になってしまった反省からか、コンパクトな言語系を目指した仕様になっているのが人気の理由の1つだと思います。
IEEEで言語仕様が認証されています。またライブラリーはScheme Requests for Implementation (SRFI)で仕様を標準化しています。
もちろん、処理系もたくさんあります!
言語仕様が小さいく作りやすいので、個性的な処理系がたくさんあります。 その中で一押しはGaucheです、日本人プログラマー川合史朗さんによって開発されたオープンソースの処理系で、日本語情報も充実していますす。
Clojure
Clojureは、Lisp系では珍しく現在でも盛んに使われている方言です(笑。ClojureホームページのSuccess StoriesページをみるとClojureを本気で利用されている事がわかります。
Clojureは、イミュターブルなデータ構造、STMなどをそなえた並行処理に強い関数型プログラム言語です。JVM上で動きます。
Emacs Lisp
Emacsは今でも人気があるエディターですが、Emacsは、ほぼEmacs Lispで書かれています。したがって、Emacsのカスタマイズ、拡張にはEmacs Lispを使います。
もし、あなたがEmacsユーザーなら C-x C-e
で直ぐにLispが実行できます。
で、どのLispを使ったらいいの?
仕事で使うならCommon LispやClojureかも知れませんが、この連載のプログラマーの一般教養としてのLispの場合は。
- もしあなたの作ったLisp処理系があれば、その処理系
- もしあなたの好きなLisp処理系があれば、その処理系
- 直ぐに質問できるLisp使いが身近にいるなら、そのLisp使いの使っているLisp
- もしあなたがEmacsユーザーなら、Emacs Lisp
- それ以外は Gauche かな
Gaucheをお勧めする理由は以下です。
- 現在もメンテされている
- 日本語情報が豊富にある
- 入門書籍がある 紙の本、PDF
- Windows, Mac, Unixで動き、インストールが簡単
- Ruby, Pythonなどと似た雰囲気があり、現在のプログラマーには使いやすい
次回こそ、じっくりとS式を説明したいと思います。