Langage de programmation exotique

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Un langage de programmation exotique est un langage de programmation imaginé comme un test des limites de la création de langages de programmation, un exercice intellectuel ou encore une blague, sans aucune intention de créer un langage réellement utile. De tels langages sont souvent un passe-temps pour les hackers ou les programmeurs. L'adjectif « exotique » permet de distinguer ces langages de ceux communément utilisés dans l'industrie.

La facilité d'utilisation est rarement une priorité pour ces langages, le but étant généralement de supprimer ou de remplacer les fonctionnalités tout en maintenant le langage Turing-complet. En rendant particulièrement compliquée la lecture de tels programmes tout en maintenant le langage Turing-complet, les créateurs de tels langages en font peut-être le pendant informatique de la poésie du non-sens.

Histoire[modifier | modifier le code]

Le premier langage exotique fut INTERCAL, créé en 1972 par James Lyons et Don Woods, avec l'intention de créer un langage différent de tout ce qu'ils connaissaient.

Plus de vingt ans plus tard, Urban Müller créait Brainfuck, un langage à huit instructions. Avec Befunge, Brainfuck est un des langages exotiques les plus suivis. Sans surprise, tous deux sont grandement mis en valeur par le fait qu'ils furent les premiers de leur genre tout en étant élégants.

Variétés[modifier | modifier le code]

Turing-complet[modifier | modifier le code]

Les langages Turing-complets ont un nombre arbitrairement restreint d'instructions, ce qui en rend la programmation acrobatique. Ceci inclut Brainfuck (huit instructions sans opérandes), OISC (en) (une commande, trois opérandes), et Thue (une commande, deux opérandes, créé par John Colagioia).

La Turing-complétude est un des thèmes favoris de la communauté. Elle est loin d'être évidente pour tous les langages, et les démonstrations sont souvent complexes. De nouveaux langages apparaissent continuellement, et la preuve de leur Turing-complétude est un défi.

Déterministe[modifier | modifier le code]

Un langage de programmation déterministe est un langage où il est toujours possible de prévoir, en fonction de l'état actuel d'un programme, quel sera son état suivant. La plupart des langages sont déterministes, tandis que des langages non-déterministes tels que Java2K donnent souvent des résultats peu fiables, et créer des programmes, même triviaux, qui fournissent des résultats fiables est souvent une tâche monumentale.

Despotique[modifier | modifier le code]

Un langage despotique est un langage Turing-complet où les commandes permettent la sélection de la prochaine instruction à être exécutée parmi un ensemble fini d'instructions. ReMorse (en), Whirl et de façon discutable INTERCAL sont despotiques.

Exemples de langages exotiques[modifier | modifier le code]

INTERCAL
La référence en matière de langages exotiques
FRACTRAN
Un langage à base de fractions inventé par le mathématicien Conway
Shakespeare Programming Language
Un langage pour écrire des programmes ressemblant à une pièce de théâtre
Malbolge
Un langage conçu pour être le plus difficile à programmer et pour être le plus ésotérique possible.
LOLCODE
Le LOLCODE est un langage de programmation exotique inspiré de l'argot Internet et du Lolcat retrouvable sur les chats et forums anglais.

Liens externes[modifier | modifier le code]