Accueil­FAQ­Rechercher­S'enregistrer­Membres­Groupes­Connexion
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 BrainFuck

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Fireranger
Possedé par Mark Overmars
Possedé par Mark Overmars


Masculin Nombre de messages: 1360
Age: 16
Programme utilisé (Gm/RmXp/...): Game Maker 7 PRO, Visual Basic 9.0, Visual C++ et Code::Blocks
Date d'inscription: 22/11/2007

MessageSujet: BrainFuck   Mar 18 Nov - 21:51

C'est un language de programmation simple, mais très difficile à comprendre et à écrire... Il n'y a que 8 instructions : ">" "<" "+" "-" "." "," "[" "]". Il a été concu pour que le compilateur ait la plus petite taille possible (171 octet, pour la dernière*).

Il utilise un tableau dans la mémoire de quelques Mo. Il y a un pointeur** nous situant dans le tableau. Les instruction servent respectivement à :

-faire avancer d'une case le pointeur
-faire reculer d'une case la pointeur
-augmenter de 1 la valeur de la case pointée
-diminuer de 1 la valeur de la case pointée
-affiche la valeur pointée à la console (en ASCII)
-récupère une valeur du clavier

(les deux derniers servent à faire des boucles)

*Note : les jeux faits avec Game Maker font environ 1Mo sans rien, ce qui donne 1 048 576 octets, soit environ 6132 fois plus

**Note : Un pointeur est une variable qui contient l'adresse d'une autre variable (ici, le pointeur contient l'adresse de la case du tableau)

Pour en savoir plus, rendez vous sur Wikipédia ou tapez BrainFuck sur Google

_________________
Guten Tag von Deutschland ^^


Jeu en cours : Ping Pong C++ en open source
Bibliothèque : SFML
Avancement : |||||||||| 100% !!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Xunther
Possedé par Mark Overmars
Possedé par Mark Overmars


Masculin Nombre de messages: 1644
Programme utilisé (Gm/RmXp/...): Game Maker (7.0 enregistré)
Date d'inscription: 31/08/2007

MessageSujet: Re: BrainFuck   Mar 18 Nov - 22:37

Salut,

Au premier coup d'oeil, je vois que ce language est grossier :D

Citation:
Brainfuck est un langage de programmation minimaliste, inventé par Urban Müller en 1993. Il tire son nom de l’union de deux mots anglais, brain (cerveau) et fuck (foutre), allusion transparente à l'expression « masturbation cérébrale ». Ce vocabulaire peu flatteur lui a d'ailleurs valu d'être écrit sous d'autres orthographes plus prudes, telles que Brainf*ck, Brainf*** ou encore BF.


Ce qui m'étonne :

Citation:
malgré les apparences, il est théoriquement possible d'écrire n'importe quel programme informatique en brainfuck.


Sa y'est, j'ai compris comment ce language fonctionnait :

Citation:
Le programme suivant affiche le traditionnel « Hello World! » et une nouvelle ligne à l'écran :

++++++++++
[ Boucle initiale qui affecte des valeurs utiles au tableau
>+++++++>++++++++++>+++>+<<<<-
]
à la sortie de la boucle le tableau contient: 0 70 100 30 10
>++. 'H' = 72 (70 plus 2)
>+. 'e' = 101 (100 plus 1)
+++++++. 'l' = 108 (101 plus 7)
. 'l' = 108
+++. 'o' = 111 (108 plus 3)
>++. espace = 32 (30 plus 2)
<<+++++++++++++++. 'W' = 87 (72 plus 15)
>. 'o' = 111
+++. 'r' = 114 (111 plus 3)
------. 'l' = 108 (114 moins 6)
--------. 'd' = 100 (108 moins 8)
>+. '!' = 33 (32 plus 1)
>. nouvelle ligne = 10


Citation:
La première ligne initialise a[0] = 10 par de simples incréments successifs à partir de 0. La boucle des lignes 2 à 4 définit de façon effective les valeurs initiales du tableau : a[1] = 70 (proche de 72, le code ASCII du caractère 'H'), a[2] = 100 (proche de 101 ou 'e'), a[3] = 30 (proche de 32, espace) et a[4] = 10 (nouvelle ligne). La boucle fonctionne en multipliant les valeurs de a[0], 10, par 7, 10, 3, et 1, qu'elle stocke dans les cellules voisines. Quand la boucle s'achève, a[0] vaut zéro. >++. déplace alors le pointeur à a[1], qui contient 70, y ajoute 2 (72 étant le code ASCII de la lettre 'H' majuscule), et l'affiche.

La ligne suivante déplace le pointeur vers a[2] et l'incrémente de 1, le résultat, 101, correspondant à 'e', qui est alors affiché.

'l' étant la septième lettre de l'alphabet après 'e', pour obtenir 'll' il faut ajouter 7 (+++++++) à a[2] et l'afficher deux fois.

'o' est la troisième lettre de l'alphabet après 'l', on incrémente donc a[2] trois fois avant d'afficher le résultat.

Le reste du programme fonctionne selon le même principe. Pour les espaces et les lettres en majuscule, ce sont d'autres cellules du tableau qui sont sélectionnées et incrémentées.


Ce language reste très basique ^^ !

@+

_________________
Xunther

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Xierra54
Admin - .: el traductor :.
Admin - .: el traductor :.


Masculin Nombre de messages: 8504
Age: 50
Programme utilisé (Gm/RmXp/...): GM (6.1 et 7 enregistrées), Purebasic (démo)
Etudes: Supérieures
Loisirs: ordinateur
Date d'inscription: 13/08/2005

MessageSujet: Re: BrainFuck   Mer 19 Nov - 0:50

Autant programmer en assembleur, c'est plus clair je trouve et plus rapide à l'exécution.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://philippe.ragni.free.fr/
Fireranger
Possedé par Mark Overmars
Possedé par Mark Overmars


Masculin Nombre de messages: 1360
Age: 16
Programme utilisé (Gm/RmXp/...): Game Maker 7 PRO, Visual Basic 9.0, Visual C++ et Code::Blocks
Date d'inscription: 22/11/2007

MessageSujet: Re: BrainFuck   Mer 19 Nov - 22:16

Oui, c'est vrai que c'est plus clair, mais l'avantage, c'est que c'est très facile de créer un compilateur, etc. Tandis qu'en assembleur, le compilateur ne fait rien, mais t'as besoin d'un linker et il fait s'assurer qu'il n'y ait pas d'erreur (enfin, c'est plus pratique)... Mais bon, moi aussi je préfère l'assembleur ^^

Exemple de compilateur BF en C++ (allez à la partie fin de l'exercice du mois de juillet)

_________________
Guten Tag von Deutschland ^^


Jeu en cours : Ping Pong C++ en open source
Bibliothèque : SFML
Avancement : |||||||||| 100% !!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
youyou
Timide
Timide


Masculin Nombre de messages: 82
Age: 15
Programme utilisé (Gm/RmXp/...): Code::Block IDE, GM7, Firefox, Starcraft...
Etudes: 2de
Loisirs: pc et electronique
Date d'inscription: 08/11/2006

MessageSujet: Re: BrainFuck   Mar 30 Déc - 18:23

quitte a faire un language de programmation complexe, autant utiliser le malbolge^^
@+
Ps: Hello World en Malbolge:

(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
:malade:

_________________
youyou
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 

BrainFuck

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous pouvez répondre aux sujets dans ce forum
Game Maker Zone :: Programmation/Graphisme :: Langages de programmation :: Autres-
Poster un nouveau sujet   Répondre au sujet