Tracks

書いてみたい方はココを参照下さい。

記号プログラミングの第一歩は BrainF*ck B!



記号プログラミングトラックへようこそ! はせがわです。

初回の今日は、記号プログラミングを行えるもっとも有名な言語である BrainF*ck を題材に、記号プログラミングの世界にダイブする準備をしましょう!

まずは BrainF*ck の Hello, world です。

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

簡単ですね。

さて、本当にこれが Hello, world として動くのか確かめたいので、次に BrainF*ck インタプリタを用意することにしましょう。

インタプリタは手軽に書ける言語ということで、JavaScriptで用意します。インタプリタのソースは以下の通り。

$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+""
)[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=
($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.
$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$$$$+$._+"\\"+$.__$+$.$_$+$.$$_+
$.$$__+$.__+"\\"+$.__$+$.$_$+$.__$+$._$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.$__+$.___+$.$_$$+$.$$$$+"(){"+$.__+"\\"+$.__$+$.$_$
+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$.$$__+$._$+$.$$_$+$.$$$_+"=[];"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"
+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$._$+$._+$.__+"\\"+$.__$+$.$$_+$.___+$._+$.__+"=[];"+$.__+"\\"+$.__$+$.$_$+
$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.___
+$._+$.__+"=[];"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$$_+$.___+$.$$__
+"="+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$
.___+"="+$.___+";"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$_$+$._$_+"\\"
+$.__$+$.$$_+$._$$+"=\\\"\\\";"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$.__+"\\"+$
.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"\\"+$.__$+$.$$_+$._$_+"="+$.___+";"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$
+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$_$+$.__$+$.__+"="+$.$$$$
+$._+"\\"+$.__$+$.$_$+$.$$_+$.$$__+$.__+"\\"+$.__$+$.$_$+$.__$+$._$+"\\"+$.__$+$.$_$+$.$$_+"("+$.$_$_+"){"+$.$_$_+"="+$.
$_$_+".\\"+$.__$+$.$$_+$._$_+$.$$$_+"\\"+$.__$+$.$$_+$.___+(![]+"")[$._$_]+$.$_$_+$.$$__+$.$$$_+"(/[^<>\\\\+\\\\-\\\\.\\\\,\\\\[\\\\]]/\\"
+$.__$+$.$__+$.$$$+",\\\"\\\");\\"+$.__$+$.$$_+$.$$$+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+(![]+"")[$._$_]+$.$$$_
+"("+$.__+"\\"+$.__$+$.$$_+$._$_+$._+$.$$$_+"){\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___+$.$$__
+"="+$.$_$_+".\\"+$.__$+$.$$_+$._$_+$.$$$_+"\\"+$.__$+$.$$_+$.___+(![]+"")[$._$_]+$.$_$_+$.$$__+$.$$$_+
"(/(\\\\<\\\\>|\\\\>\\\\<|\\\\+-|-\\\\+)/\\"+$.__$+$.$__+$.$$$+",\\\"\\\");\\"+$.__$+$.$_$+$.__$+$.$$$$+"("+$.$$__+"=="+$
.$_$_+")"+$.$_$$+"\\"+$.__$+$.$$_+$._$_+$.$$$_+$.$_$_+"\\"+$.__$+$.$_$+$._$$+";"+$.$_$_+"="+$.$$__+"}\\"+$.__$+$.$$_+$.$$_
+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___+$.$_$$+"=/(\\\\<+|\\\\>+|(\\\\[-\\\\])?\\\\++|\\\\-+|\\\\[[\\\\<\\\\>\\\\+\\\\-]+\\\\]|[\\\\.\\\\,\\\\[\\\\]])/\\"
+$.__$+$.$__+$.$$$+";"+$.$_$_+"="+$.$_$_+".\\"+$.__$+$.$$_+$._$_+$.$$$_+"\\"+$.__$+$.$$_+$.___+(![]+"")[$._$_]+$.$_$_+$.
$$__+$.$$$_+"("+$.$_$$+","+$.$$$$+$._+"\\"+$.__$+$.$_$+$.$$_+$.$$__+$.__+"\\"+$.__$+$.$_$+$.__$+$._$+"\\"+$.__$+$.$_$+$.
$$_+"("+$.$_$_+"){\\"+$.__$+$.$_$+$.__$+$.$$$$+"("+$.$_$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.
$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+">"+$.__$+"&&"+$.$_$_+"."+$.$$__+"\\"+$.__$+$.$_$+$.___+$.$_$_+"\\"+$.__$+$.$$_+$.
_$_+"\\"+$.__$+$.___+$.__$+$.__+"("+$.$_$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+
"\\"+$.__$+$.$_$+$.___+"-"+$.__$+")==\\\"]\\\"){\\"+$.__$+$.$_$+$.__$+$.$$$$+"("+$.$_$_+"==\\\"[-]\\\")\\"+$.__$+$.$$_+$.
_$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\\""+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$.
_$$+"\\"+$.__$+$.$$_+$.___+"]\\"+$.$__+$.___+"=\\"+$.$__+$.___+$.___+";\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$$_+(![]+"")[
$._$_]+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\"+$.$__+$.___+"\\"+$.__$+$.$_$+$.__$+$.$$$$+"(("+$.$_$_+".\\"+$.__$+$.$_$+$.$_$+$
.$_$_+$.__+$.$$__+"\\"+$.__$+$.$_$+$.___+"(/^\\\\[-(\\\\<+)\\\\+(\\\\>+)\\\\]$/)||"+$.$_$_+".\\"+$.__$+$.$_$+$.$_$+$.$_$_
+$.__+$.$$__+"\\"+$.__$+$.$_$+$.___+"(/^\\\\[(\\\\<+)\\\\+(\\\\>+)-\\\\]$/)||"+$.$_$_+".\\"+$.__$+$.$_$+$.$_$+$.$_$_+$.__
+$.$$__+"\\"+$.__$+$.$_$+$.___+"(/^\\\\[-(\\\\>+)\\\\+(\\\\<+)\\\\]$/)||"+$.$_$_+".\\"+$.__$+$.$_$+$.$_$+$.$_$_+$.__+$.
$$__+"\\"+$.__$+$.$_$+$.___+"(/^\\\\[(\\\\>+)\\\\+(\\\\<+)-\\\\]$/))&&\\"+$.__$+$._$_+$._$_+$.$$$_+"\\"+$.__$+$.$__+$.$$$
+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$.__$+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.
$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"==\\"+$.__$+$._$_+$._$_+$.$$$_+"\\"+$.__$+$.$__+$.$$$+"\\"+
$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$._$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.
$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+")\\"+$.__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"
+$.__$+$.$_$+$.$$_+"\\\""+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"\\\"+(\\"+$.__$+$._$_+$._$_+
$.$$$_+"\\"+$.__$+$.$__+$.$$$+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$.__$+"."+$.$$__+
"\\"+$.__$+$.$_$+$.___+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.___+$.__$+$.__+"("+$.___+")==\\\"<\\\"?\\\"-\\\":\\\"+\\\"
)+\\"+$.__$+$._$_+$._$_+$.$$$_+"\\"+$.__$+$.$__+$.$$$+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___
+".$"+$.__$+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"+\\\"]\\"
+$.$__+$.___+"+=\\"+$.$__+$.___+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"];\\\\\\"+$.__$
+$.$_$+$.$$_+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"]\\"+$.$__+$.___+"=\\"+$.$__+$.___
+$.___+";\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$$_+(![]+"")[$._$_]+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\"+$.$__+$.___+"\\"
+$.__$+$.$_$+$.__$+$.$$$$+"(("+$.$_$_+".\\"+$.__$+$.$_$+$.$_$+$.$_$_+$.__+$.$$__+"\\"+$.__$+$.$_$+$.___+
"(/^\\\\[-(\\\\<+)\\\\+(\\\\<+)\\\\+(\\\\>+)\\\\]$/)||"+$.$_$_+".\\"+$.__$+$.$_$+$.$_$+$.$_$_+$.__+$.$$__+"\\"+$.__$+$.$_$
+$.___+"(/^\\\\[(\\\\<+)\\\\+(\\\\<+)\\\\+(\\\\>+)-\\\\]$/)||"+$.$_$_+".\\"+$.__$+$.$_$+$.$_$+$.$_$_+$.__+$.$$__+"\\"+$.
__$+$.$_$+$.___+"(/^\\\\[-(\\\\>+)\\\\+(\\\\>+)\\\\+(\\\\<+)\\\\]$/)||"+$.$_$_+".\\"+$.__$+$.$_$+$.$_$+$.$_$_+$.__+$.$$__
+"\\"+$.__$+$.$_$+$.___+"(/^\\\\[(\\\\>+)\\\\+(\\\\>+)\\\\+(\\\\<+)-\\\\]$/))&&\\"+$.__$+$._$_+$._$_+$.$$$_+"\\"+$.__$+$.
$__+$.$$$+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$.__$+"."+(![]+"")[$._$_]+$.$$$_+"\\"
+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"+\\"+$.__$+$._$_+$._$_+$.$$$_+"\\"+$.__$+$.$__+$.
$$$+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$._$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$
+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"==\\"+$.__$+$._$_+$._$_+$.$$$_+"\\"+$.__$+$.$__+$.$$$+"\\"
+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$._$$+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+
"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"){\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___
+$.$$__+"=\\"+$.__$+$._$_+$._$_+$.$$$_+"\\"+$.__$+$.$__+$.$$$+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.
$$_+$.___+".$"+$.__$+"."+$.$$__+"\\"+$.__$+$.$_$+$.___+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.___+$.__$+$.__+"("+$.
___+")==\\\"<\\\"?\\\"-\\\":\\\"+\\\";\\"+$.__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_
+"\\\""+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"\\\"+"+$.$$__+"+\\"+$.__$+$._$_+$.
_$_+$.$$$_+"\\"+$.__$+$.$__+$.$$$+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$.__$+"."+(![]
+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"+\\\"]\\"+$.$__+$.___+"=\\"
+$.$__+$.___+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"\\\"+"+$.$$__+"+(\\"+$.__$+$._$_+
$._$_+$.$$$_+"\\"+$.__$+$.$__+$.$$$+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$.__$+"."+
(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"+\\"+$.__$+$._$_+$._$_
+$.$$$_+"\\"+$.__$+$.$__+$.$$$+"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$$$+$.___+"\\"+$.__$+$.$$_+$.___+".$"+$._$_+"."+(![]+
"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+")+\\\"]\\"+$.$__+$.___+"=\\"
+$.$__+$.___+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"];\\\\\\"+$.__$+$.$_$+$.$$_+$.$$_$
+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"]\\"+$.$__+$.___+"=\\"+$.$__+$.___+$.___+";\\\\\\"+$.
__$+$.$_$+$.$$_+"\\\"}\\"+$.__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.$__+$.___+$.$_$_+".
\\"+$.__$+$.$$_+$._$$+$._+$.$_$$+"\\"+$.__$+$.$$_+$._$$+$.__+"\\"+$.__$+$.$$_+$._$_+"("+$.___+","+$.$_$_+"."+(![]+"")[$.
_$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"-"+$.__$+").\\"+$.__$+$.$$_+$._$_+
$.$$$_+"\\"+$.__$+$.$$_+$.___+(![]+"")[$._$_]+$.$_$_+$.$$__+$.$$$_+"("+$.$_$$+","+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$
+$.$__+$.$$$+$._+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+$.__+"\\"+$.__$+$.$$_+$._$$+"."+$.$$__+$.$_$_+(![]+
"")[$._$_]+(![]+"")[$._$_]+$.$$$_+$.$$$_+")+\\\"}\\\\\\"+$.__$+$.$_$+$.$$_+"\\\"}\\"+$.__$+$.$$_+$._$$
+"\\"+$.__$+$.$$_+$.$$$+"\\"+$.__$+$.$_$+$.__$+$.__+$.$$__+"\\"+$.__$+$.$_$+$.___+"("+$.$_$_+"."+$.$$__+"\\"+$.__$+$.$_$+
$.___+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.___+$.__$+$.__+"("+$.$_$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.
$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"-"+$.__$+")){"+$.$$__+$.$_$_+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\\">\\\":\\"
+$.__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\\"\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.
$$_+$.___+"+=\\\"+"+$.$_$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"
+$.__$+$.$_$+$.___+"+\\\";\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$__+$.$_$_+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\\"<\\\":\\"+$.
__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\\"\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_
+$.___+"-=\\\"+"+$.$_$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.
___+"+\\\";\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$__+$.$_$_+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\\"+\\\":\\"+$.__$+$.$$_+$._$_
+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.$__+$.___+$.$_$_+"."+$.$$__+"\\"+$.__$+$.$_$+$
.___+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.___+$.__$+$.__+"("+$.___+")==\\\"[\\\"?\\\""+$.$$_$+$.$_$_+$.__+$.$_$_+
"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"]\\"+$.$__+$.___+"=\\"+$.$__+$.___+"\\\"+("+$.$_$_+"."+(![]+"")[$._$_]+$.
$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"-"+$._$$+")+\\\";\\\\\\"+$.__$+$.$_$+$.$$_
+"\\\":\\\""+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"]\\"+$.$__+$.___+"+=\\"+$.$__+$.___
+"\\\"+"+$.$_$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+
"+\\\";\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$__+$.$_$_+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\\"-\\\":\\"+$.__$+$.$$_+$._$_+$.
$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\\""+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"
+$.__$+$.$$_+$.___+"]\\"+$.$__+$.___+"-=\\"+$.$__+$.___+"\\\"+"+$.$_$_+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+
"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+"+\\\";\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$__+$.$_$_+"\\"+$.__$+$.
$$_+$._$$+$.$$$_+"\\\".\\\":\\"+$.__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\\""+
$._$+$._+$.__+"\\"+$.__$+$.$$_+$.___+$._+$.__+".\\"+$.__$+$.$$_+$.___+$._+"\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$_$+$.___+
"("+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"]);\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$__
+$.$_$_+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\\",\\\":\\"+$.__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+
$.$_$+$.$$_+"\\\""+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"]=\\"+$.__$+$.$_$+$.__$+"\\"
+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.___+$._+$.__+".\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.
__$+$.$$$$+$.__+"();\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$__+$.$_$_+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\\"[\\\":\\"+$.__$+$.
$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\\"\\"+$.__$+$.$$_+$.$$$+"\\"+$.__$+$.$_$+$.___
+"\\"+$.__$+$.$_$+$.__$+(![]+"")[$._$_]+$.$$$_+"("+$.$$_$+$.$_$_+$.__+$.$_$_+"[\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.
___+"]){\\\\\\"+$.__$+$.$_$+$.$$_+"\\\";"+$.$$__+$.$_$_+"\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\\"]\\\":\\"+$.__$+$.$$_+$._$_+$.
$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.$$_+"\\\"}\\\\\\"+$.__$+$.$_$+$.$$_+"\\\"}});"+$.$_$_+"=\\\""+
$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$.$$__+$._$+$.$$_$+$.$$$_+"\\"+$.$__+$.___+
"=\\"+$.$__+$.___+$.$$$$+$._+"\\"+$.__$+$.$_$+$.$$_+$.$$__+$.__+"\\"+$.__$+$.$_$+$.__$+$._$+"\\"+$.__$+$.$_$+$.$$_+"(\\"+
$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.___+$._+$.__+"){\\\\\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.
$$_+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___+$.$$_$+$.$_$_+$.__+$.$_$_+"\\"+$.$__+$.___+"=\\"+$.$__+$.___+"[];\\\\\\"
+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___+$._$+$._+$.__+"\\"+$.__$+$
.$$_+$.___+$._+$.__+"\\"+$.$__+$.___+"=\\"+$.$__+$.___+"[];\\\\\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$
.__$+$.$$_+$._$_+"\\"+$.$__+$.___+"\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.___+"\\"+$.$__+$.___+"=\\"+$.$__+$.___+$.___+
";\\\\\\"+$.__$+$.$_$+$.$$_+$.$$$$+$._$+"\\"+$.__$+$.$$_+$._$_+"(\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"
+$.$__+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.$__+$.___+"=\\"+$.$__+$.___+$.___+";\\"+$.$__+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"
+$.$__+$.___+"<\\"+$.$__+$.___+$.$$_+$.$_$+$.$_$+$._$$+$.$$_+";\\"+$.$__+$.___+"\\"+$.__$+$.$_$+$.__$+"++)\\"+$.$__
+$.___+$.$$_$+$.$_$_+$.__+$.$_$_+".\\"+$.__$+$.$$_+$.___+$._+"\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$_$+$.___+"("+$.___+");\\\\\\"
+$.__$+$.$_$+$.$$_+"\\\"+"+$.$_$_+"+\\\"\\"+$.__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.
$$_+"\\"+$.$__+$.___+$._$+$._+$.__+"\\"+$.__$+$.$$_+$.___+$._+$.__+";\\\\\\"+$.__$+$.$_$+$.$$_+"}\\\\\\"+$.__$+$.$_$+$.$$_
+"\\\";"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$_$+$._$_+"\\"+$.__$+$.
$$_+$._$$+"="+$.$_$_+";"+$.__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$$$+$.__$+"{"+$.$$$_+"\\"+$.__$+$.$$_+$.$$_+$.
$_$_+(![]+"")[$._$_]+"("+$.$_$_+")}"+$.$$__+$.$_$_+$.__+$.$$__+"\\"+$.__$+$.$_$+$.___+"("+$.$$_$+"){"+$.$_$_+(![]+"")[$.
_$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"("+$.$$_$+")}"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.
$$_+$._$$+".\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.___+$._+$.__+"=[]};"+$.__+"\\"+$.__$+$.$_$+$.
___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$$_+$._$$+$.__+$.$$_$+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$
.$_$+$.$$_+"="+$.$$$$+$._+"\\"+$.__$+$.$_$+$.$$_+$.$$__+$.__+"\\"+$.__$+$.$_$+$.__$+$._$+"\\"+$.__$+$.$_$+$.$$_+"("+$.
$_$$+"){"+$.$$$$+$._$+"\\"+$.__$+$.$$_+$._$_+"(\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___+$.$_$_
+"="+$.___+";"+$.$_$_+"<"+$.$_$$+"."+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$
+$.$_$+$.___+";"+$.$_$_+"++)"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$_$
+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.___+$._+$.__+".\\"+$.__$+$.$$_+$.___+$._+"\\"+$.__$+$.$$_+$._$$+"\\"+$.
__$+$.$_$+$.___+"("+$.$_$$+"."+$.$$__+"\\"+$.__$+$.$_$+$.___+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.___+$._$$+$.
_$+$.$$_$+$.$$$_+"\\"+$.__$+$.___+$.__$+$.__+"("+$.$_$_+"))};"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.
__$+$.$$_+$._$$+".\\"+$.__$+$.$$_+$._$$+$.__+$.$$_$+$._$+$._+$.__+"="+$.$$$$+$._+"\\"+$.__$+$.$_$+$.$$_+$.$$__+$.__+"\\"+
$.__$+$.$_$+$.__$+$._$+"\\"+$.__$+$.$_$+$.$$_+"(){"+$.$$$$+$._$+"\\"+$.__$+$.$$_+$._$_+"(\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"
+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___+$.$_$$+"=\\\"\\\","+$.$_$_+"="+$.___+";"+$.$_$_+"<"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+
$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$._$+$._+$.__+"\\"+$.__$+$.$$_+$.___+$._+$.__+"."+(![]+"")[$._$_]+$.$$$_
+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+$.__+"\\"+$.__$+$.$_$+$.___+";"+$.$_$_+"++)"+$.$_$$+"+=\\"+$.__$+$._$_+$.
_$$+$.__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+"."+$.$$$$+"\\"+$.__$
+$.$$_+$._$_+$._$+"\\"+$.__$+$.$_$+$.$_$+"\\"+$.__$+$.___+$._$$+"\\"+$.__$+$.$_$+$.___+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"
+$.__$+$.___+$._$$+$._$+$.$$_$+$.$$$_+"("+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$
._$+$._+$.__+"\\"+$.__$+$.$$_+$.___+$._+$.__+"["+$.$_$_+"]);\\"+$.__$+$.$$_+$._$_+$.$$$_+$.__+$._+"\\"+$.__$+$.$$_+$.
_$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.$__+$.___+$.$_$$+"};"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.
$$_+$._$$+".\\"+$.__$+$.$$_+$._$_+$._+"\\"+$.__$+$.$_$+$.$$_+"="+$.$$$$+$._+"\\"+$.__$+$.$_$+$.$$_+$.$$__+$.__+"\\"+$.__$
+$.$_$+$.__$+$._$+"\\"+$.__$+$.$_$+$.$$_+"(){\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___+$.$_$_+
"=(\\"+$.__$+$.$_$+$.$$_+$.$$$_+"\\"+$.__$+$.$$_+$.$$$+"\\"+$.$__+$.___+"\\"+$.__$+$.___+$.$__+$.$_$_+$.__+$.$$$_+").\\"+
$.__$+$.$__+$.$$$+$.$$$_+$.__+"\\"+$.__$+$._$_+$.$__+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"();"+$.__+
"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$._$+$._+$.__+"\\"+$.__$+$.$$_+$.___+$._+$.__+"="
+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$.$$__+$._$+$.$$_$+$.$$$_+"("+$.__+"\\"+$.
__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+".\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$
.$$_+$.___+$._+$.__+");"+$.__+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$$+"."+$.__+"\\"+$.__$+$.
$_$+$.__$+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"\\"+$.__$+$.$$_+$._$_+"=((\\"+$.__$+$.$_$+$.$$_+$.$$$_+"\\"+$.__$+$.$$_+$.
$$$+"\\"+$.$__+$.___+"\\"+$.__$+$.___+$.$__+$.$_$_+$.__+$.$$$_+").\\"+$.__$+$.$__+$.$$$+$.$$$_+$.__+"\\"+$.__$+$._$_+$.$__
+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"()-"+$.$_$_+")/"+$.__$+$.$$$_+$._$$+"}}\\"+$.__$+$.$$_+$.$$_+$.$_$_
+"\\"+$.__$+$.$$_+$._$_+"\\"+$.$__+$.___+"\\"+$.__$+$.$$_+$._$$+"=\\"+$.__$+$.$$_+$.___+"\\"+$.__$+$.$$_+$._$_+$._$+"\\"+
$.__$+$.$_$+$.$_$+"\\"+$.__$+$.$$_+$.___+$.__+"(\\\"\\"+$.__$+$.___+$.$_$+"\\"+$.__$+$.$_$+$.$$_+$.__+$.$$$_+"\\"+$.__$+$
.$$_+$._$_+"\\"+$.$__+$.___+"\\"+$.__$+$.___+$._$_+"\\"+$.__$+$.$$_+$._$_+$.$_$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+
$.$_$+$.$$_+"\\"+$.__$+$.___+$.$$_+"*"+$.$$__+"\\"+$.__$+$.$_$+$._$$+"\\"+$.$__+$.___+$.$$__+$._$+$.$$_$+$.$$$_+"\\\",\\\"\\\");\\"
+$.__$+$.$_$+$.__$+$.$$$$+"(\\"+$.__$+$.$$_+$._$$+"){"+$.$_$$+"=\\"+$.__$+$.$_$+$.$$_+$.$$$_+"\\"+$.__$+$.$$_+$.$$$+"\\"+
$.$__+$.___+$.$_$$+$.$$$$+";"+$.$_$$+".\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$_$+$.__$+$.__+"(\\"+$.
__$+$.$$_+$._$$+");"+$.$_$$+".\\"+$.__$+$.$$_+$._$_+$._+"\\"+$.__$+$.$_$+$.$$_+"();"+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$
.__$+$.$$_+$._$_+$.__+"("+$.$_$$+".\\"+$.__$+$.$$_+$._$$+$.__+$.$$_$+$._$+$._+$.__+"())}\\"+$.__$+$._$_+"\"")())();

もちろんインタープリタも記号だけで書かれています。

これをJavaScriptとして実行すると prompt が表示されますので、さきほどの BrainF*ck の Hello, world プログラムを入力します。

すると、alert で Hello, world がきちんと表示され、無事 BrainF*ck の動きを確かめることができました。

…というだけではさっぱり意味がわからないので、少しだけ解説すると、JavaScript による BrainF*ck インタプリタは、id:kazuho さんが以前書かれていたものを拝借しました。

この BrainF*ck インタプリタを Microsoft Ajax Minifier でコードを小さくし、jjencode で記号化したものが上に示した記号だけの BrainF*ck インタプリタのコードとなります。

というわけで、初日は記号プログラミング入門ということで、駆け足で BrainF*ck の動きを確かめてみました。

なぜこのような JavaScript が動くのかについては、回を追って説明したいと思いますので明日以降もお楽しみに!