1.10章「Lispは何が違うのか」

人工知能のような複雑なプログラムを作るためにLispを使う理由として少なくとも以下の8つがある、らしい。

  1. 組み込みのリスト処理機能 (built-in support for lists)
  2. 自動的な記憶域管理 (automatic storage management)
  3. 動的な型付け (dynamic typing)
  4. 第一級関数 (first-class functions)
  5. 一様な構文 (uniform syntax)
  6. 対話的環境 (interactive environment)
  7. 拡張性 (extensibility)
  8. 歴史 (history)

この8つだったらPythonRubyも満たしてるかも。PAIP初版が出た1991年は日本ではC Magazineが創刊されて2年ほどたったころだと考えると、当時、リスト処理が組み込まれていたりガーベッジコレクションがあったりする言語はまれだったのかも。*1

一様な構文はLispファミリーの強みで、なんにでも丸括弧を使う言語の特徴か。動的かつ同図象性があることで、実行時にコードをいろいろ変化させたりできる。

あとは歴史。Lispが世に登場したのは50年以上前の1958年だけど、それ以来、基本的な文法は変化せずに機能拡張がされてきた(そしてこんなに多くの方言があるのはLispくらい)。これは変化の激しいコンピュータ業界においては驚くべきこと。あわせてHistory of Lispも読もうっと。そういえば、Lispの生みの親のJohn McCarthyがAlonzo Churchの弟子だったからlambda記法ができた、というのは興味深い。

*1:そのころの僕はEpson PC-286U上で、N88-BASICBorland Turbo-Cを使ってたような気がする。MS-DOSでは普通に使っていると画面には文字しか出せなかったので、BIOSに命令を送るようなグラフィックス・ドライバを自分で書いた記憶が。