Brainfuck é uma linguagem de programação. Assim como C, Pascal ou Java, ela é genérica, capaz de rodar qualquer programa computável, já que é equivalente a uma máquina de Turing. Entretanto, Brainfuck tem apenas oito símbolos válidos, o que a torna possivelmente a linguagem de programação mais concisa que existe.
A linguagem possui uma única variável: o Ponteiro. Ele pode se deslocar sobre um array que inicialmente é todo zerado. Brainfuck pode mover o Ponteiro para frente ou para trás, incrementar ou decrementar o conteúdo apontado pelo Ponteiro, ler no stdin ou escrever no stdout, e fazer loops. A tabela abaixo mostra a correspondência entre os oito comandos do Brainfuck e a linguagem C.
> p++; < p--; + (*p)++; - (*p)--; . putchar(*p); , *p=getchar(); [ while(*p){ ] } |
Tarefas simples como somar dois números podem ser desafiadoras em Brainfuck, veja abaixo o exemplo, que lê dois caracteres do teclado, e escreve no vídeo a soma deles. Apesar de permitir a construção de qualquer tipo de programa, ninguém disse que isso seria fácil!
,>,<[->+<]>. |
Mesmo o simples "Hello World" fica bastante obscuro:
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+. +++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++ [<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------. [-]>++++++++[<++++>-]<+.[-]++++++++++. |
Para maiores detalhes sobre Brainfuck e outras linguagens esotéricas de programação, visite a Wikipedia, que possui amplo material sobre o assunto.