プログラミング言語「Ikura」を作ってみた。

はーい! ちゃーん! ばぶう! (挨拶)


……先日、研究室で、

イクラちゃんの言葉でプログラミング言語作ったらどうなる?」

という話になりまして、Webで検索しても(言及してる人はいたけど)具体的に定義されたものはないみたいで、ならいっそ作っちゃえってことで作っちゃいました。

詳細は以下。



まず、イクラちゃんは喋る単語が極端に少ない。
よく耳にするのは次の3個でしょうか。

  • はーい
  • ちゃーん
  • ばぶう

というわけで、この3語だけを使って言語を組み立てることにする。

ところで、こういう場合は、Brainf*ckという言語の単語を置き換えて新しく定義する、というオーソドックスな方法(?)があるので、ここでもBrainf*ck互換の言語を組み立てることにします。

まずBrainf*ckについてですが、これは以下の文字「だけ」を使って記述する言語です。

Brainf*ck 意味
> ポインタをインクリメント
ポインタをデクリメント
+ メモリの値をインクリメント
- メモリをデクリメント
, 1バイト読み込んでメモリに格納
. メモリの値を出力
[ メモリの値が0なら対応する]にジャンプ
] メモリの値が非0なら対応する[にジャンプ

※ただし、メモリ=ポインタが挿している1バイトのデータ

たとえばHello Worldはこう書ける。

++++++++[>++++++++>++++++++++++>+++++>++++<<<<-]
>++++++++.>+++++.+++++++..+++.>++++.>.<<<+++++++++++++++.>.+++.------.--------.>>+..>++++++++++.

(他にもパターンはあります)

まあプログラミング言語というより、(すごくレベルの低い)機械語ですね。

このBrainf*ckの記号を、イクラちゃんの言葉で置き換えてゆきます。
ただし、イクラちゃんは上記の3語しか喋れない(笑)ので、2個の単語を組み合わせて1語とします。

こんな感じ。

Ikura Brainf*ck 意味
はーい ちゃーん > ポインタをインクリメント
ちゃーん はーい ポインタをデクリメント
はーい はーい + メモリの値をインクリメント
ばぶう ばぶう - メモリをデクリメント
はーい ばぶう , 1バイト読み込んでメモリに格納
ばぶう はーい . メモリの値を出力
ばぶう ちゃーん [ メモリの値が0なら対応する]にジャンプ
ちゃーん ばぶう ] メモリの値が非0なら対応する[にジャンプ

これ以外の文字列は全部空白扱いとします。

これで晴れてプログラミング言語「Ikura」が完成しました!(笑)
さて、さっきのHello Worldを翻訳してみよう。

するとこうなる。

はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい ばぶう ちゃーん 
はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい 
はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい 
はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい 
はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい 
ちゃーん はーい ちゃーん はーい ちゃーん はーい ちゃーん はーい ばぶう ばぶう ちゃーん ばぶう
はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい ばぶう はーい 
はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい ばぶう はーい 
はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい ばぶう はーい ばぶう はーい 
はーい はーい はーい はーい はーい はーい ばぶう はーい 
はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい ばぶう はーい 
はーい ちゃーん ばぶう はーい 
ちゃーん はーい ちゃーん はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい ばぶう はーい 
はーい ちゃーん ばぶう はーい 
はーい はーい はーい はーい はーい はーい ばぶう はーい 
ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう はーい 
ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう ばぶう はーい 
はーい ちゃーん はーい ちゃーん はーい はーい ばぶう はーい ばぶう はーい 
はーい ちゃーん はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい はーい ばぶう はーい 

う……うぜえw


ちなみに分かる人は分かったと思うんですが、このIkuraはBrainF*ckの派生語のひとつであるOok!(オランウータン向けの言語)を基に、単語を置き換えただけだったりします。

対応表は以下。

Ikura Ook! Brainf*ck
はーい ちゃーん Ook. Ook? >
ちゃーん はーい Ook? Ook.
はーい はーい Ook. Ook. +
ばぶう ばぶう Ook! Ook! -
はーい ばぶう Ook. Ook! ,
ばぶう はーい Ook! Ook. .
ばぶう ちゃーん Ook! Ook? [
ちゃーん ばぶう Ook? Ook! ]

Ook!だけではなく、Brainf*ck互換の言語ならば、どれでもすぐIkuraのソースに変換することができます。

ところで、イクラちゃんで検索予測を見ると「言語障害」とか出てくるんですが、
実はそうでなく、あれは独自の言語系で喋っているのです。
(しかもチューリング完全である)
我々の理解の及ばない超頭脳なんですよ彼は(笑)。

さあ、みなさんも素敵なイクラちゃんライフを始めてみませんか。





(アニメの台詞を解釈実行したら何が現れるのだろう)