jiko21の切り抜き

jiko21の日常とかを書きます

自称フロントエンドエンジニアのしがないブログ

Go言語でつくるインタプリタを読んだ

タイトル通り、O'Reilly Japanから出ているGo言語でつくるインタプリタを読み切りました。

www.oreilly.co.jp

どんな本なの?

タイトル通り

 

と書いてしまえば終わりなのですが、もうちょっと詳しく説明すると

Go言語を使って本に出てくるMonkey言語のインタプリタを実装してみよう!

という内容です。

  1. 本の流れとしては
  2. とりあえず、Monkey言語のコードをトークンに変換してみよう
  3. トークンをASTにしてみよう
  4. ASTを評価してプログラムとして動くようにしよう
  5. 組み込み関数とかデータ型を追加しよう

という、プログラミング言語インタプリタが実際に処理を行う順で書かれています。

なぜ読もうとした?

今は都内でエンジニアとして働いていますが、実はコンピュータサイエンスをしっかり学んできていない、というコンプレックスがあったからです。

というのも、

  • 学部: 情報学科数理工学コース (数学ばっかやるところ)
  • 大学院: 情報学研究科(やっていたことはHPC)

という経歴で、学部時代にコンピュータサイエンスをしっかり学んでいません。。。

一応、情報学をやったことになっているのですが、インタプリタがどう動いている、とか正直勉強していないのでCS出身者としては結構そこにコンプレックスがあります。

読み終えての感想

本に出ているのはMonkey言語は、

  • 数値型、文字列型、配列、ハッシュ等のデータをサポート
  • 第一級関数をサポート
  • 組み込み関数もある

と、最低限の機能(第一級関数が最低限かは怪しいが)を有する言語です。

それを実際にコードからトークンに、そしてASTにして評価するところまでを実装しました。(付録でマクロとかありますがまだできてない)

実際に勉強したことのない身としては、どのようにインタプリタが解釈して、それを評価するか、までがステップを踏みながら経験でき、なおかつ、各項目の内容に関しても実際に手を動かすので、理解を助けてくれました。

これ読んだからエンジニアとして収入が増える、というものではないですが、CSに対してコンプレックスがあったりする方には、おすすめです。