ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み
- 作者: 青木峰郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2009/07/24
- メディア: 単行本
- 購入: 25人 クリック: 398回
- この商品を含むブログ (48件) を見る
攻めた構成の目次で話題の(?)ふつぱいらをひととおり流し読み。
この本は、目次でビビッと来た人よりも、むしろ目次を見てもビビッと来ない人向けなんじゃないだろうか。
本書では題名の「コンパイラ」という単語に囚われず、コンパイラを中心としたプログラミング言語の実行環境、すなわちコンパイラ、アセンブラ、リンカ、ハードウェア、そして実行時環境のすべてを扱います。
(まえがきより)
これだけの内容を扱いながらも、この本を読む読者にあらかじめ必要とされる知識はたったこれだけ。
これだけの知識の「ふつうのプログラマ」が「プログラムのおはようからおやすみまで」を学べる本です。解説もだいぶ親切で、その分ページ数が多い印象。ページ数が多くても、お値段がお手頃なのは嬉しいですね。
「ふつうじゃないあとがき」*1に「この本は『ふつうのリンカ』のつもりで書き始めた」なんて書かれているのは伊達じゃなく、既存のコンパイラ本だったら中間コードを吐いた時点で、その実行もCやJavaで書きそうなところですが、ここからが本番とばかりに、x86の概要に入り、アセンブラの解説をし、中間コードからアセンブリオブジェクトに変換。まだまだ終わらんよとばかりに、最適化の解説を軽めに(?)した後、ELFファイルの解説、リンクの概要、ライブラリの作成から、それらが実際に実行される過程を網羅していくステキな内容です。
中間表現への変換で、『副作用を持つ式の変換』にちゃんと手間をかけていたり、アセンブリの際に、アセンブリオブジェクトをわかりやすく生成していくため、JavaでDSLっぽく書けるようにしている辺りは、さすが青木先生ですよねー。
ちょっとでも読んでみたいと思った「ふつうの」プログラマは読んでみるといいと思うよ−。
余談
ググってたら、去年のRubyKaigiの0日目のゴルフ景品に“ふつうのコンパイラ(仮題)』(目録)”が入ってるんだけど、無事に贈られたんだろうかw
*1:RubyKaigiでの先行販売の際に配布されていたもの。どこかで公開されてるんだろうか