Très incomplètes, ces pages ne constituent qu'un point d'entrée dans un monde merveilleux, fait par des esprits avancés, pour des esprits virtuellement aventureux. Mais le pire ne s'y trouve pas... ou, au moins pas facilement (?).
Menu de navigation :
Avertissement :
Toutes les infos fournies ici ne sont le sont qu'à titre indicatif.
Aucune garantie ou responsabilité de quelque sorte ne peut être engagée.
Vous avez programmé en Basic ; le Pascal vous semble abouti ; le C++ ne vous dérange pas ; java vous semble universel ; vous trouvez Ruby esthétique ; Object-Pal vous semble suffisant ; vous pensez que Cobol a encore sa place ; vous ignorez le IOCCC.
Alors, élargissez votre esprit : jetez donc un oeil sur les langages ésotériques !
Adresses diverses
Quelques adresses génériques et (a)-variées, pour commencer :
- http://members.tripod.com/rkusnery/weird.html
- http://www.dangermouse.net/esoteric
- http://linuxfr.org/2003/06/02/12677.html
- http://99-bottles-of-beer.ls-la.net
- http://www.mines.edu/students/b/bolmstea/randlang
- http://www.catb.org/~esr/retro
- http://www2.latech.edu/~acm/HelloWorld.shtml
- http://homepage.eircom.net/~kmgaughan/esolang/index.html
- http://shakespearelang.sourceforge.net/report/shakespeare
- http://fvdp.homestead.com/files/eso_index.html
- http://en.wikipedia.org/wiki/Hello_world_program_in_esoteric_languages
- http://www.eleves.ens.fr:8080/home/madore/programs/unlambda
- http://www.geocities.com/connorbd/tarpit/tarpit.html
- http://esoteric.sange.fi/orphaned/obslang.html
Whitespace
Complètement Turing, avec 3 caractères seulement. J'ai fait une page qui explique, plus en détail, le paradigme de Whitespace, et donne des informations complémentaires. Pour voir cette page, Cliquer ici
Befunge
Befunge est (sensé être) le premier langage bidimensionnel. Il a été décrit en tant que "un croisement entre Forth et Lemmings". Le langage est interprété, bidimensionnel, basé sur une pile, avec une syntaxe simpliste.
Toutes les commandes de Befunge ont une longueur d'exactement un caractère. Les arguments et les valeurs de retour passent par la pile. Le pointeur (d'instructions) est capable de déplacement non seulement vers l'avant, mais également vers l'arrière, ou de "tourner" à gauche ou à droite, dans un espace d'exécution. Un passe-temps courant, dans Befunge, est d'essayer de compacter une certaine fonction dans peu de caractères (chose plutôt difficile).
Voici un exemple ; le classique "Hello, world !" :
55+".dlrow ,olleH">:#,_@
Quelques liens :
Brainfuck (Brainf***)
Le paradigme de Brainfuck est simple : il y a un tableau d'entiers (d' un octet chacun) et un pointeur sur ce tableau. Tous les entiers sont initialisés à zéro, et le pointeur pointe vers le premier élément. Il ne reste plus qu'à déplacer le pointeur, et à incrémenter/decrémenter la valeur vers laquelle il pointe.
Chaque instruction occupe un seul octet ; et il y a 8 instructions en tout et pour tout.
Facile, n'est-ce-pas ? Voici par exemple un petit "Hello, world!" :
>+++++++++[<++++++++>-]<.>++++++[<+++++>-]<-.+++++++..+++.>>+++++++[<++++++>-]<++.------------.<++++++++.--------.+++.------.--------.>+.>++++++++++.
(pas de retour-chariot : une seule ligne)
Ce langage est assez connu, et on trouve pas mal de ressources.
Quelques liens :
- MuppetLabs
- un Tutorial
- 99 bootles of beer
- http://members.tripod.com/rkusnery/programs.html adresse intéressante ; on y trouve notamment un compilateur Brainfuck qui produit des exécutables (.COM) pour MS/DOS.
- http://fvdp.homestead.com avec un interpréteur de macro Brainfuck.
- http://home.wxs.nl/~faase009 encore une page sur Brainfuck
J'ai trouvé une implémentation de BrainFuck pour .NET (et Mono) :
- http://bluesorcerer.net/esoteric/bf.html BrainFuck pour .NET et Mono.
Ook!
Ook! est un langage prévu pour les orang-outang. Il s'agit, en fait, d'un isomorphisme de Brainfuck.
Q-Bal
Q-bal est dérivé d'une expérimentation d'un langage basé sur les files (FIFO), plutôt que sur les piles (LIFO).
HQ9+
Ce langage, non complètement Turing, est d'une incroyable facilité pour programmer les classiques "Hello, world !", quines et autres "99 bottles of beer". Il est très facile à apprendre.
Il existe une version orientée-objet, HQ9++
Piet
Programmez comme l'art abstrait ! Ce langage utilise 17 instructions, codées par des transitions de couleurs de blocs
Un exemple ? Voici le code-source du classique "hello, world !" :
(blocs d'instructions d'un pixel ; 25 pixels par ligne).
Var'Aq "The Klingon Programming Language"
Le sous-titre, même en anglais, est très facile à comprendre. Encore un langage à pile, assez spéculatif. La version actuelle est pre-martoq 0.5
Un exemple ? L'équivalent du "Hello, world!" (en Klingon : "What do you want, universe?") :
~ nuqneH { ~ 'u' ~ nuqneH disp disp } name
Quelques liens :
Evidemment, il vaut mieux connaitre un peu la langue, et les usages, des Klingons. Pour cela, je vous conseille les sites du Klingon Language Institute.