■2004-04-07
* [今月のAcme] Acme::BrainFuck
ふとCPANでみかけたお馬鹿モジュールAcme::BrainFuck。BrainF**k(今更伏せ字にしてどうする?)というのはプログラミング言語だそうで、覚えるのは大変簡単にみえます。その簡単さたるや、Perlの比ではありません。何しろたった8個しか命令がないのですから。でもこの言語でチューリングマシンをつくれるらしく、つまり現在のコンピュータができることは、理論上は何でもできるということですか。
今、永遠に続く一直線の箱が並んでいまして、その上にポインタが一つ置いてあります。
+ ポインタのある箱の値に1足す - ポインタのある箱の値から1引く > ポインタを一つ前の箱に進める < ポインタを一つ後ろの箱に戻す , 入力されたデータを今いる箱の値に入れる . 今いる箱の値を出力する [ 現在の箱の値が0ならポインタを 対応する]の後ろに移動する ] 対応する[にポインタを戻す
ご覧のように、必要なのは上の8種類だけです。で、実際にやってみます(Acme::BrainFuckにあるサンプル例から)。
+++[>++++++<-]>
この魚の骨みたいのが、3×6の計算で、(最後にポインタが乗っている箱は)18になります。う〜ん、こりゃ大変。いつものようにperldocjpに登録しましたので、perldoc.jpからブラウズできます。