Quel est le langage de programmation le plus compliqué ? Pourquoi ?
Réponse originale : Quel est le langage de programmation qui est tellement compliqué que seul un génie peut arriver à programmer avec ?
Le langage de programmation Malbolge est réputé pour cela. Voilà à quoi ressemble le très classique Hello, world! en Malbolge :
- (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc
Soyons clair, ce langage a été conçu pour être difficile et il n'a absolument aucun intérêt dans le développement d'un logiciel.
Malbolge
a été créé en 1998. C'est un langage interprété, c'est-à-dire que son
créateur a développé un petit logiciel à qui on donne des programmes
Malbolge et qui les exécute sans avoir besoin de les compiler.
Il
y a une spécification de Malbolge — c'est ce qui permet de savoir
comment écrire un programme dans ce langage, mais elle utilise des
concepts volontairement alambiqués. Par exemple, Malbolge utilise une
arithmétique ternaire, au lieu du binaire auquel les informaticiens sont
habitués.
Pas de
if
, pas de while
,
Malbolge utilise des instructions (un peu comme l'assembleur), il y en a
huit en tout. Les instructions sont représentées par des numéros (4, 5,
23, 39, …).
On ne peut pas directement utiliser le numéro d'une instruction (noté
num_istr
ici), ce serait trop simple. Il faut utiliser un autre numéro (p. ex. c
) :num_instr = ([c] + c) % 94
Attention, ça devient pervers. Le morceau
[c]
signifie qu'on va chercher le contenu de la case mémoire n°c
.
Autrement dit, les instructions dépendent du contenu de la mémoire,
alors que le contenu de la mémoire dépend aussi évidemment des
instructions du programme !
Les programmes écrits en Malbolge peuvent s'auto-modifier.
Je vous fais grâce des autres détails du langage. En bonus, voici le programme Malbolge qui écrit les paroles de la chanson « 99 bottles of beer ».