Rogdham

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 à :

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 :

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

+[+-] leloop.org

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.

++++++++++[->+>++<< ]>>[->+++>+++++>++++ + +> ++ + ++ > ++ >+ + ++ +> ++ < << << << ]> ++ ++ +. >> >+ ++ ++ ++ ++ .<---.--.<+.>+++++ ++.>>>>+++ ++ .< < << -- -- .> ++ .< -. -- .> >- -- -- -- - .> -- .< < << ++ ++ .----.>>-.>.+.<<<<< <.

Cet article est sous licence CC BY-SA.

Le Le code source inclus dans cet article, fait pour être observé avec une police à chasse fixe, est également sous licence Licence Art Libre.

L’image d’un sticker du L∞p par olive, ya et zmo est sous la seule licence CC BY-NC-SA, avec l’aimable autorisation de zmo.

Adresse courte de l’article : http://r.rogdham.net/7.