こないだ気になると言った難解言語本 (isbn:4839927847) ですが、なんと著者の yhara さんから献本してもらってしまいました。ありがとうございます。昨日届いて、一気に読みました。初めて読む Ruby の本がこれだよ!
以下の 3 部構成でした。
- HQ9+ 、brainfuck 、whitespace の紹介と、Ruby での実装のしかた
- yhara さん自作の難解言語 Starry と Bolic の紹介と、Ruby での実装のしかた
- 他の難解言語 13 個の紹介
「難解言語なんて勉強しても何の役にも立たない」と考えてる人は結構いそうですが、難解言語は実は「プログラムとは何か」や「計算とは何か」という深遠なテーマにつながってます。いや、ほんとに。なので、難解言語を全然知らない人は読むといいです。そして一緒に時間を無駄にしましょう。
あと適宜練習問題もあるので、「Ruby の勉強を始めたので、何かプログラムを書くネタが欲しい」とかいう人にもいいんですかね。たぶん。他の Ruby の本を一冊も読んだことがないので比較できませんが。
ちなみに、こんな役立たずなぼくが献本されちゃったのは
- unlambda のインタプリタを書いたことがあるから *1
- INTERCAL の解説を書いたことがあるから
だそうです。なんでも書いてみるものです (笑)
ところで、Starry は素直にチューリング完全にできないと思うんだけど、気のせい? 「push」「pop」「先頭 1 つの dup」「先頭 2 つの swap」「先頭 3 つの rotate」「先頭 2 つの四則演算+剰余」だけじゃ brainfuck はエンコードできないよね。整数が必ず多倍長だと仮定していいなら、一応できるけど。
*1:でも `cd や `dd が動かないとかいろいろバグを指摘されてしまった。手元では直した (と思う) ので、そのうち別の記事として書きます。