7 langages de programmation inhabituels qui valent la peine d'être examinés


À tous égards, il existe un nombre énorme de langages de programmation. Certaines listes en contiennent des centaines, tandis que l'Encyclopédie historique des langages de programmation en répertorie un peu moins de 9 000. Vous n’en avez probablement utilisé qu’une poignée, et vous ne serez peut-être pas trop surpris de découvrir que la plupart des autres sont obscurs, archaïques et tout simplement bizarres.

Découvrez à quel point la programmation peut devenir étrange, depuis les langages pleins de parenthèses jusqu'à ceux qui interprètent des couleurs ou même du code que vous ne pouvez pas voir du tout !

Lisp, dans lequel tout est une liste

Lisp est un langage ancien, peut-être le deuxième plus ancien encore utilisé aujourd'hui. Il est apparu pour la première fois en 1960. Le nom du langage signifie « traitement de liste », mais une alternative courante, visant la syntaxe unique du langage, est « beaucoup de parenthèses superflues irritantes ». Il est facile de comprendre comment il a obtenu ce nom :

(defun factorial (n)
    (if (zerop n) 1
        (* n (factorial (1-n)))))

Cette fonction calcule la factorielle d'un nombre, en utilisant la récursion pour ce faire. La récursion est un concept fondamental du langage, avec d'autres fonctionnalités puissantes telles que le typage dynamique et les fonctions d'ordre supérieur.

La chose la plus époustouflante de Lisp est peut-être sa distinction entre code et données : il n'y en a pas. Tout est une expression s, ce qui rend la syntaxe de Lisp remarquablement frugale. En conséquence, de nombreux fans de Lisp le considèrent comme le seul langage vraiment beau et, une fois que vous avez compris le concept, il est difficile d'être en désaccord.

Lisp a subi de nombreuses révisions et a engendré de nombreuses variantes depuis ses débuts. L'un des plus réussis est Emacs Lisp, qui pilote l'éditeur de texte Linux flexible du même nom et lui permet d'être incroyablement configurable et extensible. L'autre utilisation très médiatisée de Lisp est Arc, un dialecte qui alimente le Actualités des pirates site web.

Prolog, le précurseur du codage IA

Prolog (traduit par « programmation en logique ») est le dernier langage sérieux de cette liste, inclus en raison de son paradigme inhabituel et de son statut de langage original de l'IA. Prolog utilise un style déclaratif, dans lequel les programmes décrivent la structure et la logique d'une tâche, plutôt que le processus permettant de l'accomplir. Prolog fait le reste, en prenant ces règles et en produisant des programmes qui les utilisent.

Cette approche permet un type particulier de programmation, davantage axé sur la logique et le langage naturel que sur les flux de contrôle et les algorithmes. Un programme Prolog se compose de faits tels que :

child(john,sue).

Et des règles, comme :

parent(Y,X) :- child(X,Y).

Ceux-ci constituent une base de connaissances que vous pouvez ensuite interroger avec des requêtes telles que :

?- parent(sue,john).

Cela devrait renvoyer vrai pour indiquer que oui, Sue est le parent de John. Bien sûr, un exemple aussi trivial n’est pas très éclairant, mais un programme plus complexe comportant des centaines de milliers de règles et de faits peut tirer des conclusions bien plus intéressantes.

Prolog est particulièrement adapté à la résolution d'énigmes logiques comme les tours de Hanoï ou le classique puzzle de traversée de rivière avec un loup, une chèvre et un chou. C'est un autre exemple de langage difficile à comprendre ; Une fois que vous l’avez fait, il est facile de reconnaître sa beauté et son influence.

Befunge, le langage au code source bidimensionnel

Befunge est un exemple classique de langage de programmation ésotérique ; celui qui se soucie plus de son abus astucieux de la conception du langage que de son aspect pratique. Utiliser ces langages est un défi, et ils nécessitent toujours une combinaison de pensée logique et d’interprétation créative. Mais, en fin de compte, ils introduisent une touche légère dans le monde normalement sérieux de la programmation.

Le code source est orienté ligne dans de nombreux langages, et quelques rares, comme Python, se soucient également des colonnes dans lesquelles se trouvent certaines parties de votre code. Mais Befunge pousse cela à l'extrême : votre code est constitué de caractères individuels, disposés dans une grille :

0"!dlroW ,olleH"v
                > , v
                | : <
                @

Le programme ci-dessus imprime « Hello, World ! » en ajoutant chaque caractère à la pile, puis en boucle pour les imprimer. Le symbole @ en bas à droite du programme est la commande « end », pour terminer l'exécution du programme.

Befunge prend en charge 26 commandes différentes qui couvrent l'arithmétique, le flux de contrôle, les E/S et la manipulation d'une pile globale, la structure de données singulière. Il utilise des caractères qui ressemblent à des flèches pour contrôler le déroulement du programme, ce programme befunge est donc une boucle infinie :

>v
^<

Vous pouvez utiliser la notation postfixe pour manipuler la pile ; le . La commande affiche la valeur en haut. Ce programme génère 12 :

48+.@

Il existe des commandes pour se déplacer dans une direction aléatoire, lire à partir de l'entrée standard et dupliquer le haut de la pile. Il y a aussi l'opérateur « vertical si » merveilleusement spécifique !

La promesse d’une programmation graphique ou visuelle change de mode, avec des langages comme Scratch destinés au marché éducatif. Si jamais l’on réussit, cela doit peut-être tout à Befunge, le langage qui utilise essentiellement la forme d’affichage graphique la plus élémentaire : l’art ASCII.

Piet, dont les programmes sont des œuvres d'art abstraites

Les peintures de Piet Mondrian combinant des lignes de quadrillage noires avec des blocs de couleurs primaires comptent parmi les plus emblématiques de l'art du XXe siècle. Le langage Piet s’en inspire, produisant un beau code source sans aucune ressemblance avec ce qu’il fait réellement :

Formes colorées, approximativement des rectangles, avec occasionnellement des carrés noirs et d'autres artefacts intercalés.

Bien que cet exemple n'imite pas tout à fait le style de Mondrian, un programme de Piet peut le faire, avec un peu de travail :

Une image très dans le style de Piet Mondrian, avec des blocs de couleurs primaires entre d’épais quadrillages noirs.

En coulisses, Piet ressemble un peu à Befunge, avec des blocs de couleurs représentant le mouvement dans l'espace 2D au sein du programme. Chaque commande spécifique est définie non pas par une couleur particulière, mais par le passage d'une couleur à la suivante, en fonction de l'évolution de sa teinte et de sa luminosité. Inutile de dire que Piet n’est pas un langage facile à programmer, mais on dit que le véritable art requiert une forme de souffrance.

Espace blanc, parce que ça vous donne l'impression d'être un espion

À votre avis, que fait le programme suivant ?

Un fichier de code source apparemment vide, avec des lignes numérotées de 1 à 11.

Rendons les choses un peu plus faciles : que diriez-vous de la même chose avec tout le texte sélectionné ?

Un fichier de code source avec tout le texte sélectionné, montrant qu'il est composé de divers caractères d'espacement.

OK, c'est encore assez difficile à décoder, mais ne vous blâmez pas : c'est le monde étrange de Whitespace, un langage dont les programmes sont entièrement constitués de caractères d'espace, de tabulation et de saut de ligne. Vous devriez probablement apprendre à afficher les caractères non imprimables dans votre éditeur avant de vous approcher de celui-ci.

Utilisez la commande :set list dans Vim pour afficher les caractères d'espacement et assurez-vous que votre éditeur ne supprime pas les espaces blancs de fin lorsque vous enregistrez vos fichiers d'espaces. Ou restez simplement à l’écart des espaces blancs.

Outre la syntaxe idiosyncrasique, Whitespace partage beaucoup avec d'autres langages ésotériques : il utilise une pile, prend en charge un ensemble limité d'opérations et ne reconnaît que les types de données entiers et caractères.

Whitespace ignore tous les caractères autres que des espaces, mais cela dépend des caractères ignorés par la plupart des autres langages. Un programme Whitespace peut donc être intégré dans la source d'un langage totalement différent. Si vous le souhaitez, vous pouvez introduire clandestinement un programme Whitespace dans un autre. Même certains de vos programmes existants pourraient également être du code Whitespace valide !

Shakespeare, un langage avec des programmes qui auraient pu être écrits par le barde

Écoute, tu utilises ce langage et ta source sera aussi pittoresque que si elle sortait de la plume du barde.

En d’autres termes, Shakespeare est un langage de programmation dont le code source ressemble à celui que Shakespeare a écrit. Cela semble peu probable, je sais, alors voici un exemple de programme qui génère « HI » :

Un exemple de programme, écrit dans la langue de Shakespeare, qui imite une pièce de théâtre, avec un texte comme "Entrent Hamlet et Juliette" et "Acte 1 : Le seul acte".

Shakespeare réalise une grande partie de ce qu'il fait en donnant beaucoup de liberté au programmeur, afin qu'il puisse écrire dans un langage pseudo-shakespearien. Dans l'exemple ici, les variables (Hamlet et Juliet) sont déclarées avec « Entrée ». La phrase prononcée par Juliette, commençant par « Tu es », est un calcul basé sur la négativité des adjectifs et de leur nombre. « Exprimez ce que vous pensez » est une façon d'afficher une valeur ; dans ce cas, le « H » dans « HI ».

Comme la plupart des langues ésotériques, Shakespeare n’a guère vocation à être pratique. Mais c'est une magnifique démonstration de la diversité des langages de programmation et de l'imagination de certains concepteurs de langages.

JSF**k, un langage coquin qui fonctionne dans n'importe quel navigateur web

C'est de loin le langage de programmation le plus grossier ici, mais uniquement parce que nous en avons laissé quelques autres en dehors de cette liste ! JSFuck perpétue une tradition de jurons dans des noms en langage ésotérique qui a commencé avec l'original, Brainfuck, en 1993.

La version JS est remarquable car il s'agit d'un sous-ensemble de JavaScript, vous pouvez donc l'exécuter dans un navigateur Web. Pourquoi voudriez-vous le faire est une autre affaire.

JSFuck est en réalité un encodeur, convertissant n'importe quel programme JavaScript raisonnable en un désordre insondable de code qui n'utilise que les caractères. [, ](, ), ! et +. Il profite de certaines propriétés du langage JavaScript pour réaliser cette transformation miraculeuse, mais il le fait au mépris total de l’efficacité. Dans JSFuck, Hello World occupe 3 039 caractères. Je n'inclurai pas le code complet, mais voici un extrait pour donner un aperçu :

Quelques exemples de code JSFuck, qui ressemble à une combinaison aléatoire de six caractères de ponctuation.

JSFuck est en fin de compte une preuve de concept, démontrant que chaque programme JavaScript existant n'a besoin que de six caractères pour s'exécuter. Cependant, JavaScript est déjà responsable d'une grande partie du gonflement des sites Web, vous devriez donc probablement éviter de l'aggraver.



Vous pouvez lire l’article original (en Angais) sur le sitewww.howtogeek.com