この言語を使う者は一切の希望を捨てよ
Malbolgeとは、難解プログラミング言語の最高峰である。
概要
Malbolgeとは1998年にBen Olmsteadが開発したプログラミング言語である。
この言語の特徴は、人間にとって最も難解なプログラミング言語仕様を作成することを目的に作られたということに尽きる。もちろん実用性はない。そのひどさは、Wikipediaの記述がアンサイクロペディアかと見まごうばかりの文章になっていることからお察し下さい。
後にLou Schefferは、Malbolgeはプログラミング言語というより暗号システムとして見るべきであり、暗号システムとして見た場合のMalbolgeにはいくつかの脆弱性があると指摘した。また、これらの脆弱性を突くことでMalbolgeプログラムを書くことができる…
言語仕様
詳細は後述の関連リンクを参照のこと。
おおまかに書くと、命令用アドレスから値を読み取った後、値とアドレスの和のようなものから剰余をとり、それを変換表で変換した後、実行するといった感じ。
唯一演算らしい演算は3進数の2項演算で、特に法則性のない3×3の表を用いたものである。
言語仕様のひどさに比べればもはや瑣末なことに過ぎないかもしれないが、メモリアドレスの長さが固定されている関係でメモリの容量に制限があるため、チューリング完全ではなく、弱チューリング完全である。
命名の由来
出典はダンテの神曲に出てくる地獄の第8圏であるMalebolge。
言語仕様にこれ以上踏み込みたくないので、Malebolgeがどんなところか紹介してお茶を濁すことにする(しかも引用で)。余談だが、第8圏でなく地獄全体の門には「この門をくぐる者は一切の希望を捨てよ」と記されている。
第八圏 悪意者の地獄 - 悪意を以て罪を犯した者が、それぞれ十の「マーレボルジェ(英語版)」(悪の嚢)に振り分けられる。
- 第一の嚢 女衒 - 婦女を誘拐して売った者が、角ある悪鬼から鞭打たれる。
- 第二の嚢 阿諛者 - 阿諛追従の過ぎた者が、糞尿の海に漬けられる。
- 第三の嚢 沽聖者 - 聖物や聖職を売買し、神聖を金で汚した者(シモニア)が、岩孔に入れられて焔に包まれる。
- 第四の嚢 魔術師 - 卜占や邪法による呪術を行った者が、首を反対向きにねじ曲げられて背中に涙を流す。
- 第五の嚢 汚職者 - 職権を悪用して利益を得た汚吏が、煮えたぎる瀝青に漬けられ、12人の悪鬼であるマレブランケから鉤手で責められる。
- 第六の嚢 偽善者 - 偽善をなした者が、外面だけ美しい金張りの鉛の外套に身を包み、ひたすら歩く。
- 第七の嚢 盗賊 - 盗みを働いた者が、蛇に噛まれて燃え上がり灰となるが、再びもとの姿にかえる。
- 第八の嚢 謀略者 - 権謀術数をもって他者を欺いた者が、わが身を火焔に包まれて苦悶する。
- 第九の嚢 離間者 - 不和・分裂の種を蒔いた者が、体を裂き切られ内臓を露出する。
- 第十の嚢 詐欺師 - 錬金術など様々な偽造や虚偽を行った者が、悪疫にかかって苦しむ。
思うに、この地獄に落ちたところでどれか一つの責苦しか受けないわけだが、Malbolgeでコーディングしようとする者は、その悪意に満ちた言語仕様に二重三重に苦しめられることであろう。
サンプルコード
プログラミング言語のサンプルコードといえば Hello World が定番だが、特筆すべき点が2つある。
一つは言語発表後から2年も経って初めて出現したHello Worldのコードを書いたのは人間ではなく、探索プログラム(コード変換プログラムなどではない)であったということ。
もう一つはニコニコ大百科に記載された最初のMalbolgeのコードはHello Worldではなく、あぁ^~心がぴょんぴょんするんじゃぁ^~であったということである。
関連リンク
- 最凶言語 Malbolge - ロベールの小部屋
- Malbolge - interpreter online
- 難解言語 Malbolge は HelloWorld に「2 年」かかった - Qiita
関連項目
- 1
- 0pt

