Brainfuck
Brainfuck is een esoterische programmeertaal die rond 1993 door Urban Müller is gemaakt. De taal wordt soms brainf*ck, brainf***, of BF genoemd als men beleefd wil zijn.

Overzicht
Müllers doel was om een turing-volledige programmeertaal te maken die met de kleinst mogelijke compiler zou kunnen worden geïmplementeerd. De taal bestaat uit acht statements. De tweede versie van de originele compiler, geschreven voor de Amiga, is slechts 240 bytes groot. Urban werd geïnspireerd door de programmeertaal False, waarvan de compiler 1024 bytes groot was.

Zoals de naam al suggereert, zijn brainfuck-programma's over het algemeen moeilijk te begrijpen. Daar staat tegenover dat elke turingmachine, en daardoor ook brainfuck, elke rekentaak kan volbrengen. Als we de moeilijkheden om bepaalde taken te programmeren buiten beschouwing laten, is dat inderdaad mogelijk.

De taal is gebaseerd op een zeer eenvoudige virtuele machine die buiten het programma bestaat uit een rij van bytes die op nul zijn gezet, een pointer naar een element van de rij (de startwaarde van de pointer is de eerste byte) en twee rijen bytes die de invoer en uitvoer vormen.
Brainfuck-code kan eenvoudig als C-code herschreven worden (zie tabel).
De acht statements, die elk bestaan uit een enkel karakter, zijn de volgende:

 "ptr" is een variabele van het type unsigned char*, die kan bijvoorbeeld zo geïnitialiseerd worden voor een array met 100 karakters:
char* ptr = malloc(100*sizeof(char));
Karakters die niet tot de taal behoren, dienen genegeerd te worden door de compiler. In sommige brainfuck-afgeleiden wordt de taal nog uitgebreid met extra tekens: het #-teken om debug-informatie te bekijken, of een ander speciaal teken om het einde van de code aan te duiden. Het is gebruikelijk om Brainfuck-varianten een andere naam te geven, zoals bij de bestaande varianten BrainFork of Extended Brainfuck Type I.

Hello world
De code om met Brainfuck "Hello World" te genereren is de volgende:

 ++++++++++
[>+++++++>++++++++++>+++>+<<<<-] De initialiserende loop om de array te maken
>++. Print 'H'
>+. Print 'e'
+++++++. Print 'l'
. Print 'l'
+++. Print 'o'
>++. Print ' '
<<+++++++++++++++. Print 'W'
>. Print 'o'
+++. Print 'r'
------. Print 'l'
--------. Print 'd'
>+. Print '!'
>. Print newline

Voor de leesbaarheid is dit programma over meerdere regels gespreid, en zijn er commentaren voorzien. Dit kan, op voorwaarde dat het commentaar geen taaltekens (, . < > [ ] + -) bevat, want de compiler negeert alle vreemde tekens. Bijgevolg is volgende code equivalent:
  ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

Zie ook 
 Lijst van programmeertalen

Externe links 
 Brainfuck Developer - Brainfuck interpreter with integrated debugger (IDE) for Windows
 Online Brainfuck Interpreter
 EBF-compiler op Google Code
 Brainfuck naar COBOL en C compiler

Esoterische programmeertaal