いまどきのプログラム言語の作り方
土日はボッシュートで萎々…
久しぶりに本の紹介です。
いまどきのプログラム言語の作り方。
これは良い本です。
処理系を作ったことがないけど、
どんなものか興味がある、作ってみたいという人に最適。
さらに、コンパイラの教科書は読んでみたものの
有限オートマトンとかLALRとか理論ばかりで
コードに落とせないとか、そもそも理論がわけわかとか、
yaccとかキモイツール使いたくないし、
ブラックボックスになってるのも嫌だしとか、
そいういう人にもおすすめ。
つまりは私にとってとても参考になる本でした。
本の通りに打ち込めば動くものができるタイプの本って、
ダーッと数ページにも渡ってコードが続いていて、
最後(または最初)にまとめて何行目は~で、
とか説明するものが多いですよね。
ページを行ったり来たりしなければならないので、あれはわかりにくい。
あと巻末にソースどーんと載せるやつ。アホかと(言いすぎかw
それからCD-ROMつけるやつ。持ちにくいし、ゴミ増やすなと。
この本はそういうんじゃなくて、
小まめにソースを出しては解説の繰り返し、
で前に出てきたものだろうとそのページに必要であれば、
コードは再掲する、という読者のことを考えた読み易い構成になってます。
それで一通り読みながら書けば完成してしまう、というのです。
ま私はそのままコード打ち込んで試してないので、
本当に動くのかはわかりませんけどねw 多分動くと思います。
普通に読んでるだけで動くものが常に頭の中に存在できてるんだなぁ。
読むだけでTDDぽいインクリメンタル開発をやっている気になれます。
一言で言えば、理論より実践。
他のコンパイラ系の本とは一線を画しています。
処理系入門者は林檎本読んでも作れるようにはならないから、
「いまどきのプログラム言語の作り方」を読みましょう。
本の中の処理系はインタープリタで、Javaで書かれています。
Javaの入門書を一冊読んだくらいのレベルの人でも十分わかるのではないかな。
lexやyaccなどのツールは使ってないので字句解析から手書きです。
この辺も手書きを経験しとけば自動生成ツールのありがたみがわかって良いと思います。
Javaのような高級言語のものを見ると思うんですが、
処理系製作って、単にある言語から別の言語への変換を定義することに他ならないんですよね。
基本の基本は簡単な話で、「a」は「エー」、「b」は「ビー」、みたいな対応だと。
もちろん基本から抜ければいろいろと難しい話がたくさん待ってはいます。
もう一つ見所は、プロトタイプベースが出てくるところですかね。
これはユニークでしょう。
そもそもオブジェクト指向を扱っている処理系本って少ないのではないでしょうか。
プロトタイプベース好きとしては嬉しいな。認知度向上に期待。
Soopyの特徴でもあるオブジェクト同士の加算も作ってしまいます。
そう、著者の遊び心が表れているなぁ。
プログラミングの楽しさが伝わってくるような。
著者のrandyさんはSoopyという言語の作者でもあります。
実はこの本出版前に読ませていただきました。
しかもサイン入り本をいただいちゃいました! へへ。
ちなみにSoopyはプロトタイプベース言語で
オブジェクトのリテラル表記をサポートしているんですよ。
ルールの少ない綺麗な言語だと思います。
mieも参考にさせていただいてます。

はじめまして。この本、面白そうですね。
参考にさせて頂きます。
はじめまして。面白いですよ。
ぜひ書店で開いてみてください。