酔眼漂流読書日記

本と音楽と酒場と言葉

実用 Common Lisp

骨太の技術書

久々に骨太の技術本が訳出されました。本書「実用 Common Lisp」は原書が 1991 年に出版されたなんと 20 年前の本です。

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp

  • 作者:Norvig, Peter
  • 発売日: 1991/10/15
  • メディア: ペーパーバック

この本を Lisp の本として表層的に眺めるだけなら、確かに 2010 年現在の最新の話題などへの欠落を見出すこともできますが、そうした欠落は全く本書の欠点となっていません。
本書はすべてのソフトウェア技術者が身につけていて決して損にはならない深い基本的教養を与えてくれる本です。

本書は Common Lisp の単なる解説書ではなく、Common Lisp を素材に使ってもっと高いレベルの「問題の抽象化」「設計の進め方」「効率の考え方」「間違いの取り除き方」などを具体的なソースコードを追いながら学習することができる構造になっています。

簡易版の目次を挙げておきましょう

  • 第1部 CommonLisp 入門
    • 第1章 Lisp 入門
    • 第2章 簡単な LIsp プログラム
    • 第3章 Lisp 概要
  • 第2部 初期の AI プログラム
    • 第4章 GPS:一般問題解決機
    • 第5章 ELIZA:機械との対話
    • 第6章 ソフトウェアツールの構築
    • 第7章 STUDENT:代数の文章題を解く
    • 第8章 記号計算:簡易化プログラム
  • 第3部 ツールと技法
    • 第9章 効率性の問題
    • 第10章 低レベルの効率性の問題
    • 第11章 論理プログラミング
    • 第12章 論理プログラムのコンパイル
    • 第13章 オブジェクト指向プログラミング
    • 第14章 知識表現と推論
  • 第4部 高度な AI プログラム
    • 第15章 標準形による記号計算
    • 第16章 エキスパートシステム
    • 第17章 制約充足による線画のラベル付け
    • 第18章 探索とオセロゲーム
    • 第19章 自然言語入門
    • 第20章 ユニフィケーション文法
    • 第21章 英語の文法
  • 第5部 Lisp の続き

古典的で有名な AI システムが題材に挙げられているのが興味深いところです。ここで少し年齢の高い技術者の方だと 「AI (人工知能)?結局役に立たなかったんじゃないの?」というコメントを反射的に出すかもしれません。しかし、それは「人間と同じ知能にはまだ達することができなかった」ということに過ぎず、本書を読めばわかるように現代のソフトウェア構築に活用されて然るべき実り多い技術が沢山埋もれていることがわかります。
例えば 第23章の Lispコンパイルの章は、コンパイラの使い方を説明しているのではなく、コンパイラの作り方を Lisp で書きながら解説するというそれだけでも一冊の本になってしまいそうな濃い内容です。しかし実際に動くコードに基づいて議論が進むので、丁寧に内容を追っていけば一級の活用可能な知識を身につけることができることでしょう。

現代のプログラミングはどうしても「見栄え」に目を奪われがちなところがあるのですが、何よりもしっかりとした「モデル」の構築が関係者の多くの不毛な時間を取り除いてくれること、そしてより高度で実り多い問題解決のステージへと連れていってくれることを教えられることになるでしょう。

本書を最後まで、例題を手で動かしながら読みきったならば、何処へ出しても恥ずかしくないソフトウェア技術者の教養と実力が身についている筈です。

なお本書が適度な厚さで(といっても相当厚いですが)これほど広範囲のトピックを扱うことができたのは、やはり Lisp であることが大きな理由であると思います。言語の構文に関する解説をほとんど行わずに直接抽象的モデル操作の議論に飛び込み、関数を組み上げることによって見通しの良い議論を行なうことができるのは、 Lisp の性質が遺憾なく発揮されているからでしょう。まあその字面の素っ気なさ故に Lisp は嫌われるのですが・・・