とっても面白い難解プログラミングの世界

こんにちは、木崎です。
いきなりですが「難解プログラミング言語」ってしまってますか?
その名の通りとても難解なプログラミング言語の事なのですが、これ本当に意味がないんです。
利便性のかけらもなく、ただただ難解なんですがユーモアに溢れており面白いので見てほしいんです。


(※表現の都合上画像で申し訳ない)




その名は「whitespace」
さっきのテキストを専用のインタプリタに通すと
「Hello world」
と表示されるよ(らしい・・・)


SpaceをS、TabをT、LFを改行で表現すると(可視化)こうなる。
S-S-STSSTSSS // “H”(01001000)2=72をスタックに入れる
T // スタックに入れた値を文字として出力
S-S-SSSTTSSTST // “e”(0001100101)2=101をスタックに入れる
T // 上記と同じ
S-S-SSSTTSTTSS // “l”(0001101100)2=108をスタックに入れる
T
S-S-SSSTTSTTSS
T
S-S-SSSTTSTTTT // “o”(0001101111)2=111をスタックに入れる
T
S-S-SSSTSTTSS // “,” 以下説明省略
T
S-S-SSSTSSSSS // ” ”
T
S-S-SSSTTTSTTT // “w”
T
S-S-SSSTTSTTTT // “o”
T
S-S-SSSTTTSSTS // “r”
T
S-S-SSSTTSTTSS // “l”
T
S-S-SSSTTSSTSS // “d”
T
S-S-SSSTSSSST // “!”
T
S-S-SSSTSTS // “改行”
T
S-S- // “終了”


このように面白い難解プログラミング言語がいくつかあったので紹介するよ
コミュ障プログラミング言語
さっきと同じように、hello worldと記述させるにはこう入力します
ア…ア…ア…ア…ア…ア…ア…ア…ア…サセン…アア…ア…ア…ア…ア…ア…ア…ア…ア…
アア…ア…ア…ア…ア…ア…ア…ア…ア…ア…ア…ア…アア…ア…ア…ア…ア…ア…アア、アア、
アア、ア、ッス…アア…エット…アア…ア…ア…エット…ア…ア…ア…ア…ア…ア…ア…エット…エット…
ア…ア…ア…エット…アア…ア、エット…ア、ア、ア、ア、ア、ア、ア、ア、ア、ア、ア、ア、エット…アア、ア…ア…
ア…ア…ア…ア…ア…ア…エット…ア、ア、ア、ア、ア、ア、ア、ア、エット…ア…ア…ア…エット…ア、ア、
ア、ア、ア、ア、エット…ア、ア、ア、ア、ア、ア、ア、ア、エット…アア…ア…エット…
いやいや本当に意味不明、おふざけ以外の何物でもない言語ですね。
大好きです
言語使用はこんな感じらしいです。
命令 | BF/BC | 説明 |
---|---|---|
アア… | > | ポインタを1つ進める。 |
アア、 | < | ポインタを1つ戻す。 |
ア… | + | ポインタが指す値を1増やす。 |
ア、 | – | ポインタが指す値を1減らす。 |
エット… | . | ポインタが指す値を文字コードとして1文字出力する。
※SJIS対応。出力しようとする文字がマルチバイトの
1バイト目に該当する場合、次のポインタの値を 2バイト目としてマルチバイト文字を出力する。 |
エット、 | , | 1バイトを入力し、ポインタが指す位置に代入する。 |
サセン… | [ | ポインタが指す値が0の場合、対応するッス…にジャンプする。 |
ッス… | ] | ポインタが指す値が0ではない場合、対応するサセン…にジャンプする。 |
アッ… | | | ポインタが指す値と、その次のポインタの値をOR演算し、 さらに次のポインタの位置に代入する。またポインタは1つ進められる。 |
アッ、 | & | ポインタが指す値と、その次のポインタの値をAND演算し、 さらに次のポインタの位置に代入する。またポインタは1つ進められる。 |
アノ… | ~ | ポインタが指す値をNOT演算する。 |
アノ、 | ^ | ポインタが指す値と、その次のポインタの値をXOR演算し、 さらに次のポインタの位置に代入する。またポインタは1つ進められる。 |
アー… | * | ポインタが指す値を1ビット左シフトする。
※拡張命令
|
アー、 | / | ポインタが指す値を1ビット右シフトする。
※拡張命令
|
エ… | { | ポインタを、ポインタが指す値だけ進める。
※拡張命令
|
エ、 | } | ポインタを、ポインタが指す値だけ戻す。
※拡張命令
|
エッ… | ! | ポインタが指す値をゼロにする。
※拡張命令
|
エッ? | ? | ポインタを先頭に戻す。
※拡張命令
|
本当笑っちゃいますね


Piet
これはとても有名で少しは意味がありそうな?ものです
これが「hello world」です

色を組み合わせて、命令をする為、できあがったものが絵のようになるのが特徴です。
この規則に従って「モナリザ」を読み解くと・・・とかあったら面白そうですね


最終的には計算性を網羅して機械語に翻訳できればプログラミング言語ですからね。
他にも、プログラムを書くとシェイクスピアの小説の様になる言語とかもありますがまたいつかの機会に


System.out.println(“Hello, world!”)
です。
