Citation :
Qu'est ce que la compilation ?
Tout programmeur utilise jour après jour un outil essentiel à la réalisation de programmes informatiques : le compilateur. Un compilateur est un logiciel particulier qui traduit un programme écrit dans un langage de haut niveau (par le programmeur) en instructions exécutables (par un ordinateur). C'est donc l'instrument fondamental à la base de tout réalisation informatique.
Tout programme écrit dans un langage de haut niveau (dans lequel il est fait abstraction (sauf pour quelques instructions) de la structure et des détails du calculateur 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 par l'ordinateur (langage machine, instructions élémentaires directement exécutables par le processeur).
Une autre phase importante qui intervient après la compilation pour obtenir un exécutable est la phase d'éditions de liens. Un éditeur de liens résoud entre autres les références à des appels de routines dont le code est conservé dans des librairies. En général, un compilateur comprend une partie éditeur de liens. Nous n'en parlerons pas ici.
En outre, sur les systèmes modernes, l'édition des liens est faite à l'éxécution du programme ! (le programme est plus petit et les mises à jour plus faciles).
On ne parlera pas non plus de la précompilation (cf préprocesseur C).
Attention, il ne faut pas confondre les compilateurs et les interpréteurs !
Un compilateur est un programme (de traduction automatique d'un programme écrit dans un langage source en un programme écrit dans un langage cible).
Exemples de langages compilés : Pascal, C, C++, ADA, Fortran, Cobol
Au lieu de produire un programme cible comme dans le cas d'un compilateur, un interprète exécute lui même au fur et à mesure les opérations spécifiées par le programme source. Il analyse une instruction après l'autre puis l'exécute immédiatement. A l'inverse d'un compilateur, il travaille simultanément sur le programme et sur les données. Généralement les interpréteurs sont assez petits.
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 compilateur. Généralement les interpréteurs sont assez petits, mais le programme est plus lent qu'avec un langage compilé. Autre inconvénient : 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 il le veut. Par contre, les langages interprétés sont souvent plus simples à utiliser et tolèrent plus d'erreurs de codage que les langages compilés.
Exemples de langages interprétés : BASIC, scheme, CaML, Tcl, LISP, Perl, Prolog
|