ブラウザ上でBrainf*ckを実行・デバッグできるサービスを作りました.
デバッグモードをONにして,「1ステップの実行時間」を0より大きい値にするとプログラム実行中のメモリの様子や今どこを実行しているかがリアルタイムでわかります.コード中に@があると,そこでプログラムが一時停止するので,簡易的なブレークポイントとして使えます.「追跡するメモリのサイズ」で先頭から何バイト目までトレースさせるかを調節できます.あまり大きくすると実行が遅くなります.
デバッグモードがONで「1ステップの実行時間」が0だと@に到達するまでの状態は表示されませんが,高速に実行されます.
デバッグモードをOFFにすると@を無視して最後まで実行します.
「入力の形式」はテキストエリアに入力した文字列をそのまま入力として扱うか16進数のデータ列とみなすかを選択できます.16進数を選択するとキーボードからは入力できないデータも入力として与えることができます.
このインタプリタは特に最適化などは施していないのであまり速くありません.とてもたくさんのステップ数のかかるプログラムを入れると固まります.それから,括弧の対応がおかしい場合も無限ループにはまって固まるかもしれません.
これでみなさんも快適にBrainf*ckプログラミングを楽しみましょう!
実用Brainf*ckプログラミング
高校生の頃にBrainf*ckでFibonacci数を計算して表示するプログラムを書いて以来,何度かBrainf*ckのコードを書く機会があった.受験生の頃には,受験勉強をするふりをしてHanoiの塔を解くBrainf*ckのコードを書いた.
京大生になってKMCに入って,いろいろな面白いことをしている人はいたけど,Brainf*ckのコードを書く人は見当たらなかったので,自分の持っているテクニックをまとめてみたら面白いのではと思って,KMC内で「実用Brainf*ckプログラミング入門編」という内容でBrainf*ckの初歩的な内容を発表したら,わりとウケたので入門編だけでなく全編作ることにした.
projectpn - brainf*ckでbrainf*ckインタプリタ
とかはこのために書いたもので,今のところ初級編で扱う予定.
一応Brainf*ckである程度のプログラムが書けるくらいには網羅的に様々なトピックを取り扱いたいと思っているが,一人で書いているので色々と抜け落ちていそう.