最初に悩んだこと

Cordwainer2007-09-11

Lispを使用して将棋ソフトを製作しようと思い立った後で最初に悩んだ事はどんなLispでコーディングを始めるかと言う事でした。
具体的にはCommon Lispで行くかSchemeで行くかの選択です。
最初はSchemeの事など全く頭に無かったと言うか、名前を聞いた事がある程度だったのですが、Schemeの静的スコープ、末尾最適化の保証、「継続」等の機能、仕様が小さく最小主義的Lispである事、即ち純粋な関数型言語に性格が近くアメリカの大学ではプログラミング教育に利用されている事などを知り学んでみたくなりました。

そのため「計算機プログラムの構造と解釈 第二版」(有名なSICPの和訳本)や「Schemeによる記号処理入門」(森北出版)なんて本を買ってみたのですが、結局あっさり方針転換してCommon Lispを使用する事にしました。

理由はやはりCommon Lispの方が仕様が巨大な分、柔軟で何でも出来そうだったからです。手続き型言語のアナロジー(類推)で言えばPascal言語とC言語の違いと言った感じでしょうか。

後、中村正三郎さんのブログ
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp
絶賛されていたと言う事も大きな要因です。
ゲーム木の探索の類のサンプルはSchemeの本よりもCommon Lispの本により多く載っているような気がします。

また、そのしばらく前にたまたま買っていたOn Lisp-Advanced Techniques for Common LispCommon Lispの強力な拡張性に強いインパクトを感じたと言う事もあります。まだ、ほとんど読んでませんけどw。
On Lispの日本語訳は翻訳者の野田 開さんがWeb上にも無償で公開していますね。
On Lisp
日本語訳の書籍を買ってからその存在に気が付いたのですが、やはり本の形の方が格段に読みやすいです。一方、原書を買って良く意味が分からないところだけ参照するにはWeb上の翻訳は大いに役立つと思います。