Brainfuck

Brainfuck（ブレインファック）はプログラミング言語のひとつ。なお名称に含まれるfuckが卑語であるため、Brainf*ck または Brainf**kなどと表記されることがある。
概要.
開発者Urban Müllerがコンパイラがなるべく小さくなる言語として考案した。
実際、Müllerが開発したコンパイラのサイズはわずか123バイト、インタプリタは98バイトであった。
Brainfuckプログラムは非常に可読性・記述性が低いため実用性は期待できないが、チューリング完全である。その簡潔さから多くの派生言語を生み出すこととなった。
Brainfuckの言語仕様.
処理系は次の要素から成る: Brainfuckプログラム、インストラクションポインタ（プログラム中のある文字を指す）、少なくとも30000個の要素を持つバイトの配列（各要素はゼロで初期化される）、データポインタ（前述の配列のどれかの要素を指す。最も左の要素を指すよう初期化される）、入力と出力の2つのバイトストリーム。
Brainfuckプログラムは、以下の8個の実行可能な命令から成る（他の文字は無視され、読み飛ばされる）。
派生言語.
以上の8つの命令文字は可読性のために選ばれたものであり、これらが使われなければならない理由はなく、より難解にすることを目指したり、あるいは単なる遊びとして、各命令に使用する文字を置き換えた派生言語が考えられている。以下はその代表例である。