Aller au contenu principal

Compilation, interprétation et exécution

Un processeur n’exécute pas directement du JavaScript, du Python ou du C. Un outil doit transformer le code source en instructions exploitables.

Compilation avant l’exécution

Un compilateur analyse un programme et produit un autre artefact avant son exécution : code machine, bytecode ou représentation intermédiaire.

#include <stdio.h>

int main(void) {
printf("Bonjour !\n");
return 0;
}
gcc programme.c -o programme
./programme

Le compilateur peut détecter de nombreuses erreurs et optimiser l’ensemble du programme avant son lancement.

Interprétation

Un interpréteur pilote l’exécution à partir du programme et de son environnement d’exécution. L’expression « ligne par ligne » est utile pour débuter, mais elle est incomplète : l’outil analyse généralement le code et peut produire une forme intermédiaire.

print("Bonjour !")

Python compile notamment le code en bytecode avant que la machine virtuelle ne l’exécute.

Les moteurs modernes combinent les approches

Les moteurs JavaScript modernes analysent le code, produisent des représentations intermédiaires et compilent à la volée les portions souvent exécutées. On parle de compilation JIT (just in time).

Il est donc plus juste de poser trois questions :

  1. quelle transformation est faite avant l’exécution ?
  2. quel environnement exécute le résultat ?
  3. quelles optimisations sont réalisées pendant l’exécution ?

Analogie

  • compiler ressemble à préparer et relire tout un itinéraire avant de partir ;
  • interpréter ressemble à voyager avec un guide qui lit et exécute les étapes ;
  • un moteur JIT observe les trajets répétés et prépare des raccourcis pour les passages les plus fréquents.