nodelab

A propos des langages exotiques

Pour la beauté du geste

Je suis persuadé que tout programmeur s'est déjà demandé : J'aimerais bien écrire tel programme/application, mais quel serait le meilleur langage pour le faire ?, et si la réponse n'est jamais tranchée à cent pour cent, en mêlant connaissances et envies personnelles, besoin particuliers du programme et les dizaines d'autres facteurs auxquels on veut prêter attention, on arrive toujours plus ou moins à une conclusion satisfaisante.

Au fond, ce qui compte c'est le résultat, que le programme fasse ce qu'il est sensé faire peut importe la façon dont il est fait (je parle du choix du langage bien sûr, je n'encourage personne à coder n'importe comment en laissant de côté toute forme d'optimisation et de lisibilité du code).

Seulement, il existe de nombreuses personnes, qui pensent, et elles n'ont pas tort, que la programmation peut se voir comme une discipline artistique. Et si on la considère en tant que telle, on ne peut plus considérer tel ou tel langage comme un simple outil, mais bien comme un matériau brut, que le programmeur sculpte ligne après ligne.

Et si l'on considère, que le plus beau dans la programmation n'est pas le résultat mais bien le code lui-même, le choix du langage ira vers le plus esthétique, non vers le plus pratique.

Je connais de nombreux programmeurs capables de s'extasier devant la beauté d'une simple ligne de code...

Des langages très peu pratiques

Si on se penche sur le cas de la pure beauté du code en laissant de côté toute forme de pragmatisme, on ne peut pas passer à côté des nombreux langages créés à cet effet, les langages exotiques. Ce qui tombe bien car c'est justement le sujet de ce billet.

Dans ce billet d'introduction, je me contenterai de présenter brièvement une série de langages exotiques. D'autres billets suivront, concentrés sur un langage en particulier.

Si le temps me le permet et si j'en ai l'envie, je me lancerais également quelques petits défis de programmation, comme additionner des nombres par exemple (dans certains langages c'est déjà bien compliqué), et si, en lisant ce billet ou un autre, une envie vous viens de proposer un défi, lâchez le dans les commentaires et j'essayerais peut-être (évitez les propositions du type : Ta k codé 1 ia en Brainfuck, lol je sui tro drol mdr, je ne le ferais de toute façon pas).

Voici donc certains des langages exotiques les plus connus, ou les plus loufoques (ceci est une liste non exhaustive, je ne prétend pas connaitre tous les langages du monde, alors si votre préféré n'est pas cité, c'est soit parce que je ne le connais pas, soit par ce que j'en avais pas envie).

Brainfuck

C'est un des langages exotiques les plus connus, son nom signifie littéralement "masturbation cérébrale". Il a était créé en 1993 par un informaticien suisse, Urban Müller. Il ne comporte que 8 instructions : <, >, -, +, [, ], . et ,.

Hello World! en brainfuck :

++++++++++[>+++++++>++++++++++>+++>+
<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>
.+++.------.--------.>+.>.

Piet

Du nom du peintre abstrait Piet Mondrian, le langage s'inspire de son oeuvre.

Un programme qui affiche "Hi" en Piet :

icnd9zj0xx.png


Broadway Boogie-Woogie, une fameuse oeuvre de Mondrian :

qfbdyenlom.jpg

Shakespeare Programming Language (SPL)

Ce langage, comme le précédent, tire son inspiration de l'art. Cette fois, votre code sera composé comme une pièce de théâtre où les personnages sont des variables.

Voilà à quoi ça ressemble :

Outputting Input Reversedly.

Othello, a stacky man.
Lady Macbeth, who pushes him around till he pops.


                    Act I: The one and only.

                    Scene I: In the beginning, there was nothing.

[Enter Othello and Lady Macbeth]

Othello:
 You are nothing!

                    Scene II: Pushing to the very end.

Lady Macbeth:
 Open your mind! Remember yourself.

Othello:
 You are as hard as the sum of yourself and a stone wall. Am I as
 horrid as a flirt-gill?

Lady Macbeth:
 If not, let us return to scene II. Recall your imminent death!

Othello:
 You are as small as the difference between yourself and a hair!

                    Scene III: Once you pop, you can't stop!

Lady Macbeth:
 Recall your unhappy childhood. Speak your mind!

Othello:
 You are as vile as the sum of yourself and a toad! Are you better
 than nothing?

Lady Macbeth:
 If so, let us return to scene III.

                    Scene IV: The end.

[Exeunt]

Malbolge

Ce langage, qui porte le nom du huitième cercle de l'enfer dans la Divine Comédie de Dante, a pour but d'être le plus difficile au monde.

Extrait d'un programme en Malbolge :

2y05v321r/.-,+$)j'hgeeccaa__]][wZXXmVkTiRPPNjMhgfIdcba`_XA@?==;;9977L5J31MLK-C,A*((&BA@"8!6}
{{y765u-t+rppn,m*)j'h%$#"!~}v{^y\[YutsUkTiRPPNNLhgfH^G\ECCAA??==;;9UTS5K4IN1LKJC,G*)''%%#?>=
}5|3zxxvvttrrppnnl*k('gg|e"c~a__ty\wvuXmVUTinmlNdMbKIedFb[DYB@\?==RWVU7M6K42N1LK.,,G@E('&$@#
>=~;|927xw4uss*/.n,%l#

Il s'agit en réalité d'un langage machine ternaire crypté, ce qui le rend complètement incompréhensible par l'homme.

Je vais m'arrêter là pour l'instant. Pour mon prochain billet sur le sujet, j'essayerais d'écrire une morceau de code dans un de ces langages.

Gloire et Honneur

0 commentaire

Aucun commentaire n'a été posté.

Poster un commentaire