Le brainfuck est un langage de programmation de la catégorie des Turing tarpits (Fourre-tout de Turing). Ce type de langage permet d'implémenter en théorie n'importe quel algorithme (on dit alors qu'il est Turing-complet, en référence à Alan Turing, mathématicien britannique et créateur en quelque sorte de l'informatique moderne) en utilisant un nombre très limité d'opérateurs et peu voire pas d'opérandes.
Brainfuck fonctionne d'une manière plutôt basique. Une tête de lecture, une sorte de curseur, se positionne selon les ordres de l'utilisateur, incrémente et décrémente des valeurs. Elle dispose d'une fonction d'entrée, qui permet de définir une valeur manuellement à l'un des emplacements de la bande, et d'une fonction de sortie qui permet de renvoyer sur une sortie le contenu de la case sur laquelle elle se trouve.
Brainfuck utilise 8 opérateurs, qui sont :
,<,>[->+<]>. : ce programme additionne deux nombres et affiche le résultat.
Brainfuck est avant tout un jeu intellectuel : implémenter un petit algorithme relève parfois du tour de force. Mais l'intêret principal pour moi, c'est d'écrire un compilateur ou un interpréteur qui fonctionne pour ce langage. Ca apporte beaucoup de plaisir une fois que ça fonctionne. J'ai une ébauche d'interpréteur Brainfuck que vous trouverez sur cette page