No.11 ・ 文学・世界観系
Malbolge
= 設計者自身も書けなかった言語
- 読みにくさ
- ●●●●●
- 書きにくさ
- ●●●●●
- 誕生年
- 1998年
- 作者
- Ben Olmstead
- 生まれた国
- アメリカ
- 学べること
- 意図的に読み書きを困難にする設計も可能だということ
どんな言語か
人間には書けないように意図的に設計された言語です。難しくすることではなく、書けないようにすることそのものが目標でした。
仕掛けは複数あります。命令は実行されるたびに自分自身を書き換えます。数値の扱い方も一般的な言語とは異なり、同じ命令でも書かれている位置によって意味が変わります。
いずれも「先の動作を予測できないようにする」ために組み込まれた仕掛けです。
この言語で最初に完成したプログラムは、人が考案したものではありません。総当たりで探索するプログラムが偶然発見したものです。
コード例(全文)
Hello World!
(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc
※ Andrew Cooke 氏による短い版で、Rosetta Code の「Hello world/Text」(https://rosettacode.org/wiki/Hello_world/Text)の Malbolge 節に掲載されています。このサイトの実行部品で動かすと「Hello World!」と出力されます。
その場で実行する
このページの中だけで動きます。入力したコードはサーバーへ送られません。
上のコード例をそのまま実行します。
ボタンを押すと、ここに出力が出ます。
Malbolge は命令が書かれた位置で意味が変わり、実行のたびに自分自身を書き換えます。人が新しく書くのは事実上できないため、ここでは上のコード例を動かして確かめる使い方が中心です。入力は使えません。
ボタンを押すと、ここに出力が出ます。
試しに: 初期値のコードを1文字だけ書き換えて実行してみてください。ほとんどの場合、エラーになるか、まったく別の出力になります。
ひとこと
作者自身がプログラムを1つも書けないまま公開した言語です。最初の「Hello World!」が完成したのは2年後で、発見したのは人間ではなく、探索を続けるプログラムでした。名前は『神曲』に登場する地獄の名称に由来します。
もっとくわしく(外部サイト): https://esolangs.org/wiki/Malbolge