298 private links
LLVM est un "cross-compiler" (compilateur multi-plateformes), donc un outil qui permet de traduire un langage de programmation (LLVM en a même plusieurs) en code "machine", sur plusieurs type d'architectures (d'où le terme "multi-plateformes").
En prime, il arrive à de meilleurs optimisations que les optimisations faites par un humain à travers son code.
Comme montré dans l'article, il se décompose en 2 étapes, qui se traduit par 3 représentations du même algorithme :
La première, avec son "frontend" ("front" en anglais pour "devant"), qui lui permet de "traduire" le code source dans un langage particulier en code intermédiaire LLVM, nommé IR ("Intermediate Representation", ou "Représentation Intermédiaire"). IR est ainsi le cœur de LLVM.
Puis, LLVM traduit son code IR (qui au passage est un code de bas niveau, comme l'est le code assembleur) en code machine avec son "backend" ("back" pour "derrière"). Et vu qu'il est un "cross"-compilateur, il peut donc traduire son code en code machine pour architecture x86 (la plus part des processeurs pour PC), PowerPC, ou ARM (ARM, l'architecture de grand nombre de smartphones).
Ainsi, grâce à LLVM, plus besoin d'écrire directement en langage assembleur, ce qui permet de l'exporter sur plusieurs architectures sans devoir le réécrire, et il serait même meilleur.
Si le résultat est réellement au rendez-vous de tout ce qui a été indiqué, je dis chapeau.
PS : pas contre, ne perdez pas de vu qu'un code a de meilleurs optimisations si on réfléchit à l'algorithme plutôt qu'à son code en lui-même, mais ça, c'est une autre histoire.
(via SebSauvage : http://sebsauvage.net/links/?9HLaMw)
EDIT: ici un avis divergeant sur la solution http://links.thican.net/?EyDTbA