世の中には、わざと読み書きが難しく作られたプログラミング言語、いわば悪意のプログラミング言語というものが多数存在するそうです。プログラミング業界では、「難解プログラミング言語」はひとつのカテゴリとして確立してるらしいですよ。まったく知りませんでしたが。
Esoteric programming language(Wikipedia)
Esoteric programming language
その多くは、研究目的もしくは冗談半分で作られたそうですが、一応ちゃんとチューリングマシンなものが多いそうな。というわけで、おもしろそうなので、どんなもんがあるのかちょっと調べてみました。とりあえず中でも古典と思われるものだけのリストです。(もちろん私に言語仕様が理解できるはずもなく、それぞれリンクだけです)
INTERCAL
最も有名で古典的な難解言語。「それ自身がプログラミング言語のパロディにもなっており、難解なプログラム言語の典型例として知られている」(Wikipediaより引用)……だそうです。
INTERCAL(Wikipedia 日本語)
The INTERCAL Resources Page(公式サイト)
INTERCAL Resources on the Web
プログラムを勉強する時の基本は、カーニハン&リッチーの時代から、画面上に"hello world"という文字列を出力させるものと決まっているわけですが、INTERCALの場合はこんなプログラムになるそうです。(wikipedia より)
DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #234
DO ,1 SUB #2 <- #112
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #214
PLEASE READ OUT ,1
PLEASE GIVE UP
これは確かに難解だ。
Brainfuck
名前が下品なので、Brainf*ck とか、Brainf*** とかよばれることが多いらしいです。
「開発者Urban Mullerがコンパイラがなるべく小さくなる言語として考案した。実際、Muellerが開発したコンパイラのサイズは123バイト(キロバイトではない!)、インタプリタは98バイトしかない。また、実行可能な命令はわずか8つしかない。実用性はほとんど無い」(Wikipediaより引用)……だそうです。
シンプルであることは美しいことだ、というわけで、一部では評判よかったりするらしいですよ。
Brainfuck(Wikipedia 日本語)
Brainfuck
hello world はこうなります。(hello world(wikipedia)より)
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<
+++++++++++++++.>.+++.------.--------.>+.>.
Ook!
上記Brainfuckの単なる改造版でコンセプト的にはあまりおもしろくないのですが、ソースの見た目がとにかくバカバカしい言語。Brainfuckの8種類の命令を、Ook. Ook? Ook! の3種類の単語のうちの2単語の組み合わせで表現したもの。コンセプトはなんと、オランウータンでも使える言語だそうです。
Ook!
Ook!
Ook!(takaaki.info)
シンプルであることの美しさ(蒼天舞曲)
hello world サンプル
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
……ホント、オランウータン語だな、これ。
Befunge
2次元言語とでもいうのでしょうか? プログラムカウンターが80x25のアスキー文字の2次元空間を前後左右に動き回り、自分自身を書き換えることもできるため、かなりおかしなソースになってしまうそうです。
Befunge(Wikipedia)
Cat's Eye Technologies
Funge-98 Final Specification
hello world はこうなるそうな。(wikipedia より)
> v
v ,,,,,"Hello"<
>48*, v
v,,,,,,"World!"<
>25*,@
Malbolge
これぞ難解な言語の決定版。およそ人知を越えた究極の難解さで、人間がプログラムすることはほとんど不可能なのだそうです。もはや「言語」の域を超越していますな。暗号方面での研究がなされているとかいないとか。
Malbolge(Wikipedia)
Malbolge
Introduction to Malbolge
Malbolge:Programming from Hell(公式サイトのアーカイブ)
hello world プログラムはこうなります。(wikipedia より)
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
……よくわからんが、これはすごい。文字通りの地獄の言語ですな。
その他
他の難解言語の一覧はこのあたり
Language list
Joke language list
世の中には、おかしなプログラミング言語がたくさんあるのね。
最近のコメント