Qu'est-ce qu'un programme compilateur?

  Compiler
  Schéma de compilation multi-source multi-cible.

Un compilateur est un programme informatique qui transforme un code source écrit dans un langage de programmation (le langage source) en un autre langage informatique (le langage cible).

Pour qu'il puisse être exploité par la machine, le compilateur traduit le code source, écrit dans un langage de haut niveau d'abstraction, facilement compréhensible par l'humain, vers un langage de plus bas niveau, un langage d'assemblage ou langage machine. Dans le cas de langage semi-compilé (ou semi-interprété), le code source est traduit en un langage intermédiaire, sous forme binaire (code objet ou bytecode), avant d'être lui-même interprété ou compilé.

Inversement, un programme qui traduit un langage de bas niveau vers un langage de plus haut niveau est un décompilateur.

Un compilateur effectue les opérations suivantes : analyse lexicale, pré-traitement (préprocesseur), analyse syntaxique (parsing), analyse sémantique, et génération de code optimisé.

Quand le programme compilé (code objet) peut être exécuté sur un ordinateur dont le processeur ou le système d'exploitation est différent de celui du compilateur, on parle de compilation croisée.

La compilation est souvent suivie d'une étape d’édition des liens, pour générer un fichier exécutable.

On distingue deux options de compilation :

  • Ahead-of-time (AOT), où il faut compiler le programme avant de lancer l'application : c'est la situation traditionnelle.
  • Compilation à la volée (Just-in-Time, en abrégé JIT) : cette faculté est apparue dans les années 1980 (par ex. avec Tcl/Tk).

Historique

Les logiciels des premiers ordinateurs étaient écrits en langage assembleur. Les langages de programmation de plus haut niveau (dans les couches d'abstraction) n'ont été inventés que lorsque les avantages apportés par la possibilité de réutiliser le logiciel sur différents types de processeurs sont devenus plus importants que le coût de l'écriture d'un compilateur. La capacité de mémoire très limitée des premiers ordinateurs a également posé plusieurs problèmes techniques dans le développement des compilateurs.

Vers la fin des années 1950, des langages de programmation indépendants des machines font pour la première fois leur apparition. Par la suite, plusieurs compilateurs expérimentaux sont développés. Le premier compilateur, A-0 System (pour le langage A-0) est écrit par Grace Hopper, en 1952. L'équipe FORTRAN dirigée par John Backus d'IBM est considérée comme ayant développé le premier compilateur complet, en 1957. COBOL, développé en 1959 et reprenant largement des idées de Grace Hopper est le premier langage à être compilé sur plusieurs architectures.

Dans plusieurs domaines d'application, l'idée d'utiliser un langage de plus haut niveau d'abstraction s'est rapidement répandue. Avec l'augmentation des fonctionnalités supportées par les langages de programmation plus récents et la complexité croissante de l'architecture des ordinateurs, les compilateurs se sont de plus en plus complexifiés.

En 1962, le premier compilateur « auto-hébergé » - capable de compiler son propre code source en langage de haut niveau - est créé, pour le LISP, par Tim Hart et Mike Levin au Massachusetts Institute of Technology (MIT). À partir des années 1970, il est devenu très courant de développer un compilateur dans le langage qu'il doit compiler, faisant du Pascal et du C des langages de développement très populaires.

RETOUR

  • 60 Utilisateurs l'ont trouvée utile
Cette réponse était-elle pertinente?

Articles connexes

Qu'est-ce qu'un nom de domaine?

Un nom de domaine (NDD en notation abrégée française ou DN pour Domain Name en anglais) est, dans...

Qu'est-ce qu'un médias sociaux?

L’expression « médias sociaux » est de plus en plus utilisée et tend à remplacer le terme de Web...

Qu'est-ce DNS?

Le Domain Name System (ou DNS, système de noms de domaine) est un service permettant de traduire...

Qu'est-ce que le Cloud Computing?

Le cloud computing, ou l’informatique en nuage ou nuagique ou encore l’infonuagique (au...

Quel est le protocole Internet IPv6?

IPv6 (Internet Protocol version 6) est un protocole réseau sans connexion de la couche 3 du...

Powered by WHMCompleteSolution