Compilation vs Interprétation : Fonctionnement et Comparaison Langages

Page 1 sur 2Lecteur de document UniversityLib

Compilation vs Interprétation : Fonctionnement et Comparaison Langages

Programming, Math, etc. · textbook

Voir tous les documents en programmation

INTRODUCTION

Un compilateur est un programme qui lit un autre programme, écrit dans un langage source, et

le transforme en un programme équivalent, écrit dans un langage cible, compréhensible par le

microprocesseur.

Fig. 1. Chaîne de développement d'un programme

Tout programme écrit dans un langage de haut niveau, dans lequel il est fait abstraction de la

structure et des détails de l’ordinateur sur lequel les programmes sont destinés à être exécutés, ne

peut être exécuté par un ordinateur que s'il est traduit en instructions exécutables. Ces instructions

sont écrites en langage machine, ceux sont des instructions élémentaires directement exécutables

par le microprocesseur.

Une phase importante qui intervient après la compilation est la phase d'éditions de liens. Un

Publicité

éditeur de liens est un programme qui résout, entre autres, les références à des appels de routines

dont le code est conservé dans des librairies. L'édition de liens est faite avant l'exécution du

programme.

Introduction

2

Il ne faut pas confondre compilateurs et interpréteurs. En effet, en utilisant un compilateur, le

traitement d'un programme se fait en bloc: on lit tout le programme, on le traduit, et enfin, on

l'exécute. Par contre, en utilisant un interpréteur, le traitement d'un programme se fait instruction

par instruction: on lit l'instruction, on la traduit, puis, on l'exécute. A l'inverse d'un compilateur, un

interpréteur travaille simultanément sur le programme et sur les données. L'interpréteur doit être

présent sur le système à chaque fois que le programme est exécuté, ce qui n'est pas le cas avec un

Publicité

compilateur. Généralement, les interpréteurs sont assez petits mais le programme est plus lent

qu'avec un langage compilé. Autre inconvénient des interpréteurs, on ne peut pas cacher le code, et

donc garder des secrets de fabrication: toute personne ayant accès au programme peut le consulter

et le modifier comme elle le veut. Les langages interprétés sont souvent plus simples à utiliser et

tolèrent plus d'erreurs de codage que les langages compilés. Parmi les langages compilés, nous

citons Pascal, C, C++, ADA, Fortran et Cobol. Parmi les langages interprétés, nous citons Basic,

CaML, Lisp, Perl et Prolog.

Il existe des langages qui sont à mi-chemin entre l'interprétation et la compilation. On les

appelle langages p-code. Le code source est traduit dans une forme binaire compacte, en pseudo-

code ou p-code, qui n'est pas encore du code machine. Lorsqu’on exécute le programme, ce p-code

est interprété. A titre d’exemple, en Java, le programme source est compilé pour obtenir un fichier

Publicité

en byte code (.class) qui sera interprété par une machine virtuelle. Autre langage p-code: Python.

Les interpréteurs de p-code peuvent être relativement petits et rapides, si bien que le p-code peut

s'exécuter presque aussi rapidement que du binaire compilé. En outre, les langages p-code peuvent

garder la flexibilité et la puissance des langages interprétés.

La compilation n'est pas limitée à la traduction d'un programme écrit dans un langage de haut

niveau en un programme écrit dans un langage machine. Cela peut être aussi :

(i) La traduction d'un programme écrit dans un langage de haut niveau vers un programme

écrit dans un autre langage de haut niveau. Par exemple, une traduction de Pascal vers C, ou de

Java vers C++.

(ii) La traduction d'un programme écrit dans un langage de bas niveau vers un programme

écrit dans un langage de haut niveau. Dans ce cas, on parle de décompilation. Par exemple,

Publicité

retrouver le code C à partir d'un code machine.

(iii) La traduction d'un texte écrit dans un langage quelconque vers un texte écrit dans un

autre langage quelconque. Par exemple, une traduction de word vers html ou de pdf vers ps.

Cependant, dans ce cours nous nous intéressons uniquement au cas de la traduction d'un

programme écrit dans un langage de haut niveau en un programme écrit dans un langage machine.

*