[petite] histoire des
(gH) gilles.hunault@univ-angers.fr
Langages exotiques, ésotériques, délirants,
hilarants et même parfois stupides mais opérationnels.
Si vous "tombez par hasard" sur cette page, ne vous inquiétez pas si les programmes présentés vous paraissent délirants : c'est voulu. Un langage de programmation n'a pas d'autre règles que celles de son concepteur. Comme il y a des concours de langages obscurs, abscons, confus etc. des langages comme ceux cités ci-dessous sont créés dans le seul but de repousser les limites de la compréhension humaine et informatique. Par contre, et c'est remarquable, ils "fonctionnent" c'est à dire qu'il existe un compilateur ou un interpréteur pour chacun de ces langages. Mais bien sur personne ne serait assez fou pour vouloir développer quelque chose d'un peu conséquent dans ces langages...
L'un des premiers (pour diverses raisons) langages de cette catégorie est le langage brainf dont le nom complet est brainf*ck (l'étoile est mise pour la lettre u à cause de la vulgarité et de la grossièreté du mot correspondant). Voici un programme de trois lignes en brainf
++++++++++++++++++++++++++++++++[>+>+<<-] >>+++++++++++++++++++++++++<< ++++++++++[>>.-<.<-]
Il est clair que ce n'est pas clair !
Ce programme affiche la ligne suivante avant de s'arrêter :
9 8 7 6 5 4 3 2 1 0
Le langage chef est trés joli et permet de déguiser ses programmes en recette de cuisine.
Ainsi vous apprécierez certainement le très goutu soufflé que voici :
Hello World Souffle. This recipe prints the immortal words "Hello world!", in a basically brute force way. It also makes a lot of food for one person. Ingredients. 72 g haricot beans 101 eggs 108 g lard 111 cups oil 32 zucchinis 119 ml water 114 g red salmon 100 g dijon mustard 33 potatoes
Method. Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. Pour contents of the mixing bowl into the baking dish. Serves 1.
Les animaux n'ont pas été oubliés pour ces langages. Ainsi le langage cow permet avec un seul mot (mais en jouant sur les lettres minuscules et majuscules) de réaliser des prodiges. Voici un exemple de programme où nous avons laissé les commentaires pour donner quand même un peu de lisibilité :
[[generate fibonacci sequence]] MoO moO MoO mOo [[ main loop ]] MOO [[ print first number ]] OOM [[ temp copy of first number ]] MMM moO moO MMM mOo mOo [[ store second number off in the first position now ]] moO MMM mOo MMM [[ move back to temp number ]] moO moO [[ use temp to add to first and store in second in loop ]] MOO MOo mOo MoO moO moo mOo mOo moo
Ce programme "vache" produit bien sûr les nombres 1,1,2,3,5,8,13,21,34...
Le langage eta est plus surprenant. D'abord, son nom est l'acronyme de
Extremely Tortuous Algorithms Expressions That Amaze Encoded Tricky Allusions Esteemed Thrick Avuncularisations Elocutionist Throat Aberrations Effervescent Tautological Anagrams
Ensuite, ce langage n'a que huit instructions qui utilisent les 8 lettres les plus fréquentes en anglais : E, T, A, O, I, N, S et H. Les autres lettres sont ignorées ce qui permet d'utiliser des "mots" courants et de mettre un peu de douceur et de poésie ou de violence verbale dans les programmes. Ainsi le texte
** FUNGICIDE ** -- Fungus calendar -- CURTSEY: Fungal toe! Fungal toe! Fungal hoe! -- (Burnt programmer nucleus) Ooooooo! CRUDDY 2nd TOE: Nine(!) fungal hyaena toe5! Dungy alfalfa, penalty superlunary -- Oh, blubber! Ooooooo!
écrit simplement "hello world" de même que le texte
NEN toe nine NA hyaena toe N <aaa!> Renault sudden Adolph Enid: ugly M$IE4.0 Cygnus agenda: t'send a toe 2 nato. Bend a ghoul entourage ant! Venice T. NT, Be, Next -- a not-budget list of Operating Systems. Nurture 1 hundred hangmen, uterus 1st. s3ntient L1fe-f0rm? J@bb@ $ Hut?! -- On the Niet (Russian)
Mais plus poétiquement, on peut écrire pour réaliser le même affichage :
Naked fear would cough dryness Even for nail struggle-pieces Grandad loves the nail-like bigness Of the month seed. Tissue, no, gold, well-- to wave the same. Bad esperanto! Naked fear or a cough attacks brightness No! Curley hair and nine tower-swedes. Lets take order out of the future. Esperanto!
nouse est un langage conçu pour être "pervers". Ainsi afficher le fameux "Hello, world." se fait dans ce langage par
#0<a>0:0#0>e>0:0#0>f>0>0:0#0^f>0:0#0+4>0:0#0#h>0:0#0^f>0:0#0<g>0:0#0>f >0:0#0<e>0:0#0?4>0:0#0^1>0:0#0>1>0:0^0
numberix qui n'est pas un
langage gaulois malgré son
nom a pour but avoué de faire
apparaitre les lignes de
programme comme des mots
hexadécimaux avec exactement
6 "hex-digits" à chaque fois.
Voici donc sa version de
"Hello, world." :
A0000159006CA9006C590057A9006F590064 A90021000000000000000000000000000000 00000059004809006559006F090020590072 09006CFF0000
Pour parler avec un ordinateur élevé parmi les orang-outangs (!), le langage Ook a été inventé.
On pourrait croire qu'il ressemble au langage cow mais c'est faux : la seule ressemblance est qu'il n'y a qu'un seul mot ! Essayez par exemple de deviner ce que fait ce programme :
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
... bien sûr vous avez compris qu'il s'agit de "Hello, world."
Befunge est un de ces langages ésotériques qui me "bluffent" littéralement : rien qu'à lire la définition du langage (en français, ma langue maternelle et paternelle), je sais déjà que je n'y comprends rien ! Il est réflexif et à pile, (sans s à pile), pourquoi pas introspectif et à ressorts (avec un S à ressort) ? En voici quand même un exemple :
vv < < 2 ^ v< v1<?>3v4 ^ ^ > >?> ?>5^ v v v9<?>7v6 v v< 8 . > > ^ ^<
Piet est un langage très visuel, en référence à Mondrian (dont le prénom était Piet). C'est beau, la preuve : ... mais je n'en sais guère plus, sauf que c'est "Hello World".
Nous terminerons cette balade par un langage dit "romantique" parce qu'il fonctionne avec des "roméos et juliettes". Il se nomme zt. Voici son bonjour :
Si vous ne comprenez pas comment il fonctionne, son créateur vous montre l'éxécution :
c'est bien plus compréhensible, non ? Ah... l'amour !
D'autres langues "délirantes" (mais pas des langages de programmation) sont proposées par Google dans sa page d' Outils linguistiques.
Essayez par exemple les langues "Elmer Fudd", "Hacker","Javanais" ou encore "Klingon"...
Suite de l'exposé : histoire des langages de programmation
Retour à la page principale de (gH)