原悠『Rubyで作る奇妙なプログラミング言語』

曇。
音楽を聴く。■バッハ:ハープシコード協奏曲第四番BWV1055(ピノック、参照)。■バッハ:カンタータ第23番「汝まことの神にしてダビデの子よ」(カール・リヒター参照)。■ベートーヴェン交響曲第三番op.55「英雄」(カール・ベーム)。素晴らしい。感動しました。さすがは巨匠の演奏だ。躊躇なくお勧めできる。それにしても、エロイカ交響曲のカッコいいこと。

Symphonies 3 & 9

Symphonies 3 & 9

シェーンベルク浄夜op.4(バレンボイム、シカゴ響、参照)。澄み切った弦楽合奏が、たとえようもなく美しい。後期ロマン派の臨界点。この曲、本当に好きだ。

原悠『Rubyで作る奇妙なプログラミング言語』読了。第一章の感想はこちらRuby を使って、こんなに簡単にプログラミング言語が作れてしまうことに感動する。第二章はまず、「+」「*」「.」「'」「`」「,」とスペースのみからなる、星空のような見かけの言語「Starry」を実装する。実装は第一章の言語実装を流用しているので、意外に簡単に作れてしまう。本当にこんなで、プログラミング言語なのかと思われるかも知れないが、スタックも分岐命令ももつ、チューリング完全な立派な言語である。すごい。
 そして最後に、Unicode の絵記号だけを使った、しかしかなりしっかりとした言語「Bolic」を実装する。これは気に入ってしまいましたねえ。ちゃんと if 文も while 文もあり、変数までもっている言語である。例えば変数への代入は「✪☜➆」という感じである(笑)。これはあんまり気に入ったので、後でプログラムを手入力してみるつもりです。でも、これも中間言語コンパイルして実行する、なかなか本格的なパーサーをもった言語実装である。この実装そのものも、とても勉強になった。Ruby の入門書レヴェルの文法で、じつにきれいにプログラムが書かれている。それも、最小限の実装から、段々と機能を高めていく拡張性の高さは、僕のような初心者には驚き。なるほど、こんな風にコーディングができれば楽しいだろうなあ。
 それから、「付録」の「Esoteric Language 傑作選」も楽しい。関数型言語の簡単な説明などは、とても勉強になりました。やはり関数型プログラミングは勉強しないといけないね。ああ、楽しい本だった。
Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~

Kindle 本もある。Bolic で FizzBuzz 問題を解いてみました(参照)。いやあ、苦労したが、ちゃんとできるではないか。