毎日コミュニケーションより献本御礼。

うれしい。そしてちょっぴり悔しい。

こういう本を、自分で書いてみたかった。

本書「Rubyで作る奇妙なプログラミング言語」は、「奇妙なプログラミング言語」 - Esoteric programming languageを作ってプログラミング言語というものを学ぼう、というより遊ぼうという一冊。

目次 - MYCOM BOOKS - Rubyで作る奇妙なプログラミング言語 〜Esoteric Language〜より
本書の概要とRubyのインストール
1 Esoteric Languageを知る
1-1 Ruby練習問題
1-2 サンプルプログラムに特化した言語、HQ9+
1-3 8つの命令ですべてを記述する言語、Brainf*ck
1-4 決して印刷できない言語、Whitespace
2 Esoteric Languageを作る
2-1 きらめく星空のような言語、Starry
2-2 Unicodeを悪ノリした言語、Bolic
付録 Esoteric Language傑作選
新次元のプログラミング言語、Befunge
文字を一種類しか使わない言語、Wierd
英文学的プログラミング言語、Shakespeare
数値を「調理」する言語、Chef
関数だけでできている言語、Unlambda
ちょっと草植えときますね型言語、Grass
1キロバイトでコンパイラが書ける言語、False
0次元のプログラミング言語、NULL
A, AAA言語、AAAAAAAAAAAAAA!!!!
普通の言語に似て非なる言語、INTERCAL
地獄から来た言語、Malbolge
風にたなびく煙のような言語、KEMURI
データをドライブする言語、Taxi

目次を見ての通り、ここではRubyは道具であり、かつあまりきわどい使い方をしていないので、Perl/PHP/Python といった LL言語 はもとより、C/C++/Java その他、いわゆる「プロダクション言語」を身につけている人であればRubyistならずとも楽しめる。

で、作る対象としてのプログラミング言語であるが、動くもの、すなわちチューリング完全なものを作るのはそれほど難しくない。私自身、本書にも登場する Brainf*ckは

で実装している。裏を返せば、実装の手間はblogのネタ記事一本分程度だということだ。

プログラミング言語を書く方が、そのプログラミング言語で書くよりも簡単な言語としてBrainf*ckはあまりにも有名だが、それに劣らず簡単なものとしてOISCというものもある。本書でとりあげていないのでここで取り上げたが、これを大学の授業で教わったときには感動したものだ。たった一個の命令で万能コンピューターが作れてしまうのだから。

むしろ問題は、いかに「おもろい」プログラミング言語をでっちあげるか、ということで、その点で聞くとStarryもBolicももう少しがんばって欲しかったところではある。

その代わりといってはなんだが、既存の「きてれつ言語」の紹介が実に充実している。現時点ではおそらく日本語による紹介としてはもっとも充実しているだろう。Wikipediaの紹介一つとっても、Brainf*ckとWhitespaceしか紹介していない日本語版と、紹介という点においては本書以上に充実している英語版の差が残念だっただけに実にうれしいニュースだ。

このプログラミング言語の実装というのは、プログラミングの演習問題としても難易度がちょうどいいし、なんといっても楽しい。手慰みにはもってこいだ。

年明けの紹介になってしまったが、大学生なら今から入手しても冬休みの手慰みに充分間に合うだろう。ぜひ遊んでほしい。

Dan the Esoteric Linguist