「Go言語でつくるインタプリタ」をご恵贈いたきました

翻訳者である @darashi から「Go言語でつくるインタプリタ」をいただきました。ありがとうございます。

これを読む前の自分の知識レベルは

という状況でしたが、Go言語のシンプルな言語仕様のおかげもあり、無事写経を完走できました。

本書の全体の流れは、「まずテストを書き、そのテストが通るように実装する」というテスト駆動開発で進んでいきます。テストコードの時点で期待する動作がわかるので、「今からこれが動くようになるのか」というのがイメージしやすく、飽きることなく最後まで楽しめるように工夫されていると感じました。また、REPLを比較的早いで段階で使えるようにしているというのも良いと思ったポイントです。自分が入力した文字列が実行されるというのは、テストがグリーンになるのとはまた違った感動がありますね。

しっかりとしたプロセスで進むにもかかわらず、字句解析・構文解析からスタートして、最後には配列やハッシュ、高階関数まで実装されたインタプリタが、なんとわずか230ページで完成できるのは本当にすごい(マクロまでいれると280ページ)。当然、完成したときはとても嬉しいのですが、各章でも「おおっ」と思うポイントはあって

  • REPLでインタラクティブに字句解析の結果が出力されたとき
  • 中置演算子を構文解析するテクニックを図で理解できたとき
  • 配列はハッシュの添え字アクセスを中置演算子として扱ってうまく動いたとき

あたりが私のテンションがあがったところでした。

読み終えた今、本書の帯にある 「つくる」は「わかる」 という言葉を実感しています。今までぼんやりしたイメージだった「プログラミング言語を作る」ということが、以前よりも格段に「わかる」状態になったように思います。

本書の内容がすぐに役に立つ人というのがどれだけいるのかはわかりませんが、プログラマにとっての一番身近な道具であるプログラミング言語とインタプリタについて理解するのに最適な1冊だと思います。オススメです。