人工知能のような複雑なプログラムを作るためにLispを使う理由として少なくとも以下の8つがある、らしい。
- 組み込みのリスト処理機能 (built-in support for lists)
- 自動的な記憶域管理 (automatic storage management)
- 動的な型付け (dynamic typing)
- 第一級関数 (first-class functions)
- 一様な構文 (uniform syntax)
- 対話的環境 (interactive environment)
- 拡張性 (extensibility)
- 歴史 (history)
この8つだったらPythonもRubyも満たしてるかも。PAIP初版が出た1991年は日本ではC Magazineが創刊されて2年ほどたったころだと考えると、当時、リスト処理が組み込まれていたりガーベッジコレクションがあったりする言語はまれだったのかも。*1
一様な構文はLispファミリーの強みで、なんにでも丸括弧を使う言語の特徴か。動的かつ同図象性があることで、実行時にコードをいろいろ変化させたりできる。
あとは歴史。Lispが世に登場したのは50年以上前の1958年だけど、それ以来、基本的な文法は変化せずに機能拡張がされてきた(そしてこんなに多くの方言があるのはLispくらい)。これは変化の激しいコンピュータ業界においては驚くべきこと。あわせてHistory of Lispも読もうっと。そういえば、Lispの生みの親のJohn McCarthyがAlonzo Churchの弟子だったからlambda記法ができた、というのは興味深い。