コンパイラってなんかカッコ良さそう
コンパイラってなんかカッコ良さそうだな、というどうでもいいモチベで勉強したいなという気持ちです。何でですかね。やっぱJSエコシステム周辺にいると、TypeScriptやリンターフォーマッターの話題も多いので自然とそういうことに興味が湧いてくるのでしょうか。biomeやoxcなんかにコントリビュートできたらカッコ良さそうですよね。
自分が過去にした近い勉強としては、『コンピュータシステムの理論と実装』を読んだり(第1版で読んだ。そういえば3年前くらいのGWだったかな。)、Crafting Interpretersを読んだり、『型システムのしくみ』を読んだりとか。他にもコンパイラに関する本はたくさん買ってみたけど、まともに読み通せたのはそこらへん。
Crafting Interpretersはやっぱり決定版、という感じがあってtypescriptでtloxを実装したりもした。けど、あんまりバイトコードに興味がわかなくて第II部木の巡回によるインタプリタまでしか読んでない。GCの話題とかもあるらしいので読みたいんだけど、気が向いたらかな。JS界隈では結局、手書きの再帰下降パーサが多いみたいだし、本当に素晴らしい本です。また読み返したい。
GWに向けてやっていたこと
GW時間がありそうなので、それまでにできそうなインプットはしようと思って、会社の行き帰りの電車でUdemyの動画を眺めていた。あと寝る前に『型システムのしくみ』を読み返したりした。
UdemyはDmitry Soshnikovという方の講座がよくて、何本か買ってみた。S式のtoy言語をパースしたり型チェックしたりトランスパイルしたりする。Crafting Interpretersや『型システムのしくみ』あたりをさらっと2時間くらいでやってくれるイメージ。
それ以外で買った講座は、理論を舐めるものが多く、手書きで証明とかする動画もあって、あんまりピンとこずに返金処理した。ちゃんと事前に中身を見た方が良いなと思った。
GW中にやりたいこと
Write a Compiler That Understands Typesを見始めた。Richard FeldmanはZedの人で(そういえば最近v1がリリースされて盛り上がってるな)、Rocという言語も作ってる人らしい。お話がとっても上手で面白い。ElmやRustの講座もあって気になる。Frontend Mastersは初めて課金したけど、書き起こしがちゃんとあるのでGoogle翻訳しながら見れて助かる。講座の終わりの問題も地味に良い。この講座、自分が知りたかったところのど真ん中って感じの内容。大まかには以下のような流れ。サイトで目次も見れるし、コードやスライドはgithubに上がってるので助かる。これ見終わったら課金やめようと思ってたけど、それでも安心かな。
Introduction: コンパイラの歴史
Traversing the AST: 構文木をトラバースして、フォーマットする演習があり楽しい
Bindings & Scope Resolution: 名前解決、名前重複チェックなどの演習がある
Type Inference: 型推論、型のキーバリューストアをつくって推論できるようにするらしい。いまここ
Inferring Types: 型推論、関数とか
Polymorphism & Type Signatures: 多相型、ジェネリクス、型注釈
Generating WASM: WebAssemblyにCode Generateする、これもいい
ちゃんとトークナイザもパーサーもあるし、普通にリポジトリを読んでるだけでも勉強になりそう。今後も楽しみ。
あとちまちまNeetCodeをやってるので、木とか再帰関数とか出てきてなんか楽しい。コンパイラの良さ。
もうひとつは、Simple but Powerful Pratt Parsingを読んで、自分で実装してみたいなという感じ。雑にトークナイザだけ書いたものがあるので、そこに肉付けしていきたい。
時間があったらCS143眺めたり、TAPLを真面目に読み始めたりしたい。acornやbabelのコードを読んでJSの大変さも知りたいし、とか色々やりたいことはあるけど多分時間が足りない。ぼちぼちやっていきたい。
まとめ
やりたい、というお気持ち表明でしかないけど、GWはマジで何の予定もなくて助かる。ゆったりパソカタをして楽しくなっていきたい。業務でコードを書いてなさすぎるので、趣味でちゃんとコードを書いていきたい。
最終更新: 2026年5月3日