読後レビュー|『Go 言語でつくるインタプリタ』

ども、Nash です。

この記事は「 Go 言語でつくるインタプリタの読後レビュー記事 」になります。

それなりに大変でしたが、かなり有意義な本で名著なため知的好奇心を満たしたい人には強くおすすめできるような本です!

では、見ていきましょう。

この本はどんな本?

この本は、Go 言語を使って自作プログラミング言語 Monkey をボトムアップ式にゼロから作成していく本です。

さすがにプロダクションレベルで使えるようなのプログラミング言語を自作することはできません。 ですが、316 ページという小さいボリュームにも関わらずかなり高性能なものを作ることができます。

この本から得られること

こんな感じで一石三鳥な本です。

  • インタプリタがどのようにして動くのかを学べる
  • 実践的な Go の書き方を理解できる
  • 自分でプログラミング言語を作れる

この本はだれが読むべき?

おすすめとなる読書はこんな人です。

  • インタプリタの仕組みを知りたい人
  • 自分でプログラミング言語を作ってみたい人

注意として、この本の題材がタイトルからも分かる通り低級レイヤー・CS に関するトピックです。そのため、一般的な職業プログラマが業務で活用できるような内容とは直結しにくいです。

CS の基礎知識をつけたり、仕組みを理解することはキャリアとしては長期的に効果が出ると思うおすすめではありますが、短期的な見返りは薄いかもしれないのは注意点です。

だれが読んだの

この本を読んだ私について簡単な自己紹介しておきます。

現在は、ソフトウェアエンジニアとして仕事をしています。

大学では情報学科を専攻していましたが、授業にインタプリタなどはなく、またそもそもの話ですが学生時代はかなり不真面目だったので CS の知識がかなり不足しているような人です。今回、時間を取って CS の知識を1つずつ学んでいてその一環としてインタプリタを学びました。

最終的に作り終えたコードはここにあります。

GitHub - snamiki1212/example-interpreter-go

書評

自分が読んだ結果の評論を書いていきます。

知的好奇心を刺激する

なによりも読んでいて作っていて楽しい本でした!

あとづけで、いろいろ書評を書いてますが本を読んで手を動かしてるときの自分の感情としては、この気持が強かったです。

職業プログラマをしていると、キャリアとか仕事の効率とかを考えてしまうため、なかなか知的好奇心ドリブンで作ることが難しいだけに、久しぶりに純粋に楽しんでプログラミングを出来た気がします。

316 ページと小さいが写経すると大変

316 ページと少なめのボリュームですが、写経をするとそれなりに時間がかかるので大変でした。

全体としてどれくらいの時間がかかったがわかりませんが、とはいえ 1 日 1 時間くらいの進捗だと、グランドフィナーレまでに 1〜2 ヶ月くらいを見ておかないといけないかもしれないです。

そのため、短期決戦ではなくて中期的に読書を継続できるような環境づくりが出来るかどうかが、この本を最後まで終わらせられるかの鍵になるかと思います。

TDD で書くので空中分解しにくい

ページ構成として、小さいサイクルで TDD で進めているため、途中で挫折しにくかったです。

エラーが出てしまい期待通りに動かなくても、少なくとも各トピックごとに CI が通っているので変更箇所が限定的です。そのため、調査する範囲も限定的だったので途中で空中分解するようなことはなかったのはありがたかったです。

きちんと理解しながら進めるべきだった

「いまはわからなくても読み進めればわかるだろう」で読まないほうが良かったかもしれないです。

この本の構成として、ボトムアップなので事前に作ったものをどんどん肉付けしていきます。 そのため、前半で実装したものをベースに進めるため、あとから理解するのがどんどん難しくなりました。

どちらかというと、理解せずに進んだ結果そのあとにバグが発生したときにデバッグが大変だったので、これならきちんと1つずつゆっくりでも理解しながら進めたほうが効率が良かったと思いました。

図解があるともう少しわかりやすいかもしれなかった

文章による説明と、コードによる説明がメインであるため、図解による説明がもう少しあるとよかったのになーと思いました。

そのため、結局は自分で図を書いてみて理解しようとしてました。ただ、ロジックレベルだと再帰関数でアルゴリズムが構成されていたりするので図解するのも難しくて、ちょっと大変でした。

おわりに

やや濃厚な技術書ですが、それだけにかなり有意義な本でした。

すべてのソフトウェアエンジニアにおすすめできるようなタイプではありませんが、名著であることには疑いの余地はないため、特に好奇心が強いような人に強くおすすめできるかと思います。

この本から得られること

  • インタプリタがどのようにして動くのかを学べる
  • 実践的な Go の書き方を理解できる
  • 自分でプログラミング言語を作れる

この本はだれが読むべき?

  • インタプリタの仕組みを知りたい人
  • 自分でプログラミング言語を作ってみたい人