Lisp in Small Piecesを読んだ
読み終わったのは3週間くらい前だけど、ゴールデンウィークで普段よりは時間があるので、読んだ感想など書いてみる。
- 作者: Christian Queinnec,Kathleen Callaway
- 出版社/メーカー: Cambridge University Press
- 発売日: 2003/12/04
- メディア: ペーパーバック
- 購入: 2人 クリック: 61回
- この商品を含むブログ (4件) を見る
Lisp in Small Pieces (LiSP) は、Lisp のインタプリタ/コンパイラの実装について説明した本で、500ページ11章で12種類のインタプリタと2種類のコンパイラを紹介している。目次は以下のとおり。
- The Basics of Interpretation
- Lisp, 1, 2, ... ω
- Escape & Return: Continuations
- Assignment and Side Effects
- Denotational Semantics
- Fast Interpretation
- Compilation
- Evaluation & Reflection
- Macros: Their Use & Abuse
- Compiling into C
- Essence of an Object System
特徴的だと個人的に思っているのは、9章でマクロの実装について触れている点で、これとCへのコンパイラについての章(10章)があることがこの本を買おうと思った直接の理由だった。
しかし、実際に読んでみると、どの章も興味深く、おもしろい内容だった。
特に、6章 Fast Interpretation で、5章で登場する denotational interpreter (表示的意味論を Scheme に直訳して得られるインタプリタ?)に対して高速化のための改善をしていくうちに、あれよあれよという間にバイトコードへのコンパイラまであと一歩というところまで行ってしまう、その過程を見ているのがなかなかおもしろかった。SICPでは、このあたりは天下り的に与えられていたりして、腑に落ちない部分が多かったけど、LiSP のおかげでだいぶ解決されたような気がする。
ただ、5章 Denotational Semantics はわりと本気で表示的意味論について説明しているので、ちょっと敷居が高いかもしれない。また、お値段もお高めなので買うのは結構渋ってしまうかもしれない。
しかし、読み終えた頃にはきっと「自分でコンパイラが作れそうだ」と実感できるくらいにはなっていると思う。だから、たとえば「SICPを最後まで読んでみたはいいけど、最後の演習問題を解ける気がしない」っていう人なんかは読んでみる価値があると思う。