Brainfuck : présentation
Présentation du célèbre langage exotique suivie des règles que je respecte lorsque je code dans ce langage.
Présentation
Créé par Urban Müller en 1993, brainfuck est un des langages exotiques les plus connus. À mon avis, ceci est du à :
- seulement huit commandes différentes
- des commandes simples qui se retiennent facilement
- sa Turing-complétude
La difficulté n’est donc pas dans l’assimilation du langage, mais bien dans la réalisation d’un programme. On peut être tenté d’automatiser cette tâche fastidieuse, mais à mon sens, c’est perdre tout l’intérêt de la programmation en brainfuck.
Comme tout langage populaire, des variantes existent. Elles sont même fort nombreuses, allant des spécificités dus à des interpréteurs aux isomorphismes sur les commandes, en passant par de l’obscurcissement de code. C’est pourquoi je détaille ici les règles que je m’impose lorsque je programme dans ce doux langage.
Règles de programmation
Commandes
Seules les huit commandes de base (<
; >
; +
; -
; .
; ,
; [
;
]
) sont utilisées, tout autre caractère est ignoré.
Mémoire
30 000 cases mémoires sont disponibles. Elles peuvent contenir des entiers allant de 0 à 255 inclus.
Une bonne pratique est d’indiquer le nombre maximum de cases mémoires utilisées pendant l’exécution du programme.
Dépassement de mémoire
Aucun dépassement de mémoire n’est autorisé. Ainsi il est interdit :
- d’utiliser la commande
-
si la case mémoire contient 0 - d’utiliser la commande
+
si la case mémoire contient 255 - d’utiliser la commande
<
sur la première case - d’utiliser la commande
>
sur la dernière case
Retour à la ligne
Le caractère de retour à la ligne est le dixième de la table ASCII, aussi bien en entrée qu’en sortie.
En entrée, le retour à la ligne signifie également la fin des données.
La sortie du programme se terminera toujours par un retour à la ligne.
Écriture du programme
Le programme est écrit entièrement à la main. En tant que tel, il n’est pas forcément optimal en temps d’exécution ou en nombre d’instructions.
Mais coder en brainfuck sans aide extérieure est tellement plus intéressant…
Conclusion
Brainfuck est devenue la référence dans le monde des langages exotiques. Le connaître un minimum est un plus non négligeable, qui permet d’éviter de rester pantois devant une notice d’antoinemoreau ou de devant une proposition notable du logo du L∞p (ci-dessus).
Pour aller plus loin, les ressources en ligne ne manquent pas, que ce soit sur le wiki des langages exotiques ou sur Wikipédia.
Voici un exemple de programme écrit en brainfuck : il utilise dix cases mémoires, et le code source est fait pour être observé en utilisant une police à chasse fixe.
++++++++++[->+>++<< ]>>[->+++>+++++>++++
+ +> ++ + ++
> ++ >+ + ++
+> ++ < <<
<< << ]>
++ ++ +.
>> >+ ++
++ ++ ++
.<---.--.<+.>+++++ ++.>>>>+++
++ .< < <<
-- -- .>
++ .< -.
-- .> >-
-- -- --
- .> -- .<
< << ++ ++
.----.>>-.>.+.<<<<< <.