kiyokaのブログアーカイブ

Archive of old blog posts

処理系開発者は「言語設計者たちが考えること」を読もう

処理系開発者は絶対読んで後悔しないと思う。とにかくどのページを読んでも楽しく、深い。 言語をデザインしている人なら読んでいるに違いないよね。そんな本。 もちろん、言語マニアでなくてもプログラミング経験者なら誰でも楽しめると思う。 どの言語開発者のインタビューもいいのだが、特にLarry Wallが凄い。Perl 6がここまで高い目標に向かって設計されようとしているのかと感心した。 Perlのデザインに賛同しない人でも読んで驚くと思う。例えば正規表現のリファクタリングの話とかは凄い。誰もそこまでやらんだろう。 正規表現のパターンマッチを拡張するために多くのメタ文字が割りあてられてきたため、ユーザーがどれがメタ文字か覚えられなくなっている問題に対してこう話している。 P.410から引用 Unix文化が初めて正規表現構文を発明したときは、メタ文字はほんの少しだ けだったので、簡単に覚えることができました。パターンマッチにより多く の機能を付け加えていくに従い、メタ文字として使うASCII記号文字の数を増 やしたプログラムもあれば、かつては正規表現と認められていなかった長い 文字列を正規表現に採用して後方互換性を維持しようとしたプログラムもあ りました。これでは無理もありませんが、結果はひどいものでし た。…(略)… 混乱したユーザは正規表現の中ではどんな記号文字であっても バックスラッシュをつけてしまうかもしれません。どの文字が実際にメタ文 字だったか覚えられないからです。Perl 6では、パターンマッチの構文にリ ファクタリングをかけていくにつれて、ASCII記号の大半が何かしらの形です でにメタ文字として使われていることに気がつきました。そこで、我々はア ルファベットでも数字でもないすべての文字をメタ文字として予約し、プロ グラマが暗記するための負担を軽くしました。今後はどの文字がメタ文字な のかを示す一覧がいらなくなるので、構文がはるかにきれいになります。 全ての言語デザイナの一段上のレベルで物を考えている気がする。尊敬に値するなぁ。人類の宝だ。

次に、AWKの3人のインタビューも良い。言語だけでなくプログラミング一般の話もしていて、示唆に富む内容になっている。

まあとにかく、インタビューを一通り読むと、成功した言語は深く考え抜かれていることがわかるし、なぜこうも対極的な言語が生み出されるのかも納得した。みなプログラミングに対する考えかたが違うので違う言語が生まれて当然かなと納得。 自分も[Nendo]という処理系を作っており、自由にデザインできる立場にいるので、もっと高い目標を設定して時間をかけて育てていこうという気になった。 当初の目標だった、immutable宣言による副作用の存在チェックなどは追求してみたい。 詳細は過去記事参照。「2009-09-02Nendo* オレオレ参照透明性というアイデア(immutable宣言)」