Entry

今日読み始めた本 - 『コンパイラ I』

2009年04月01日

言わずもがな名著のドラゴン本なんですけれど,これまでずっと立ち読みしてたので,いい加減買うことにしました。つか,立ち読みで済ませる癖は直した方がいいのかも。

コンパイラ―原理・技法・ツール〈1〉 (Information & Computing)
A. V. エイホ R. セシィ J. D. ウルマン
サイエンス社
売り上げランキング: 109289
おすすめ度の平均: 5.0
5 コンパイラを作る際
5 難しいけど、IT技術者を語るなら、読んでおくべき一冊かも。

以前もちょっと紹介したんですけれど,手っ取り早く説明すると,本書はコンパイラの作り方を説明した本です。今ちょうど Python のソースを読んでいるですけど,ソースコードの中にドラゴン本の参照があったりする。どれくらい有名な本かというと,それくらい有名。

コンパイラというと,C/C++ コンパイラのように,「人間が読めるソースコードを機械語に翻訳する翻訳機」みたいなイメージがあると思います。もちろん,本書全体の目的も,ソースコードを機械語コードに翻訳するプログラムを作ることを直接の目的にしている。

ただ,本書にいわゆるコンパイラは,それよりも,もう少し抽象的な意味でコンパイラの意味を捉えています。つまるところ,「原始プログラムを目的プログラムに翻訳するプログラム」といった具合。要するに,多少語弊があるかもしれないけれど,「あるフォーマットのデータを別のフォーマットに変換するための変換機」みたいな意味です。こゆ捉え方では,例えば,TeX のような機械語の命令を作り出さない変換機についても,本書の対象になります。

もちろん,本書で作るプログラムは構文指向(文法指向)のプログラムなので,規則性や再帰性のないフォーマットは取り扱えないんですけどね。そゆソースは,少なくともコンピュータ上ではほとんどないんだと思う。コンパイラというと,とても低水準な分野を扱う印象があるんですけれど,ここで議論されている考え方は,そゆものだけに当てはまるわけじゃない。と,まあ,そんな感じです。

とはいえ,本書が目的にしているのは,やっぱり計算機に計算させるプログラムを機械語/アセンブリに翻訳する話なので,その筋で読むのが正道です。で,実際のところ,機械語/アセンブリを直接扱うようなプログラムを作るプログラムなるもんを,利用者側に立ってるプログラマが扱うことはまずないので,そゆ意味ではあまり需要はないのかも。ただ,C/C++ コンパイラだけでなく,ちょっと Perl や Python のソースを覗いてみよう,とかいったことをはじめると,ここら辺にある知識はほとんど常識として実装に組み込まれていたりします。んなもんで,そゆことをしたい人にとっては必携。そゆことしない人には,どうでもいい本,とも言える。

個人的には,ちょっとしたパーサを作る時,構文解析よりも字句解析をのところでいつも詰まるので,この箇所はとても役に立っています。これまでもたびたび立ち読みしてたんですけど,王道のやり方を見せてもらう感があって,本書はとても頼もしい。

そういえば,『コンパイラ II』を Amazon でも書店でも見なくなっちゃったんですけど,どうしたんだろう。II だけ希少本になってる?

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN