Différence entre compilateur et interpréteur

Nous écrivons généralement un programme informatique utilisant un langage haut niveau. Un langage haut niveau est un langage compréhensible par nous, les humains. Il contient des mots et des phrases de la langue anglaise (ou autre). Mais un ordinateur ne comprend pas le langage haut niveau. Il ne comprend que les programmes écrits en binaire 0 et 1 appelé le code machine. Un programme écrit en langage évolué s’appelle un code source. Nous devons convertir le code source en code machine, ce que font les compilateurs et les interprètes. Par conséquent, un compilateur ou un interpréteur est un programme qui convertit un programme écrit en langage évolué en un code machine compris par l’ordinateur.
 
 
La différence entre un interpréteur et un compilateur est donnée ci-dessous:
 

Table de comparaison
Interpréteur Compilateur
Convertit le programme en prenant une seule ligne à la fois. Analyse l’ensemble du programme et le traduit dans son ensemble en code machine.
L’analyse du code source prend moins de temps, mais le temps d’exécution global est plus lent. L’analyse du code source prend beaucoup de temps, mais le temps d’exécution global est comparativement plus rapide.
Aucun code d’objet intermédiaire n’est généré, la mémoire est donc efficace. Génère du code d’objet intermédiaire qui nécessite en outre une liaison, nécessite donc davantage de mémoire.
Continue de traduire le programme jusqu’à ce que la première erreur soit rencontrée. Par conséquent, le débogage est facile. Il génère le message d’erreur uniquement après avoir analysé l’ensemble du programme. Par conséquent, le débogage est relativement difficile.
Exemple d’interpréteur: Python, Ruby. Exemple de compilateur: C, C++.

 
Le compilateur et l’interpréteur sont deux manières différentes pour exécuter un programme écrit dans un langage de programmation ou de script.
 

Compilateur


Un compilateur prend tout le programme et le convertit en code objet qui est généralement stocké dans un fichier. Le code objet est également référencé en tant que code binaire et peut être exécuté directement par la machine après la liaison.
 

Interpréteur


Un interpréteur exécute directement des instructions écrites dans un langage de programmation ou de script sans les convertir en un code objet ou un code machine.
 

Conclusion

Le compilateur et l’interpréteur, les deux ont l’intention de faire le même travail mais de façon diffèrent. Le compilateur prend le code source de manière agrégée, tandis que l’interpréteur prend les parties constitutives du code source, c’est-à-dire, instruction par instruction.
 
 

3 réflexions sur “Différence entre compilateur et interpréteur

  • octobre 12, 2020 à 8:33 pm
    Permalien

    Résumé intéressant, avec toutefois quelques imprécisions à mon avis :

    Un interpréteur n’analyse pas forcément le code ligne à ligne. Par contre, il le traduit généralement et l’exécute ligne à ligne. Mais on va garder ça comme explication parce que c’est vrai pour beaucoup d’interpréteurs.

    Tableau, L3 (mémoire). La notion de l’efficacité de mémoire est source de confusion ici, parce qu’un interpréteur utilise généralement plus de mémoire à l’execution que du code compilé, mais éventuellement moins de mémoire durant l’analyse et la traduction. Le surplus de mémoire à l’exécution vient du fait que l’interpréteur nécessite aussi sa propre mémoire, en plus de celle allouée au programme.

    Tableau, L4 (débogage facile). C’est très imprécis. La compilation à ses avantages : les erreurs de syntaxes et de types sont détectées peu importe les entrées que l’on donne au programme, alors que l’interprétation nécessitent généralement d’attendre la ligne en question durant l’execution.

    Table, L5 (examples). Attention à ne pas confondre les langages et les interpréteurs/compilateurs, c’est pas la même chose ! Un langage n’est ni interprété, ni compilé, il permet juste d’expliquer ce que l’ordinateur doit faire. Donc :
    examples d’interpréteurs :
    Interpréteur Python
    Interpréteur Ruby
    examples de compilateurs :
    C : gcc, Clang, mingw, msvc
    C++ : g++, Clang, mingw, msvs

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *