書籍「プログラミング言語を作る」が発売されます(amazonアソシエイトリンク追加)

下記のとおり、書籍「プログラミング言語を作る」が発売されます(宣伝のため、この記事はしばらく一番上に表示します)。

http://kmaebashi.com/programmer/devlang/book/index.html

6/19 22:11 amazonのリンクを追加(関連記事)。

本書のテーマは「オリジナルのプログラミング言語を作る」ことです。
世の中には、現在広く使われているものだけでも、C, C++, Java, C#, Perl, Python, Ruby, PHP, Lisp, JavaScript……等々、すでに多くのプログラミング言語が存在します。これほど多くの言語が乱立している中で、なぜわざわざ新しい言語なんか作らなければならないのか、と思う人も多いことでしょう。
しかし、プログラムに関しては何でもそうだと思いますが、何かを深く知りたかったら、一番いいのはそれを自分で作ってみることです。
プログラミング言語は、プログラマが毎日使う道具です。その道具について深く知ることは、プログラマとしては重要なスキルとなります。
一般に、すでにあるのと似たようなプログラムを新たに作ることは「車輪の再発明」と言われ、この業界では嫌われる傾向にあるようです。本書でしようとしていることは、すでにたくさんあるプログラミング言語をわざわざ作るということですから、まさに車輪の再発明です。しかし、車輪の再発明は、その技術を深く知るためには実は最適な手段でもあります (時間がかかるのが難点ではありますが)。
私に関して言えば、10数年前、Cのサブセットのコンパイラを書いてみたとき、はじめてCがきちんと理解できたように思います(その成果が「C言語 ポインタ完全制覇」です)。
本書にて、サンプルプログラムとして作成する言語 crowbar、Diksamは、それぞれJavaScriptJavaを知るのに参考になるのでは、と思っています (それはつまり基本的にマネして作っているということです)。

サンプル言語crowbar、Diksamは、本書での最終バージョンでは、言語として必要な機能は十分に備えていると思います(あくまで言語として、です。ライブラリは貧弱です)。言語作成に関する本はマイナーな分野とはいえ類書は結構ありますが、本書は、こと「実践的」であるという点においてそれなりに価値があるかな、と思っています。
この手の入門書では ifやforや関数呼び出しあたりで終わってしまう本もありますが、本書では、ガベージコレクションはもちろん、クラスやインタフェースや例外処理やクロージャまで扱っています。いまどきの言語を作ろうという方には参考になるのではないでしょうか。

なお、本書は基本的にWebでずっと公開してきた 「プログラミング言語を作る」の書籍版となります。とはいえ結構な量を書き下ろしていますので、 Web版を読んだ方も買って損はありません。

ともあれ、Rubyまつもとゆきひろさんもしょっちゅうおっしゃっているように、 言語を作るのは楽しいものです。少しでも多くの方にこの楽しさが伝われば、と思っています。