Brainfuck

October 22nd, 2007

Dans des temps anciens et reculés, avant l’apparition du micro ordinateur personnel, il vivait un mathématicien du nom de Turing qui inventa la machine de Turing (comme c’est original vous ne trouvez pas ?). Cette machine se compose d’un ruban magnétique d’une longueur indéfinie (on suppose que quand on arrive au bout on peut l’allonger) et comportant des cases contenant la valeur d’un entier. Turing a démontré qu’il est possible d’adapter n’importe quel alogrithme pour sa machine. Il a par ailleurs été démontré que nos ordinateurs actuels sont équivalents à cette machine de Turing, ce qui leur confère aussi cette capacité d’executer n’importe quel algorithme. Enfin bref, de nos jours les ordinateurs utilisent des concepts bien plus évolués que la machine à ruban de Turing, ce qui fait que personne ne s’y est jamais intéressé… Sauf le suisse Urban Müller qui a inventé un langage de programmation qui permet de programmer un ordinateur comme on programmerai une machine de Turing. Ce langage est probablement le plus simple au mondre syntaxiquement parlant : il n’y a que 8 opérateurs :

  • > déplace le ruban vers la droite
  • < déplace le ruban vers la gauche
  • + incrémente la case
  • - décrémente la case
  • [ début de la boucle
  • ] fin de la boucle
  • . affichage du carractère correspondant au numéro dans la case
  • , demande d’un caractère à l’utilisateur et insertion de son numéro dans la case

Voici un exemple de programme (un hello world pour un peu d’originialité)

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

Vous pouvez d’ailleurs utiliser mon générateur de chaine (à utiliser depuis un shell linux). Pour de l’aide sur l’usage du convertisseur utilisez l’option -h.

Pour un complément d’informations, vous pouvez aller voir sur wikipedia ou alors sur ce très bon tutorial.

Bien qu’il existe un compilateur brainfuck, il est largement plus simple de l’interprêter. Sous linux, j’utilise le logiciel “bf” qui remplis parfaitement cette tâche et qui est intégré aux paquets ubuntu.

Sur ce, bon niquage de cerveau ! (c’est garanti si vous essayez de faire un programme un brin complexe…)

Entry Filed under: Programmation

Leave a Comment

hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


Calendar

November 2008
M T W T F S S
« Oct    
 12
3456789
10111213141516
17181920212223
24252627282930

Most Recent Posts