ネタ言語のぺぇじ




修士2年の夏、新しいことにチャレンジしようと思い、幾つかのいわゆるネタとされている言語について勉強することにしました。
手始めに言語の仕様について調べ、インタプリタを作成したのでレビューと併せて紹介しようと思います。


HQ9+  Whitespace  BrainCrash





 HQ9+

インタプリタはこちらから。

その名の通りHQ9+の4つによって構成されるプログラム。
Hは画面に"Hello, world!"を出力し、Qは自分自身のコードを出力する。9はアメリカの数え歌とやらを出力し、+は変数をインクリメントする。
プログラムの初学者がまず最初に挑戦する幾つかのプログラムを非常に簡潔に書くことが出来る。
しかし、このプログラム言語はこの4つのこと以外は出来ないため、実用性は皆無に等しい。
むしろある程度プログラムを学んだ人たちがインタプリタを書くための練習としてもってこいなんじゃないかと思ったりする。





 Whitespace

インタプリタはこちらから。

スペース、タブ、そして改行のみによって構成されるプログラム。
情報の機密性に非常に優れており、この言語によって書かれたプログラムは印刷されてもその内容が知られる心配は無い。そう、「どんな相手に対しても」。
改行も構文として扱われるため、誰が書いてもほぼ同じコードになる。その代わり、文法的に脈絡の無いところで改行が行われたりするので可読性は非常に低い(たとえテキストエディタなどを利用しても)。
一応チューリング完全な言語と言うことでC言語などと同等の表現力はあるらしいが、正直書きづらく読みづらい。





 BrainCrash

インタプリタはこちらから。

・実行時にメモリには"Hello, world!"という文字列が格納される
・終了時に、ポインタの指し示す値が0になるまで、メモリの内容を画面に出力する
この2つの仕様によって、世界一短い"Hello, world!"を表示するプログラムを書くことが出来る(要するに、何も書かなければ良い)。
これだけ聞くとネタ言語に過ぎないが、一応チューリング完全であり、4つの機能しか提供しない言語や、同じチューリング完全であっても可読性の極めて低い言語に比べるとはるかにましに感じる。
実際に書いてみるとループが少し面倒だがそれなりにはプログラムが書ける。ただ扱える値の範囲が狭いのが難点か。また、Whitespaceにも言えることだが再帰的なプログラムを書けるようにするともっと書きやすくなると思われる。


もどる