|||

Du code pour rire

Je ne suis par programmeur.

Mais je suis très curieux. Et ma curiosité m’a souvent poussé à expérimenter plein de choses que je considère comme des outils (ou des jouets) propres à la création. La programmation en est une.

Bien entendu, mon esprit non-euclidien arrive très souvent à ses limites ou à saturation dès que j’aligne les lignes de code et j’abandonne assez facilement toute velleité de produire quelque chose d’important tout seul.

Cela ne m’a pas empêché, au fil du temps, de me sentir à l’aise avec certains langages ou pseudo-langages au point de produire des choses qui marchent et qui sont sympa.

Tout ce long et ennuyeux préambule pour vous faire découvrir des choses étonnantes dans l’univers si particulier du code.

Avant toute chose, il n’est pas nécessaire d’avoir de quelconques connaissances en codage pour apprécier tout l’humour et l’absurdité des exemples à suivre. Néanmoins, je me permet une très courte mise au point.

Un code informatique se compose d’instructions basiques fournies à l’ordinateur pour qu’il exécute une successions de tâches, la plupart peuvent se résumer à faire des calculs et ranger des données dans des cases mémoires. La syntaxe et la sémantique utilisées pour cela —pouvant plus ou moins varier selon le langage— restent très simples.

En voici deux exemples :

10 CLS
20 PRINT "Bonjour le monde !"
30 GOTO 20

Exemple donné en Basic

document.write('Bonjour le monde !');

Exemple donné en Javascript

Pour les plus curieux, vous pouvez admirer un exemple de code pour afficher la phrase «Hello world»1 dans de nombreux langages informatiques sur cette page Wikipedia.


Le LOLcode

Un pur produit d’internet

Ce méta-langage a été créé en 2007 par Adam Lindsay, alors chercheur à l’université de Lancaster. Il en est à l’heure actuelle à sa version (stable) v0.10.

Le LOLcode se caractérise par le fait que sa sémantique est emprunté au «vocabulaire» dit LOLcat, à savoir un anglais déformé de manière humoristique et censé être utilisé par les chats. (Article Wikipedia sur le LOLcat)

En voici un exemple :

HAI
  CAN HAS STDIO?
  BTW affiche "Hello world!" à l'écran
  VISIBLE "Hello world!"
KTHXBYE 

Vous pourrez noter la déformation sémantique ;

  • HAI est une déformation du mot «Hi» et annonce le début du programme.
  • CAN HAS STDIO? appelle une bibliothèque externe.
  • BTW est le classique raccourci pour «by the way» qui se traduit par «À propos» ou «Au fait», et est utilisé dans le code comme un commentaire
  • KTHXBYE combine plusieurs mots ; K pour «ok», THX pour «thanks» (merci) et BYE. Ce mot-clé signifie simplement la fin du programme.

Bien qu’il soit presque utilisable (il continue à être développé et possède quelques interpréteurs2 fonctionnels), le LOLcode reste à la fois une blague et un exercice de style. À noter qu’il a fait depuis des émules car on trouve maintenant son équivalent en Python.

  • Article Wikipedia sur le LOLcodeLien
  • Site officiel du LOLcodeLien

Le Brainfuck

Le code qui tue les cerveaux

Créé par Urban Müller en 1993, ce langage tire son nom de l’impression qu’il provoque quand on tente de le comprendre.

L’objectif de Müller n’était pas à l’origine d’en faire une blague, mais bel et bien un exercice de programmation. Son but était de créer un langage extrêmement simplifié et ultra-léger.

Le Brainfuck ne comporte que 8 instructions composées chacune d’un seul caractère et d’une grille quasi infinie de cases-mémoires de 8 octets3. Néanmoins, le Brainfuck est reconnu comme étant Turing-complet, ce qui signifie qu’il est virtuellement possible de coder n’importe quel type de programme avec… si on est suffisamment dérangé.

Exemple du classique «Hello World» :

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.
<<+++++++++++++++.>.+++.------.--------.>+.>.

Sachant que le seul jeu d’instructions disponibles est le suivant :

Instruction Fonction
>​ incrémente (augmente de 1) le pointeur
< décrémente (diminue de 1) le pointeur
+ incrémente l’octet du tableau sur lequel est positionné le pointeur
- décrémente l’octet pointé
. sortie de l’octet pointé (en ASCII)
, entrée d’un octet (ASCII) dans le tableau
[ saute à l’instruction après le ] correspondant si l’octet pointé est à 0
] retourne à l’instruction après le [ si l’octet pointé est différent de 0

Plus abscond, c’est difficile (mais pourtant fait), et pourtant utilisable. Néanmoins, je me demande qui serait assez frappé pour faire un Flappy Bird en Brainfuck

  • Article Wikipedia sur le BrainfuckLien
  • Un interpréteur en ligne pour expérimenter le BrainfuckLien

Shakespeare

To code or not to code…

Diamétralement opposé, on peut trouver le langage Shakespeare, créé par Jon Aslund et Karl Hesselstörm, avec le but avoué de créer un langage informatique qui ne devait pas ressembler à un code informatique. Ainsi, le principe de programmation est le suivant ; le code est rédigé dans une pièce du célèbre auteur.

Ainsi, pour déclarer une variable4, il faut créer un personnage. Et, pour donner une valeur négative à cette variable, il faut la faire apparaître sur scène en compagnie d’un autre personnage, et que ce dernier insulte par dialogues votre personnage-variable.

Oui, oui. C’est n’importe quoi.

Et c’est surtout très long. J’ai cherché, mais donner un exemple en quelques lignes est strictement impossible. Je vous laisse juger par vous même en vous donnant simplement le lien vers le code complet du classique «Hello World» qui fait la bagatelle de 5500 signes !

Hello World en code Shakespeare

Ce langage n’est, bien entendu, pas grand-chose d’autre qu’une jolie et complexe blague, tant il est quasiment impossible d’en avoir une utilisation pratique.

À noter qu’il existe également un langage à la philosophie assez proche ; le Chef. Son principe est simple : le code doit être à la fois un programme informatique et une recette de cuisine réalisable dans la réalité.

Absurdement délicieux.

  • Article Wikipedia sur le langage ShakespeareLien
  • Le site officiel — Lien

Whitespace

Les silences entre les codes sont encore du code

Le code Whitespace a été créé par Edwin Brady et Chris Morris de l’Université de Durham, et diffusé le 1er avril 2003. Inutile d’hésiter sur le status de blague de ce langage.

Néanmoins, son principe aurait pu inspirer Neil Stephenson dans son Cryptonomicon5. En effet, le principe du Whitespace consiste non pas à utiliser le moindre caractère lisible, mais tout au contraire à n’interpréter que les espaces invisibles.

Ce langage utilise une complexe combinaison d’espaces, de tabulations et de retours à la ligne pour composer son code. Il est donc curieusement possible de s’en servir comme code caché dans un autre code, à la manière d’une stéganographie.

Voici le classique «Hello World» :

Les lettres sont des commentaires facultatifs, destinés à visualiser le code : S = espace ; T = tabulation ; L = retour à la ligne.

  • Article Wikipedia sur WhitespaceLien
  • Une page tutorielle — Lien

Piet

Un peu de poésie dans ce monde de nerds

Créé par David Morgan-Mar, le langage Piet se distingue des autres par le fait qu’il se programme en lui fournissant une matrice de cases colorées sous la forme d’une image (rappelant les œuvres de l’artiste Piet Mondrian dont il emprunte le prénom).

Ce langage est composé de 18 teintes auquelles on ajoute le noir et le blanc. L’interpréteur parcourt, selon une trajectoire définie par les changements de nuances, la grille composé de carrés de couleurs pour «lire» le programme.

Voici à quoi ressemble notre habituel «Hello World»:

  • Article Wikipedia sur PietLien
  • La page officielle — Lien

Ook!

C’est pas à un vieux singe…

Les fans du Disque-Monde ont sans nul doute déjà fait le lien avec le personnage du bibliothécaire de l’Université Invisible. Le langage Ook! s’en inspire en effet directement.

Le bibliothécaire de l’UI, dans les romans de Terry Pratchett, s’est vu transformé en orang-outan après un accident magique, mais n’a jamais désiré qu’on le ramène à son état précédent, découvrant trop d’avantages à sa nouvelle forme6. Cependant, son vocabulaire s’est retrouvé limité à un seul mot ; « Ook », prononcé avec une variante tout aussi limitée d’intonations.

C’est cette limitation qui a poussé le même David Morgan-Man, déjà responsable du langage Piet, de créer un langage dont le but serait, je cite :

Un langage de programmation fait par et pour les orang-outans…

Ainsi, ce langage ne comporte que trois instructions ;

  • Ook.
  • Ook?
  • Ook!

La combinaison de ces trois «tons» dans des enchainements particuliers permet donc de programmer quelque chose.

Comme par exemple …

Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.

Qui permet d’afficher, devinez quoi ?

  • Page officiel du langage Ook!Lien

Conclusion ?

Ceci n’était qu’une sélection subjective de mes découvertes des semaines passées.

Il y a bien sûr un nombre conséquent d’autres langages informatiques créés pour être tout sauf utilisables sérieusement (J’aurai pu citer par exemple le Velato qui code en musique, le Malbolge qui n’est pas censé être utilisé par l’être humain ou le Glass dont le but est d’être le plus compliqué possible à écrire).

J’espère que cela vous aura donné l’occasion de sourire, de vous taper le front en murmurant «Mais, c’est vraiment n’importe quoi !» ou encore de vous rassurer parce que vous n’êtes pas codeur.

J’espère surtout que cela ne vous aura surtout pas donné l’envie de tester l’un de ces langages ;)

En attendant, je vous dit :

#include 
 
int main()
{
    std::cout << "Merci de votre patience. À bientôt !";
    return 0;
}


Source principale


  1. «Hello world!» est une convention tacite en programmation, souvent utilisée comme tout premier exemple d’interaction avec un langage informatique ; quel est le code à utiliser pour afficher cette phrase est en général la toute première leçon.↩︎

  2. Un interpréteur est un logiciel qui traduit un méta-langage rédigé par un programmeur en code de bas niveau (de l’assembleur dans la majorité des cas) utilisable directement par l’ordinateur. On parle également de compilateur.↩︎

  3. Un octet est une suite de 8 caractères. La version 1 du Brainfuck comprenait une grille de données limitée à 30.000 cases, soit 240 Kbs.↩︎

  4. Une variable est un mot-clé servant à contenir une valeur, un peu comme une boite étiquetée où on peut ranger quelque chose.↩︎

  5. Excellent roman sur la course à la cryptographie, dans lequel un programmeur kidnappé parvient à cacher des informations sur son ordinateur portable au nez de ses ravisseurs en utilisant une seule touche de son clavier pour écrire en morse.↩︎

  6. Notamment celle d’avoir assez de force dans chacun de ses quatre membres pour dévisser sans peine la tête de tout importun.↩︎

Dans les épisodes précédents… D’improbables portraits podcasts « C’est plus que de la S.F. »
Dernières entrées Writever 2024 — Février Writever 2024 — Janvier Un dernier billet avant la fin du monde Un état du temps qui passe… Les Chants de Sennaar Le point écriture de la rentrée Jordan Mechner, Replay Le petit voyage en Crète — Les T-shirts Le petit voyage en Crète — Chapitre Final Le petit voyage en Crète — Chapitre 10 Le petit voyage en Crète — Chapitre 9 Le petit voyage en Crète — Chapitre 8 Le petit voyage en Crète — Chapitre 7 Le petit voyage en Crète — Chapitre 6 Le petit voyage en Crète — Chapitre 5 Le petit voyage en Crète — Chapitre 4 Le petit voyage en Crète — Chapitre 3 Le petit voyage en Crète — Chapitre 2 Le petit voyage en Crète — Chapitre 1 Saviez-vous qu’un chat a cosigné des recherches scientifiques ? Je n’ai plus la patience… Trois tiers de critiques Dans le périscope de juin 98 % (le court-métrage) J’en ai des choses à raconter. La question est : comment ? Les Archives ferment La Sicile, jour 6 La Sicile, jour 5 La Sicile, jour 4 La Sicile, jour 3 La Sicile, jour 2