ふつうのコンパイラをつくろう

ふつうに難しい。だけど得られたものは大きい。


構文解析からアセンブル、リンクまでコンパイラが行うすべてを順序立てて解説してくれる。
実際にソースコードがコンパイルされてバイナリになっていく過程を知ることで今までブラックボックス同様だったコンパイラが何をしてるのか知ることができた。やっと高級言語アセンブラがつながったよ。こんにちわアセンブラ。大学1年以来ですね。出会いはあまりいい出会いではなかったけどこうしてまた会えてよかったよ。

小飼弾が言ってたけど、こういう本を読んで「言語を作る」といういかにも難しそうなことが、がんばれば自分にも手が届く範囲にあるということを知って心理的な枷が外れるのが一番の価値。

言語を創るなんてことができたらすげーよ。超すげー。でも、がんばればできちゃう。こう思える価値は大きい。たった1冊でこうも言語を見る目が変わるのか。今まで俺が知らなすぎたのもあるけどさ。構文解析して抽象構文木作って、意味解析して中間表現作って、アセンブルして、メモリ割り当てて、リンクとロードして動くってのを一度に読めてしまうなんて、なんて贅沢なの?最適化の章まで載ってるのだからすごい。もちろん、難しいけど。

こうなったら近々OSの本も読まないと。もしもだけど、OSを創れる自信がついたらなんて想像するだけでムラムラする。


開発が楽しいことは間違いないのだけど、開発の中でもいろいろと層があって、今の俺のいるところはある程度楽しんでしまった気がする。もちろん知り尽くしたなんて言わないけど。でも以前に比べたら、同じ層の中ならどのくらい楽しいかはなんとなくわかってきちゃった。それも良いことなのかも知れないけどさ、それって少し残念さが漂ってる。先が見通せてしまうと面白さ減ってしまうよね、あれと同じ。もっと先が見通せないようなやつが「何が起こるんだろう」って興奮させてくれるんだ。

だから今いるところより下の層か、上の層がやけに面白そうに見えるわけだ。下の層ってのはもっとネイティブな言語とかアセンブラとかハードウェアの境界に近いほう。上の層はアーキテクチャ。アルゴリズムも抽象的だから上のほう。

ネイティブなやつもアーキテクチャもよだれが出るほど面白そうだ。これ全部知ったらどうなっちゃうの。イッちゃうかも?


言語が創れるという自信を得たことに加えて、これからくる楽しさを知らせてくれた。難しいけど、読後の感想を一言で言うならこれ。


なんで今まで読まなかったんだ。

ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み

ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み