Un traducteur ou processeur de langage de programmation est un programme informatique qui convertit les instructions de programmation écrites sous une forme pratique pour l'homme en codes de langage machine que les ordinateurs comprennent et traitent. Il s'agit d'un terme générique qui peut désigner un compilateur , un assembleur ou un interprète , c'est-à-dire tout ce qui convertit le code d'un langage informatique en un autre. Il s'agit notamment des traductions entre des langages informatiques de haut niveau et lisibles par l'homme tels que C++ et Java , des langages de niveau intermédiaire tels que le bytecode Java , des langages de bas niveau tels que le langage assembleur et le code machine , et entre des niveaux de langage similaires sur différentes plates-formes informatiques , ainsi que de l'un d'entre eux à l'un d'entre eux. Les logiciels et le matériel représentent différents niveaux d'abstraction en informatique. Les logiciels sont généralement écrits dans des langages de programmation de haut niveau, qui sont plus faciles à comprendre et à manipuler pour les humains, tandis que les implémentations matérielles impliquent des descriptions de bas niveau des composants physiques et de leurs interconnexions. Le calcul de traduction facilite la conversion entre ces niveaux d'abstraction. Dans l’ensemble, le calcul de traduction joue un rôle crucial pour combler l’écart entre les implémentations logicielles et matérielles, permettant aux développeurs de tirer parti des points forts de chaque plate-forme et d’optimiser les performances, l’efficacité énergétique et d’autres mesures en fonction des exigences spécifiques de l’application.
Processeurs de langage de programmation
Le processus de développement logiciel est sensiblement différent selon le type de traducteur utilisé par un développeur, cela diffère bien sûr d'un traducteur à l'autre. Les étapes du processus de développement qui sont influencées par un traducteur comprennent l'étape de programmation initiale, l' étape de débogage et surtout le processus d'exécution. Les facteurs qui sont affectés au cours de ces étapes comprennent les performances du code, la vitesse de rétroaction pour le processus de débogage, les fonctionnalités du langage et l'indépendance de la plate-forme. Certains des processeurs de langage de programmation les plus notables utilisés pour traduire le code sont les compilateurs , les interprètes et les assembleurs .
Compilateurs
Le logiciel de compilation interagit avec le code source en le convertissant généralement d'un langage de programmation de niveau supérieur en code objet qui peut ensuite être exécuté par l' unité centrale de traitement (CPU) de l'ordinateur. Le code objet créé par le compilateur est constitué de code lisible par machine que l'ordinateur peut traiter. Cette étape du processus informatique est connue sous le nom de compilation. L'utilisation d'un compilateur conduit à une séparation dans le processus de traduction et d'exécution. Après la compilation, le nouveau code objet est enregistré séparément du code source, ce qui fait que le code source n'est plus nécessaire pour le processus d'exécution. Avec les programmes de compilation, le processus de traduction se produit une seule fois, ce qui donne un code efficace qui peut être exécuté rapidement un nombre illimité de fois.
Il y a des avantages évidents à traduire du code de haut niveau avec un compilateur.
- La compilation permet d'accélérer le temps d'exécution du programme. Le code étant traduit avant l'exécution, ses résultats sont optimisés et rapides.
- Les compilateurs sont plus idéaux pour protéger le code contre le plagiat et empêcher l’utilisation du code source par une partie non autorisée.
- Le code objet ne doit être créé qu'une seule fois lors de la compilation du code source.
La traduction de code de haut niveau avec un compilateur présente des inconvénients évidents.

- Le code objet produit lors de la compilation est spécifique à l' architecture du jeu d'instructions (ISA) d'une machine. Il en résulte un code objet qui dépend d'un type de machine spécifique pour s'exécuter.
- La phase de débogage du processus de développement ne peut pas démarrer tant que le programme n'est pas entièrement compilé. Les erreurs ne sont visibles qu'après la compilation.
- Tout code source modifié doit être entièrement recompilé pour être exécuté à nouveau.
Certains langages de programmation notables qui utilisent des compilateurs incluent :
Interprètes
Les programmes interpréteurs fonctionnent en interprétant le code de haut niveau en code exploitable par la machine tout en exécutant simultanément les instructions ligne par ligne. Contrairement aux compilateurs, les interprètes n'ont pas besoin de compiler le code avant d'exécuter les instructions. Le processus de traduction et d'exécution s'effectue simultanément et est interrompu en cas d'erreur dans le programme. L'utilisation d'un interpréteur permet aux développeurs de tester et de modifier le code en temps réel. Cela facilite le processus de débogage et contribue à rendre le code plus efficace. Étant donné que le processus de traduction et d'exécution s'effectue simultanément, le temps d'exécution des programmes interpréteurs est substantiel.
Il y a des avantages évidents à traduire du code de haut niveau avec un interpréteur.
- Étant donné que le code objet n’est pas créé lors du processus d’interprétation, moins de mémoire est nécessaire pour le code.
- Les langages interpréteurs ne créent pas de code spécifique à la machine et peuvent être exécutés sur n'importe quel type de machine.
- Le processus de développement et de débogage est généralement plus rapide en raison d'une moindre complexité et d'une plus grande flexibilité.
La traduction de code de haut niveau avec un interpréteur présente des inconvénients évidents.
- Les programmes nécessitent qu'un interpréteur soit installé sur la machine pour pouvoir les exécuter et les interpréter.
- Le temps d'exécution du programme est plus lent que celui d'un compilateur.
Certains langages de programmation notables qui utilisent des interprètes incluent :
Assembleurs
Un programme assembleur fonctionne en convertissant le code d'assemblage de bas niveau en un code machine conventionnel lisible par le processeur. Le but du langage assembleur, comme d'autres langages de codage, est de rendre le processus de programmation plus convivial que la programmation en langage machine. Les langages assembleurs utilisent des dispositifs mnémotechniques et des adresses symboliques pour différencier les opcodes, les opérandes et les adresses mémoire spécifiques. Beaucoup de ces composants ne sont pas facilement lisibles par les humains et, par conséquent, les mnémotechniques, les symboles et les étiquettes rendent le code déchiffrable. L'assembleur fonctionne en traitant le code une ligne à la fois, puis passe à l'instruction suivante. Pour éliminer les problèmes qui se produisent en raison des emplacements d'adressage, le processus de traduction connu sous le nom d'assemblage est généralement effectué en deux passes. La première passe d'assemblage est effectuée afin d'identifier les adresses binaires qui correspondent aux noms symboliques. Ceci est essentiel pour guider la deuxième passe qui est la traduction ligne par ligne en langage machine.
Les assembleurs couramment utilisés incluent :
- Langages d'assemblage x86 (utilisés dans les processeurs Intel et AMD)
- Langage d'assemblage ARM (utilisé dans les appareils mobiles)
- Langage d'assemblage MIPS (utilisé dans les consoles de jeu)
- Langage d'assemblage PowerPC
- Langage d'assemblage LC-3 (utilisé principalement dans l'éducation pour programmer l'ordinateur LC-3)