Depuis le début de l'informatique, les développeurs travaillent à concevoir des langages de programmation de haut niveau, c’est-à-dire plus proches des langues humaines que du langage machine. Contrairement aux langages de bas niveau, très similaires au langage machine et donc moins accessibles à la compréhension humaine, ces langages de haut niveau visent à simplifier le travail des développeurs. L'objectif est de leur permettre de coder plus rapidement et avec moins d’efforts.
Cependant, il arrive que certains développeurs, cherchant à se divertir entre deux projets, se lancent des défis extravagants à contre-courant des avancées technologiques. C’est ainsi qu’en 1993, inspiré par le langage FALSE (dont l'auteur avait pour ambition de « troubler les gens avec une syntaxe obscure »), Urban Müller décide de créer un langage de programmation minimaliste. Son défi : concevoir un compilateur — un programme qui traduit le code en langage machine — ayant une taille extrêmement réduite. C’est ainsi qu’est né le Brainfuck.
Instruction | Description |
---|---|
< | Incrémente le pointeur de données (se déplace vers la droite dans le tableau). |
> | Décrémente le pointeur de données (se déplace vers la gauche). |
+ | Incrémente la valeur de la case mémoire pointée. |
- | Décrémente la valeur de la case mémoire pointée. |
. | Affiche le caractère correspondant à la valeur ASCII de la case pointée. |
, | Lit un caractère en entrée et stocke sa valeur ASCII dans la case pointée. |
[ | Si la valeur de la case pointée est zéro, saute à l'instruction après le ] correspondant. |
] | Si la valeur de la case pointée n'est pas zéro, retourne à l'instruction après le [ correspondant. |
Brainfuck repose sur un tableau de cellules, généralement initialisées à zéro, et un pointeur qui indique la cellule active. Chaque instruction modifie soit le pointeur, soit la valeur de la cellule pointée. Le langage ne dispose que de huit instructions, ce qui le rend extrêmement minimaliste… mais aussi diaboliquement difficile à lire et à écrire.
Voici un exemple de programme Brainfuck qui affiche le caractère A
:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>+.
Oui, ce long enchaînement de symboles génère bien du texte lisible ! C’est là toute l’essence de Brainfuck : produire quelque chose de compréhensible avec ce qui ressemble à un vrai casse-tête.
Ne nous mentons pas : Brainfuck n’est pas fait pour développer une application web ou un moteur de jeu. C’est un langage de l’extrême, un exercice de style. Mais c’est aussi une excellente porte d’entrée pour parler de langages ésotériques — ces langages créés non pas pour leur utilité, mais pour leur originalité, leur absurdité ou leur beauté conceptuelle.
Brainfuck, malgré son nom provocateur, est un langage fascinant qui pousse les limites de la programmation. Il nous rappelle qu’un langage peut être tout à la fois inutile, difficile… et profondément stimulant. Si vous aimez les énigmes, les défis, ou tout simplement sortir des sentiers battus, ce langage est fait pour vous.