プログラミング
言語処理系

佐々 政孝 著
岩波書店 発行
1989年10月
602ページ
5040円(税込)
COMMON LISP 第2版
Guy L.Steele Jr.  著
川合 進ほか 訳
井田 昌之 翻訳監修
共立出版 発行
1991年6月
914ページ
8400円(税込)

 私がプログラミング言語を作りたいと初めて思ったのは高校生のころでした(今考えると変な高校生ですが)。そんな私が最初に出会った言語処理系の本が中田 育男先生の「コンパイラ」(産業図書発行)です。今となっては古典とも言える本ですね。正直なところ高校生には難しくてよくわからなかったのを覚えています。このときには,後に中田教授の研究室の学生になるとは夢にも思いませんでした。

 言語処理系の本として優れているのは同じ研究室の恩師である佐々先生の「プログラミング言語処理系」です。おそらく日本における最も網羅的な言語処理系の教科書だと思います。はっきり言うと研究室では落ちこぼれ気味の学生だった私ですが,これらの教科書は大変勉強になりました。

 しかし,これらは教科書ですから,ちょっと難しめです。実際に言語処理系を作る場合には,もうちょっと実践的な本が参考になりました。私がRubyを作るときに参考にした本は「Cコンパイラ設計 yacc/lexの応用」(Alex T. Schreiner,H. George Friedman著,啓学出版発行)と「yacc/lex—プログラムジェネレータ on UNIX」(五月女 健治著,テクノプレス発行)です。Rubyを作るのに使ったコンパイラ生成ツールyaccについて勉強になりました。残念なことに前者は絶版になっています。再版されないかなあ。

 Javaをはじめとする近代的な言語はガーベジ・コレクション(ゴミ集め)と呼ばれる機能を備えています。これによりメモリー管理は飛躍的に容易になりました。もちろんRubyもこの機能を備えています。ガーベジ・コレクションをどうやって実装するかは,コンピュータ・サイエンスにおいて現在最もホットなトピックの一つです。「Garbage Collection」(Richard Jones,Rafael Lins著,John Wiley&Sons発行)は,このガーベジ・コレクションについて,古くは60年代から最近の動向まで網羅しています。ガーベジ・コレクションに興味のある人には必携のテキストです。

 プログラミング言語と同じくらい古くから私をひきつけているのが「オブジェクト指向」という考え方です。オブジェクト指向について紹介している本はたくさんありますが,ここでは一番参考になった本として,Bertrand Meyerの「オブジェクト指向入門」(109ページ)を紹介します。「入門」という名にふさわしくないくらい充実した内容です。というか,原題は「Object-Oriented Software Construction」ですから,全然「入門」じゃありませんね。大人の事情というやつでしょう。この本はEiffelという言語を作ったBertrand Meyer氏によるオブジェクト指向の紹介で,今までのSmalltalkなどをベースにした本とは異なる視点からオブジェクト指向を紹介しています。この本を原書で読んだ学生時代には,すでにSmalltalkなどについての一通りの知識がありましたが,斬新な視点に感動したことを覚えています。Eiffelは決して普及した言語とは言えません。でも,彼の提示した視点は今でも有効だと思っています。

 良いプログラミング言語をデザインするには既存の言語に関する知識が不可欠です。そこで既存の言語について,2冊紹介しておきます。一つはGuy L. Steel Jr.著「COMMON LISP 第2版」で,Common Lispの仕様書です。仕様を書いた人が何を考えていたのかうかがえる貴重な資料です。もう一つは「プログラミングPerl」(Larry Wall,Tom Christiansen,Jon Orwant著,オライリー・ジャパン発行)です。特に巻末の「用語集」は絶品です。この本を読んで,私もいつかユーモアに満ちあふれた本を書きたいと思いました。あまり成功しているとは言えないようですが…。

 プログラミング言語はプログラミングを支援するツールですし,言語処理系そのものも一つのプログラムですから,良いプログラミングについて学ぶことも重要です。プログラミングについて学べる良書のうち,比較的最近のものを紹介しましょう。「達人プログラマー」(Andrew Hunt,David Thomas著,ピアソン・エデュケーション発行)は,プログラミングにあたって必要なルールをたくさん紹介してくれる良書です。良いプログラマを目指す人には,一度は目を通してほしい本です。また,Martin Fowlerによる「リファクタリング」(ピアソン・エデュケーション発行)にも,優れたプログラムを作るための知恵がたくさん含まれています。この2冊はどこに出しても恥ずかしくない本ですが,これらの著者がみな現在Rubyを使っていてくれることを誇りに思っています。