Brainfuckとは、難解であるとされるプログラミング言語の一つである。
名称が良いものではないため、通常はBrainf*ckと書く。
概要
BrainfuckはUrban Müllerが開発したプログラミング言語で、コンパイラが極限に小さくなるように考案された言語で、実用的な言語ではない。実際のコンパイラは1KBもない。
実行可能な命令は8つしか存在しないが、このプログラミング言語は立派なチューリング完全であり、理論的にはC言語で記述可能な命令と同様の表現力を持つことが分かっている。
実行可能な命令
Brainfuckには8つの命令が存在する。これらを組み合わせることで普通のプログラムと同様の事が実行することができる。
- 「>」 … ポインタを一つ進める(インクリメントする)。
- 「<」 … ポインタを一つ戻す(デクリメントする)。
- 「.」 … 現在ポインタが指している値を出力する。
- 「+」 … 現在ポインタが指している値を1増やす(インクリメントする)。
- 「-」 … 現在ポインタが指している値を1減らす(デクリメントする)。
- 「,」 … 1バイトを入力し、現在ポインタが指している値に代入する。
- 「[」 … 現在ポインタが指している値が0であれば対応する「]」にジャンプする。
- 「]」 … 現在ポインタが指している値が0でなければ対応する「[」にジャンプする。
プログラム例
プログラムの基本はやっぱりHello worldを出力するプログラム。
+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+
++.>-.------------.<++++++++.--------.+++.------.--------.>+.
プログラム説明
最初のポインタの位置で値を9回インクリメントする。最初のループで最初のポインタに入っている値をループカウンタとし、2番目のポインタの値を8×9=72、3番目のポインタの値を11×9=99、4番目のポインタの値を5×9=45にする。
2番目のポインタに入っている値は72で、これを文字コードで出力すると"H"になる。
ポインタをインクリメントし、3番目のポインタの値を2回インクリメントして101にして出力すると、"e"になる。
それをさらに7回インクリメントすると"l"になり、2回出力する。さらに3回インクリメントして"o"にする。
ポインタをインクリメントし、4番目のポインタの値を1回デクリメントして44にして出力すると","になる。
それをさらに12回デクリメントすると" (半角スペース)"になる。
以降、ポインタの移動とインクリメント・デクリメントを繰り返して出力すると、最終的には「Hello, world!」と出力(表示)される。
文字コード表に関しては文字コードでググれば見つかるかもしれない。
関連動画
関連項目
子記事
兄弟記事
- なし
- 8
- 0pt



