あどけない話

Internet technologies

実践 Common Lisp

セルの海 マクロの空」の懇親会で知り合いになったオーム社の方から、約束通り「実践 Common Lisp」を献本して頂きました。お礼も兼ねまして、感想を書いておきます。

お世辞抜きに、僕はこんな Common Lisp の本が欲しかったのです。

実践Common Lisp

実践Common Lisp

看板に偽りなし

Lisp の最も有名な宣伝マンは、ポール・グレアム氏でしょう。

普通のやつらの上を行け」を読んで Lisp に興味を持った人もいるかもしれません。また、「スパムへの対策」で、最初のベンジアンフィルタが Lisp で書かれたことに驚いた人も何人か知っています。

ポール・グレム氏のエッセイ集「ハッカーと画家」は、プログラマーなら読んでおきたい一冊です。一方で、「On Lisp」は、内容は示唆に富んでいますが、決して分りやすいとは言えません。小難しい数学の教科書を読んでいる気分になります。彼は優秀なエッセイストですが、生徒の気持ちが分る先生ではないのでしょう。

ハッカーと画家 コンピュータ時代の創造者たち

ハッカーと画家 コンピュータ時代の創造者たち

On Lisp

On Lisp

「実践 Common Lisp」は、グレアム氏が言わんとしていることを、分りやすく解説しています。UCB で講師をしている経験が活きているのでしょう。また、例題も豊富です。まず、そのものズバリ、ベイジアン・フィルタを実装してみせます。また、バイナリ・ファイルの解析、データベースの構築、HTML の作成と言った例題が、ウェブ・アプリケーションへ収斂して行くさまは見事という他ありません。

この本が、Jolt Award を受賞したのも頷けます。

対象となる読者

この本では、Common Lisp の関数、特殊フォーム、あるいはマクロが丁寧に解説されていますが、Lisp の初心者が読みこなすのは辛いのではないかと思います。

むしろ、昔 Lisp を使ったことがあるが、昔の知識のままで止まっている人とか、最近の Scheme ブームに乗じて Scheme をかじったことがある人などにお勧めです。

そしてなにより、一番お勧めしたい人は、Lisp に対して偏見を持っている人です。偏見は、粉々に砕かれることでしょう。

この本の主題は、いかに Common Lisp で実践的なプログラムを開発するかということです。ですから、「内容がぜんぜん関数型言語っぽくない」と言った苦言は的外れです。そもそも、著者は Common Lisp関数型言語ではないと割り切っています。

再帰など、関数型言語っぽいことを学びたいなら、ぜひ Scheme を勉強して下さい。純粋な関数型言語を学びたいなら、Haskell をどうぞ。

構成

グレアム氏は、他の言語が追随できない Lisp の機能として、マクロを挙げています。この本でも、マクロを中心に話が展開します。

関数と変数を説明したら、基本データ型に行く前に、マクロを説明してしまいます。また、リストよりも配列やハッシュを先に解説します。Lisp の本では、極めて画期的なことです。

訳の品質

全体的に読みやすいのですが、意味不明なところも散見されます。訳者が複数いるので、訳者によって品質にバラツキがあるのかもしれません。

とにかくお勧め

和田先生や訳者が記しているように、今年は Lisp の生誕50周年です。記念すべき年に、良書を得て、Lisp が再評価されることを期待します。

おまけ -- Emacs Lisper の人へ

Emacs Lisp は、Common Lisp に近い Lisp です。ただし、Emacs Lisp はかなり古くさい Lisp でもあります。この本を読むと、高見から Emacs Lisp を眺められるようになるでしょう。