概要
KEMURIとは2006年9月の情報学会若手の会の夜の議論が元になって生まれた難解プログラミング言語である。ちなみに同じ夜に難解プログラミング言語Grassも生まれたらしい
。
任意の文字列を生成・表示できるが、チューリング不完全な言語である。
言語仕様
- ^: スタックの先頭2つをpopし、ビットごとのxorを計算してpushする。
- ~: スタックの先頭をpopし、ビットごとのnotを計算してpushする。
- ": スタックの先頭をpopし、それを2回pushする。スタック先頭の複製(duplicate)である。
- ': スタックの先頭3つをpopし、先頭要素を末尾に並び替えてpushする。x y zという順番なら、y z xに変わる(rotate)。
- `: スタックにASCIIコードで"Hello, world!"を積む。
- |: スタックの中身を文字コードだと見なして出力する。スタックは空になる。プログラムの最後で一度だけ使うことが推奨されている。
^ ~ " ' のスタック操作だけでも十分難解であることがお分かりいただけただろうか。
さらに一見するだけでは気づきにくい仕様の特色としては、上記命令でスタックに積むことが出来る値は ` の"Hello, world!"だけという点。つまり、任意の文字列をスタックに残したければ、"Hello, world!"を他の操作により目的の文字列の文字コードに変換していかなければならないという意地悪さがある。
サンプルコード
Hello Worldは下記2文字で実装できる。当初はHQ9+に次ぐ短さでHello Worldでき、かつチューリング完全になる可能性
を宿した言語(HQ9+もチューリング不完全)ということだったようである。
`|
残念ながら、2008年にHello Worldを0文字で実現できるチューリング完全なBrainCrashが登場したことにより、3番手になった上、最短でHello Worldが実行できるチューリング完全な言語になるという望みも断たれてしまった。
名前の由来
最後に使用する|を除き、使用可能な命令が全て上付き文字になっているため、ソースコードが煙突または線香から立ちのぼる煙に見えることから名付けられた。
KEMURI_PLUS
l(Lの小文字)が命令として追加される。その処理内容は「スタックの内容がBrainF*ckのコードとして実行される」。
これによりこの言語はチューリング完全になるということらしいが、計算ロジックを担うのはBrainF*ckインタープリターの部分であり、KEMURIの処理系は計算を行っておらず、これでは思考停止ではないか。まあ、もしかしたら、「BrainF*ckで分岐や繰り返しを実行するコード」を生成するライブラリが作れるのかもしれないが。
関連リンク
2020年現在、主要なリンクはリンク切れになっている。下記はまだ現存するリンク。
- KEMURI - おびなたん☆

- KEMURIで任意の文字列を表示するプログラムを生成するプログラム

- 第39回 情報科学若手の会 開催報告

- KEMURIはもう終り?

- 西尾泰和
: 言語考案者のページ。KEMURIのコードが集まっていた時期もあったらしいが、現在はKEMURIの文字さえ無い。
関連項目
- 0
- 0pt

