LispでAIやらWebサーバ構築やら一通り体験できる本『Land of Lisp』書評

スクリーンショット 2014-09-15 17.42.08

どんな本?

総評するとLand of Lispでは、Common Lispで 対話型コマンドラインのゲームをつくったり Webサーバを立てたり SVGの描画をしたり AIプログラミングをしたり DSLをつくったり 一通り遊べる。かと言って敷居が高いかというとそんなことは無くて Lisp初めてな人でも取っ付きやすいように丁寧な解説がある。ページ数は多いけど、割とサクサク進められる(一部 難しい部分もある。特にAIプログラミングのあたりとかは比較的規模が大きい)。

完了までの期間

3週間程度。平日は帰社後に2時間ほど、毎週土日は3〜4時間ほどでできる分量だった。
結構仕事が忙しい時期で手がつけられない日もあったので、人によってはもう少し早く終わるかもしれない。

学んだこと・感じたこと

1. 「Lispがすごい理由の一つはマクロである」と言われる由縁がわかった。
正直これが一番大きな学びだったと思う。
17章「ドメイン特化言語」で実際にLispコードを別言語に変換する様は本当にすごいと思ったし、将来性を感じた。
( 因みに誤解の無いように述べると「マクロは使うべきではない」という人もいるし、マクロだけがLispの素晴らしさではない )

2. Common Lispの文法がそこそこ身に付いた。
Schemeから来たし、SICPで最低限の文法を身につけた程度なので最初は似たような手続きが多くて苦労した。
とはいえ終わる頃にはCLでの書き方とかそれなりにわかるようになった。

3. 関数プログラミングの「不浄な部分」「聖なる部分」
Common Lispでの関数プログラミングにおいて、副作用を認める「不浄な部分」と関数的に書く「聖なる部分」に分けてプログラムを組んで行くっていう考え方は面白かったし、しっくりきた。

Land of Lispを学ぶ上で知っておくと助けになると感じた部分

・HTML
・AIプログラミング
(アルファベータ法、ミニマックスアルゴリズム、ヒューリスティクス等)
・対話型プログラミング
・SVG
・遅延評価
・末尾最適化
・Lispによる再帰

遅延評価とか末尾最適化とかLispによる再帰とかはSICPで嫌という程出てきたから割とすんなりと落とし込めた。
HTMLとかSVGの最低限の構造を知っておくと、は17章の「ドメイン特化言語」の章で マクロを使ってDSLを表現する際 その威力に感動するだろう。
ちょっと踏み込んだSVGに慣れておくと、19章あたりでSVGを利用したWebインタフェースを組む時にコードの理解が容易になるかもしれない。
対話型プログラミング、AIプログラミング独特の書き方があるので、馴染みがないと苦労するかも。

次にすること

・「Lispを別言語に変換するマクロを作って 業務でお咎め無くLispを好き放題使えるようにしたい」と思うようになったけど、銀の弾丸臭がするので 引き続きマクロに慣れ親しんでいきたい。
・残る積読本は「実践CommonLisp」「On Lisp」。次は「実践CommonLisp」。
・10月に関数型言語全般の比較的大きなイベントがあるみたいなので 圏論とモナドを理解する為にもしかすると先にHaskell本を一冊やるかもしれない。
・↑を片付けたら「Let over Lambda」「実用CommonLisp」のいずれかを購入予定。

Written by Nisei Kimura ( 木村 仁星 )

- Sponsored Links -

<<

Top

>>