É uma linguagem de programação esotérica, minimalista, não tipada e simples por sua especificação, consistindo apenas de 8 comandos, mas difícil de programar, é chamada de Turing tarpit. Ela funciona de forma semelhante a uma máquina de Turing pura. É bela por sua simplicidade, é fácil escrever seu próprio interpretador ou compilador, o objetivo do autor do Brainfuck era fazer uma linguagem para a qual o menor compilador pudesse ser feito. Existem interpretadores e compiladores Brainfuck auto-hospedados, o que é bem fodido. O menor deles é provavelmente o chamado dbfi, que tem apenas um pouco mais de 400 caracteres. O wiki Esolang afirma que é um dos menores autointerpretadores entre as linguagens imperativas. Brainfuck quines também existem, mas não é fácil fazê-los -- um exemplo encontrado na web tinha um pouco mais de 2100 caracteres. A linguagem é baseada em uma linguagem P´´ de 1964 que foi publicada em um artigo matemático; é muito semelhante ao Brainfuck, exceto por não ter I/O. O Brainfuck em si foi feito em 1993 por Urban Muller, ele escreveu um compilador para ele para Amiga, que ele eventualmente conseguiu obter abaixo de 200 bytes.
Desde então, o Brainfuck tem visto um tremendo sucesso na comunidade esolang como a linguagem de menor denominador comum, assim como os matemáticos usam máquinas de Turing em provas, os programadores esolang usam o Brainfuck de maneiras semelhantes, muitos esolangs apenas compilam para o Brainfuck ou usam o Brainfuck em provas de completude de Turing. Isso se deve ao Brainfuck ser uma linguagem real, implementada e funcional com I/O e trabalhando em computadores reais, não apenas em algum modelo matemático abstrato. Se alguém quiser codificar um programa como um número inteiro, podemos simplesmente pegar a representação binária da implementação Brainfuck do programa. Brainfuck também tem muitos derivados e modificações, o wiki esolang atualmente lista mais de 600 dessas linguagens, como o Brainfork, Brainfuck com multithreading, Boolfuck, tem apenas células binárias, Brainfuck++ , adiciona recursos como rede, Pi, codifica o programa Brainfuck em erro contra dígitos pi, unário, codifica o Brainfuck com um único símbolo. Em programas SMR, o brainfuck pode ser usado seriamente como uma linguagem de script super simples.
TODO