てきとうなメモ

本の感想とか技術メモとか

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

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

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

Brainf*ckのような奇妙なプログラミング言語の紹介と作り方についての本.

既存の言語として

  • HQ9+
  • Brainf*ck
  • Whitespace

を取り上げており,また,以下の言語を新しく作成している.

  • 星空みたいに見える言語 Starry
  • Unicodeの「☹✪」のような記号を用いた言語 Bolic

最後に付録として,BefungeやUnlambdaなど様々なEsoteric Languageを紹介している.

読みやすかったので,2,3時間ぐらいで読み終えた.Rubyで作ると書かれてあるけども,所々にRubyの説明が書かれてあるのでプログラミングの知識があればRubyの知識がなくても読めると思う.プログラミングをまったくやったことがない人は厳しいけれど….

Brainf*ck以外のEsoteric Languageをあまり知らなかったので,他の言語もBrainf*ckのような感じで文字や命令が異なるのかなと思っていたが,各言語ごとに異なる特徴があり,そのためにいろいろ工夫がされていて面白い.例えば,Starryは普通に記号をつなげると星空っぽく見えないので適度にスペースを空ける(ある程度は強制/ある程度はプログラマが調整できる)ような仕様になっている.Befungeはコードを記述する方向を変更できるし,Unlambdaは全てを関数で表現している.

また,付録で紹介されている言語以外の言語は処理系のサンプルをRubyで実装している.実装の方法もインタープリタ方式,コンパイラ方式(というかRubyへのトランスレータ),中間言語方式と様々.Bolic以外はsyntaxがシンプルであるのでparse部分がシンプルだが,Bolicはif/whileなどもあるため,再帰降下型parserを利用していた.これは普通の言語っぽいなあ.他の例がシンプルすぎるのか.

Bolicは仕様が明確でなく参考例として書かれており,拡張がいろいろできそうなので,いじってみると面白そう.記号の使い方も好みがありそうだし.

参考