Casse-tête

Je pensais bien connaître la logique des langages informatiques. Telle une langue qui évolue avec son époque pour devenir plus efficace tout en gardant sa richesse, les langages informatiques cherchent la clarté. Sélection naturelle, seuls les langages les plus efficaces persistent dans le temps. 

Il existe cependant une branche méconnue qui s’apparente à l’art. Incompris, ces langages, dits exotiques, cherchent à présenter à leurs utilisateurs un défi que seuls les plus motivés parviennent à maîtriser. Derrière des signes subtils se cachent toutes les instructions de langages modernes. Laissez-moi vous en présenter quelques uns.

Commençons par la famille des artistes

Vous aimez la peinture, le langage Piet est fait pour vous. Dans un style du peintre néerlandais Piet Mondrian, vous enchaîné des rectangles et des lignes dont les variations de couleurs influencent sur les actions réalisables. Les développeurs qui ont osé ce langage devraient être exposés. 

Dans la section littéraire, son cousin anglais, le Shakespeare Programming Language, est tout aussi fascinant. Le langage est extrêmement verbeux puisque le programme est écrit comme une pièce de théâtre. Les acteurs (les variables) sont mis à jour par leurs dialogues et ceux de leurs partenaires de scène. Le deus ex machina enchaîne les actes.

Autre grande famille, les trolls

Vous êtes nostalgiques des années 2000, le langage LOL est fait pour vous. Dans un style procédural classique, la plupart des verbes sont remplacés par des expressions de l’époque. Vous regrettez l’instruction GOTO qui vous déplace n’importe où dans un programme, vous adorerez le GOTO++ et ses instructions bien françaises. 

L’idée ici est de changer les verbes classiques d’un langage procédural par des mots issus d’un dictionnaire original. 

Parlons de la grande famille des expérimentaux

Nous plongeons dans les abysses des langages. Les créateurs de ces langages y voyaient un exercice : dépasser une contrainte. L’idée du BrainF**k est de créer un langage complet qui contiennent le moins de caractère possible. Avec les caractères suivants ><+-.,[] vous avez langage minimaliste mais complet. 

Par contre, bon courage pour rédiger un programme. Le moindre caractère ASCII se cherche par une boucle pour limiter les entrées. Écrire un programme qui traduit en BF me paraît plus simple que de coder dans ce langage. Cette logique a semble-t-il fait des émules. (Cow, Ook, DeadFish, Whitespace, …). 

Les langages maléfiques

Wikipedia ne m’en a donné qu’un, le Malbolge. Issu du huitième cercle des enfers selon Dante, il est parfait pour torturer les informaticiens qui s’en approche. 8 instructions simples et suffisantes proches de l’assembleur permettent de décrire toute action. Des permutations de matrices et une logique ternaire le rendent abscons. 

N’étant pas masochiste, je n’ai pas cherché d’autres équivalents à ce type de langage. 

L’autre monde

Nous sommes allés trop loin dans cet article. Il semble que nous arrivions sur un monde à part. Dans sa première version, le Befunge se limitait à 70 instructions de 1 caractère dans un espace matriciel de 80 sur 25. Le curseur d’exécution se déplace dans les 4 directions, des instructions peuvent réécrire le programme, …

La version suivante, le Befunge-98, a enlevé les contraintes. La matrice peut avoir autant de dimensions qu’elle le souhaite et n’est plus limitée en taille. Qui sait ce qu’un esprit génial pourrait en faire. Le Befunge est un langage informatique univers. 

Le monde des crypto-langages est bien plus vaste qu’il n’y paraît. Si vous cherchez à approfondir le sujet, voici un lien qui pourrait vous aider. Cela doit être classe de mettre Cow sur son CV. 

Partager l'article !!

J’ai de la chance !!!