Befunge
Befunge est un langage de programmation exotique réflexif à pile. Il diffère des langages conventionnels par le fait qu'il est arrangé sur une grille à deux dimensions. Des instructions « flèche » dirigent le flux de contrôle à gauche, à droite, en haut, en bas, et des boucles sont construites en envoyant le flux de contrôle dans un cycle. HistoireLe langage a été créé par Chris Pressey en 1993, comme tentative de définir un langage aussi difficile à compiler que possible - la commande Les spécifications de Befunge-93 restreignent tout programme valide à une grille de 80 instructions horizontalement à 25 instructions verticalement. Toute exécution du programme excédant ces limites se retrouve de l'autre côté de la grille. Un programme Befunge est de cette manière topologiquement équivalent à un tore. Comme un programme Befunge-93 ne peut avoir qu'une unique pile et que son tableau de stockage est limité, le langage Befunge-93 est, contrairement à la plupart des langages, non Turing-complet. Les spécifications Funge-98 fournissent la complétion Turing en enlevant la restriction de taille sur les programmes. Au lieu d'avoir des bords reliés de part et d'autre, Funge-98 fait en sorte que le compteur ordinal suive un modèle surnommé « Lahey-space » en référence à son créateur, Chris Lahey. Dans ce modèle, la grille se comporte comme un tore de taille finie par rapport à son repliement, tout en lui permettant de s'étendre infiniment. Exemple de code BefungeLa technique d'utiliser des flèches pour changer le flux de contrôle est montrée dans le programme générateur de nombre aléatoire ci-dessous. L'instruction ? envoie le compteur ordinal dans une direction aléatoire. vv < < 2 ^ v< v1<?>3v4 ^ ^ > >?> ?>5^ v v v9<?>7v6 v v< 8 . > > ^ ^<
> v v ,,,,,"Hello"< >48*, v v,,,,,,"World!"< >25*,@
0"!dlrow, olleH">:#,_@ Ne pas oublier le '0' en début du code pour sortir de la boucle induite par le '_' et le '#'. Dans le cas où la valeur 0 n'est pas présente et dans le cas d'un portage de l'interpréteur Befunge en C par exemple, un risque de segmentation existe. De toute évidence, il reste plus propre de sortir de la boucle ainsi, question de lisibilité (Même s'il est difficile de l'appréhender en Befunge.) Liste des instructions
Liens externes
|