Valid XHTML 1.0!                  

 

  [petite] histoire des
  Langages de Programmation

 

 

     (gH) gilles.hunault@univ-angers.fr

 

 

        un chien qui court
  

 

 

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

 

 

 

 

     chef1     

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 :

     chef2     


     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

          soufflé          

 


     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

 

                         vaches1

 

 

 

 

 

 

 

 

 

 

 

 

 

vahces2

 

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

 

 

 

 

gaulois2      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." :
 

 

 

gaulois1


 A0000159006CA9006C590057A9006F590064
 A90021000000000000000000000000000000
 00000059004809006559006F090020590072
 09006CFF0000

 

 

 

 

Pour parler avec un ordinateur élevé parmi les orang-outangs (!), le langage Ook a été inventé.

 

outan1                outan2

 

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 : piet... 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 :

 


         znt1

 

Si vous ne comprenez pas comment il fonctionne, son créateur vous montre l'éxécution :

 


          znt2

 

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 au plan de l'exposé  

 

  retour gH    Retour à la page principale de   (gH)