Malbolge

Malbolgeとは



Malbolgeは、1998年にBen Olmsteadによって作成された難解プログラミング言語です。この言語の名称は、ダンテの『神曲』の地獄編に登場する第8圏「マーレボルジェ」に由来しています。

言語の特徴



Malbolgeはチューリング完全な言語として知られていますが、実際にはその使い方が非常に困難で、一般的なプログラミング言語としての実用性はありません。設計時から情報の難解さを追求する意図があり、これはINTERCALやBrainfuckといった他の難解言語からの影響を受けた結果とも言われています。実際に、最初に書かれたMalbolgeのプログラムが登場するまでには約2年がかかりました。このプログラムは人間ではなく、LISPで実装されたビーム探索アルゴリズムによって生成されたものです。

プログラム作成の難しさ



Malbolgeでプログラムを書くことは非常に難しく、実用的なコードを書くには専門の技術や時間が求められます。2000年にはAnthony YouhasがブログでMalbolgeに対する新たな解法を示し、特定の語句を出力するプログラムを提示しましたが、使用した手法については詳しく明かされませんでした。その後、Lou SchefferはMalbolgeが暗号システムのような性質を持っていることを指摘し、いくつかの脆弱性があることを明らかにしました。このことにより、入力をそのまま出力するプログラムを書く手法が提案されました。

プログラム例



以下がMalbolgeで作成されたサンプルプログラムです。

Hello World プログラム


```
(=<`:9876Z4321UT.-Q+)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
```

日本語出力プログラム


```
(&BA:""][<;:9876543210/.-,+)('&%$#"Raw<uz:x7YYtFVTj/Am,+jMhgJe$$bamYB]?>=S;QuONrp^JOH10K-g+AecDa`A@#>J}YkWWVTTu3QrN/Ln&lH#F'Ef|edyxa={]:8wvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)('&%$#"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+)(<`^?>=<;:9876543210/.-,+*)
```

言語の実行環境



Malbolgeは三進仮想マシンに基づいており、標準のインタプリタと公式仕様の間にはいくつかの不一致があります。言語には三つの基本的なレジスタがあり、各命令の実行後には特殊な処理が行われます。これにより暗号化が行われ、同じ命令に戻ってきても異なる結果が得られるように設計されています。

結論



Malbolgeはその独特な設計によって不条理なまでに複雑なプログラミング体験を提供します。エキセントリックな設計の背後には、数学的な考察や暗号技術があり、開発者にとって挑戦的で魅力的な課題を提供してくれます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。