Qu'est-ce qu'une langue intermédiaire?
En programmation informatique, lorsque le compilateur analyse le code source lisible par l'homme, le compilateur traduit souvent les commandes source en une séquence d'instructions qui ne sont pas du code machine natif mais qui peuvent être traitées, optimisées ou compilées par le compilateur ou un autre logiciel. outils. Les fichiers produits contiennent des instructions dites dans un langage intermédiaire, car le langage utilisé par le compilateur n’a pas de signification pour le système d’exploitation plus large, pas plus que le langage utilisé par le programmeur pour écrire le code en premier lieu. est un langage qui sert de pont entre l’écriture et l’exécution du programme. Un langage intermédiaire est parfois utilisé pour permettre au compilateur de faire des optimisations très précises afin que le programme s'exécute plus efficacement, mais il peut également être utilisé pour produire des fichiers de sortie portables entre différents systèmes incompatibles. La syntaxe réelle du langage peut ressembler à du code machine ou à d'autres types de bytecode non lisible par l'homme, ou bien être simplement un langage de programmation informatique multiplate-forme existant.
Lorsqu'il est utilisé pour l'optimisation du compilateur, un compilateur de langage prend chaque instruction dans un fichier de code source et décompose la commande en langage intermédiaire. Une seule instruction de programmation lisible par l'homme peut se décomposer en plusieurs dizaines d'instructions en langage machine. Le langage intermédiaire crée ainsi un niveau d'abstraction que le compilateur peut utiliser pour identifier les zones du code dans lesquelles des optimisations peuvent être effectuées sans devoir au préalable lier le code. toutes les implémentations ou bibliothèques natives. Une fois terminé, le fichier de code intermédiaire peut ensuite être compilé pour créer un fichier binaire natif, ou il peut être exécuté via un autre programme, appelé interpréteur, qui exécutera le code en le compilant selon les instructions natives.
Certains langages, tels que Java®, utilisent un langage intermédiaire pour créer des fichiers compilés optimisés mais également portables vers d'autres systèmes informatiques. Ce type de code est parfois appelé bytecode et ressemble au code machine ou au langage d'assemblage. Le bytecode est stocké dans des fichiers de manière indépendante de la plate-forme, ce qui signifie qu'il peut être transféré sur tout système informatique ou périphérique pouvant exécuter un interpréteur. Une fois que le bytecode est sur un système, il peut être exécuté en tant que programme interprété ou compilé pour s'exécuter de manière native sur le système cible.
Dans certains cas, un langage informatique est conçu pour faciliter la programmation dans un but spécifique, tel qu'une application Web interactive, mais les concepteurs ne souhaitent pas inclure de compilateurs, d'interprètes ou de plug-ins personnalisés pour différents systèmes. Dans ces cas, le langage intermédiaire du compilateur peut être un langage existant ayant déjà des interprètes multi-plateformes établis. Le langage intermédiaire résultant dans ce cas est lisible par l'homme. Le langage JavaScript® est un exemple de langage de programmation utilisé également comme langage intermédiaire. Il présente l'avantage de pouvoir s'exécuter dans presque tous les navigateurs Web, sur toutes les plateformes, à partir de 2011.