Aller au contenu

« Langage de programmation exotique » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Sygmei (discuter | contributions)
mAucun résumé des modifications
m v2.05b - Bot T3 PCS#64 - Correction syntaxique (Lien interne avec cible identique au texte)
 
(18 versions intermédiaires par 14 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Fichier:Hello World Brainfuck.png|vignette|Programme "Hello World!" en ''[[brainfuck]]'']]
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 ''[[hacker (sécurité informatique)|hackers]]'' ou les [[Développeur|programmeurs]]. L'adjectif « exotique » permet de distinguer ces langages de ceux communément utilisés dans l'industrie.
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 ''[[hacker (sécurité informatique)|hackers]]'' ou les [[Développeur|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.
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, les créateurs de tels langages en font peut-être le pendant informatique de la poésie du non-sens.


== Histoire ==
== Histoire ==
Ligne 9 : Ligne 10 :


== Variétés ==
== Variétés ==
=== Turing-complet ===
=== [[Turing tarpit]] ===
Les langages [[Turing-complet]]s ont un nombre arbitrairement restreint d'instructions, ce qui en rend la [[programmation]] acrobatique. Ceci inclut [[Brainfuck]] (huit [[Instruction (informatique)|instructions]] sans [[opérande]]s), {{Lien|OISC|en}} (une commande, trois opérandes), et [[Thue (langage)|Thue]] (une commande, deux opérandes, créé par [[John Colagioia]]).
Les [[Turing tarpits]] sont des langages [[Turing-complet]]s, c'est-à-dire qu'ils permettent en théorie d'implémenter n'importe quelle [[fonction calculable]], mais conçus de telle sorte que même les opérations les plus élémentaires sont difficiles à effectuer en pratique. Ils utilisent souvent un nombre restreint d'instructions, ce qui en rend la [[programmation]] acrobatique. Ceci inclut [[Brainfuck]] (huit [[Instruction (informatique)|instructions]] sans [[opérande]]s), [[Ordinateur à jeu d'instruction unique|OISC]] (une commande, trois opérandes), et [[Thue (langage)|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.
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 ===
=== Non déterministe ===
Un langage de programmation [[Déterminisme|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.
Un langage de programmation [[Déterminisme|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 ===
=== Despotique ===
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. {{Lien|ReMorse|en|trad=remorse ASCII}}, [[Whirl]] et de façon discutable [[INTERCAL]] sont despotiques.
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]], [[Whirl]] et de façon discutable [[INTERCAL]] sont despotiques.


== Liste non exhaustive de langages exotiques ==
== Liste non exhaustive de langages exotiques ==
; [[INTERCAL]]
;[[Brainfuck]]
: Un des langages exotiques les plus suivis, à base de 8 instructions, simpliste mais difficile à comprendre.
: La référence en matière de langages exotiques.
; [[FRACTRAN]]
;[[FRACTRAN]]
: Un langage à base de fractions inventé par le mathématicien [[John Horton Conway|Conway]].
: Un langage à base de fractions inventé par le mathématicien [[John Horton Conway|Conway]].
; [[Brainfuck]]
;[[INTERCAL]]
: La référence en matière de langages exotiques.
:Un des langages exotiques les plus suivis, à base de 8 instructions, simpliste mais difficile à comprendre.
;[[GOTO++]]
; [[Shakespeare Programming Language]]
: Langage parodique mélangeant une francisation du BASIC, de fausses instructions GOTO, et des sauts aléatoires dans le code.
: 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]]
;[[LOLCODE]]
: Le LOLCODE est un langage de programmation exotique inspiré de l'argot Internet et du Lolcat retrouvable sur les chats et forums anglais.
: Le LOLCODE est un langage de programmation exotique inspiré de l'argot Internet et du [[Lolcat]] retrouvable sur les chats et forums anglais.
;[[Malbolge]]
: Un langage conçu pour être le plus difficile à programmer et pour être le plus ésotérique possible.
;[[Piet]]
;[[Piet]]
: Un langage de programmation où les programmes sont des images matricielles.
: Un langage de programmation où les programmes sont des [[Image matricielle|images matricielles]].
;[[Shakespeare Programming Language]]
: Un langage pour écrire des programmes ressemblant à une pièce de théâtre.
;[[Whitespace]]
;[[Whitespace]]
: Ce langage est une variante du [[Brainfuck]] qui utilise uniquement des espaces, des tabulations et des retours à la ligne pour écrire un programme.
: Ce langage est une variante du [[Brainfuck]] qui utilise uniquement des espaces, des tabulations et des retours à la ligne pour écrire un programme.
;[[Kitanai]]
: Un langage qui a pour but de pouvoir être compacté au maximum tout en restant assez simple à utiliser


=== Voir aussi ===
=== Voir aussi ===
Ligne 44 : Ligne 45 :


== Liens externes ==
== Liens externes ==
* {{en}}[https://esolangs.org/wiki/Main_Page Esolang, un wiki dédié aux langages exotiques]
* {{en}} [https://esolangs.org/wiki/Main_Page Esolang, un wiki dédié aux langages exotiques]
* {{en}}[http://homepage.tinet.ie/~kmgaughan/esolang/ The Esoteric Programming Languages Webring]
* {{en}} [http://homepage.tinet.ie/~kmgaughan/esolang/ The Esoteric Programming Languages Webring]
* {{en}}[http://www.dangermouse.net/esoteric/ DM's Esoteric Programming Languages]
* {{en}} [http://www.dangermouse.net/esoteric/ DM's Esoteric Programming Languages]
* {{en}}[http://groups.google.com/groups?q=group%3Aalt.lang.intercal alt.lang.intercal] ([[Usenet]] group for Intercal, discussing all esoteric programming languages)
* {{en}} [http://groups.google.com/groups?q=group%3Aalt.lang.intercal alt.lang.intercal] ([[Usenet]] group for Intercal, discussing all esoteric programming languages)


{{Palette|Programmation informatique}}
{{Palette|Programmation informatique}}

Dernière version du 2 septembre 2024 à 06:18

Programme "Hello World!" en brainfuck

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, les créateurs de tels langages en font peut-être le pendant informatique de la poésie du non-sens.

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, en 1993, Urban Müller inventa Brainfuck, un langage à huit instructions, et Chris Pressey créa Befunge. Ces deux langages font partie 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.

Les Turing tarpits sont des langages Turing-complets, c'est-à-dire qu'ils permettent en théorie d'implémenter n'importe quelle fonction calculable, mais conçus de telle sorte que même les opérations les plus élémentaires sont difficiles à effectuer en pratique. Ils utilisent souvent un nombre restreint d'instructions, ce qui en rend la programmation acrobatique. Ceci inclut Brainfuck (huit instructions sans opérandes), OISC (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.

Non 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.

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, Whirl et de façon discutable INTERCAL sont despotiques.

Liste non exhaustive de langages exotiques

[modifier | modifier le code]
Brainfuck
Un des langages exotiques les plus suivis, à base de 8 instructions, simpliste mais difficile à comprendre.
FRACTRAN
Un langage à base de fractions inventé par le mathématicien Conway.
INTERCAL
La référence en matière de langages exotiques.
GOTO++
Langage parodique mélangeant une francisation du BASIC, de fausses instructions GOTO, et des sauts aléatoires dans le code.
LOLCODE
Le LOLCODE est un langage de programmation exotique inspiré de l'argot Internet et du Lolcat retrouvable sur les chats et forums anglais.
Malbolge
Un langage conçu pour être le plus difficile à programmer et pour être le plus ésotérique possible.
Piet
Un langage de programmation où les programmes sont des images matricielles.
Shakespeare Programming Language
Un langage pour écrire des programmes ressemblant à une pièce de théâtre.
Whitespace
Ce langage est une variante du Brainfuck qui utilise uniquement des espaces, des tabulations et des retours à la ligne pour écrire un programme.

Liens externes

[modifier | modifier le code]