ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

[book] 2週間でできる!スクリプト言語の作り方

2週間でできる! スクリプト言語の作り方読みました。
癖はありますが、他の処理系作ろう系の本とはちょっと違うトピックが多く、最後まで楽しく読めました。

内容

処理系を作りながら拡張していく様子が、Javaのソースを元に楽しくおかしく書かれています。yacc/lex系のツールは使わずに、自力で字句解析、構文解析をしています。字句解析にはJava正規表現が使って比較的簡単に、構文解析はLL(1)のよく見る形です。字句解析、構文解析は短くなっているので、挫折しないで読むことができます。後半からは、クロージャオブジェクト指向、高速化、型検査などが、浅く広くでてきます。説明のいたる所に、学生との対話が入っていて、これがまた的確な突っ込みがあり、最後まで楽しく読めます。
軽いのりとソースコード付属なので作ってみよう系の本に分類したくなりますが、軸足はコンピュータサイエンスにあるところがこの本の最大の特徴です。最終的にきちっとした処理系ができるわけではなく、話題が発散したまま終わってしまうので、本気で処理系作りたい人には物足りないと思います。

最適化技術に関しても、ループの最適化のような定番の物は書いてありません。富豪的に作ってた処理系をどうダイエットしていくかと、動的言語を実装する時の難しさについて書かれており今風の内容になっています。

想定読者

まず、全体的に広がる軽いのりと学生との会話に乗れない人は別の本を買った方が良いでしょう。最終的にきっちりした物ができあがって欲しい人にもお勧めしません。処理系を実装するのに、筆者の作ったライブラリを使用します。そのため、特定のトピックに関してのみ実装が知りたいという人にも向かないです。本文に関してはつまみ読みができますが、Javaソースの方はそこだけ読んでもなんとなくしか分かりませんでした。

オブジェクト指向の言語を最低一つは使えること、HaskellSchemeプログラミング言語だと知っている人、いきなりdangling-else、パーサコンビネータ、環境、クロージャ、maybe、スタックフレーム、等の用語が出てきても怯まずに自分で調べられるくらいでないと訳が分からないと思います。

逆に言うと、この本を楽しく読める条件はプログラミング言語が好きな事です。プログラミング言語が好きでこの本の軽いのりについていけるなら、最後まで楽しく読めると思います。特にドラゴンブックやタイガーブック構文解析が突破できずにしょぼーんとしている僕のような人には、特に勧めておきます。