Interpréteur Brainf*** en C++
Connaissez-vous le Brainf***? C’est un langage de programmation ultra-minimaliste inventé par un compatriote helvétique dans le but avoué de torturer les neurones des programmeurs de tous poils.
J’ai profité de quelques instants libres pour travailler un peu mon C++ en écrivant un énième interpréteur pour ce langage. Il se veut standard, sans fioritures, et donc sans intérêt par rapport aux nombreuses alternatives déjà disponibles, mais après tout, c’était à but purement éducatif.
Vous trouverez une solution Visual Studio 2008 contenant du C++ tout ce qu’il y a de plus ANSI à cette adresse. De plus, le script permettant de générer cette jolie fractale est disponible par ici. D’ailleurs, plein de scripts et d’outils liés à ce merveilleux langage sont disponibles sur ce site.
Mais quel est l’interêt d’inventer un tel langage de programmation ???
J’essaierai de regarder ton code vu que je me suis remis au C++
Masturbation intellectuelle. Je ne vois que ça. Hésite pas à me dire ce que tu penses de ce bout de code (et balance le tien, du moment qu’on y est).
@Destra
Ca me fait penser à un langage, dont j’ai oublié le nom, et qui n’était composé que d’espaces, tabulations et de saut de lignes. Ce qui fait que le code est… invisible!
C’est plus du fun qu’autre chose xD
Il s’agit du Whitespace, c’est effectivement un langage de programmation, un petit peu plus puissant que le brainfuck d’ailleurs, car il supporte la gestion de deux espaces mémoire différents (un stack et un heap).
Il faut savoir que les espaces, voir même les espaces sous-entendus, ont été soumis comme opérateur pour le langage C++ par Bjarne Stroustrup! Il voulait que les mathématiciens puissent écrire « a = xy; », sous-entendu « a = x * y; ». Une notation plus proche de leurs origines.
Mais les espaces dans la programmation ne sont pas toujours destinés à rendre le code illisible. Le Python, par exemple, les utilise sous forme d’indentation pour représenter les blocs d’opérations, à la place des traditionnelles accolades. Et c’est très joli.
Je savais pour le Python, c’est vrai que cette idée était bonne. Car en plus, ca oblige à avoir une bonne indentation. C’est lourd de lire un code avec une indentation chaotique!
Par contre pour le « a = xy; » au lieu de « a = x * y; ». Le compilateur ne vas peut-être pas apprécier si j’ai une variable nommée « xy » car le compilateur se doit d’être déterministe. Je me trompe?
Le document peut être trouvé ici : http://www.research.att.com/~bs/whitespace98.pdf
Par contre, il est a noter que Bjarne Stroustrup l’a envoyé un premier avril. Peut-être y a-t-il un lien…