Langages de programmation interprétés ou compilés: quelle est la différence?

Chaque programme est un ensemble d'instructions, que ce soit pour ajouter deux nombres ou envoyer une requête sur Internet. Les compilateurs et les interprètes prennent du code lisible par l'homme et le convertissent en code machine lisible par ordinateur.

Dans un langage compilé, la machine cible traduit directement le programme. Dans un langage interprété, le code source n'est pas directement traduit par la machine cible. Au lieu de cela, un programme différent , alias l'interpréteur, lit et exécute le code.

D'accord… mais qu'est-ce que cela signifie réellement ?

Imaginez que vous ayez une recette de houmous que vous voulez préparer, mais qu'elle est écrite en grec ancien. Il y a deux façons pour vous, un non-grec ancien, de suivre ses instructions.

Le premier est si quelqu'un l'a déjà traduit en anglais pour vous. Vous (et toute autre personne parlant anglais) pourriez lire la version anglaise de la recette et faire du houmous. Considérez cette recette traduite comme la version compilée .

La deuxième façon est si vous avez un ami qui connaît le grec ancien. Lorsque vous êtes prêt à faire du houmous, votre ami s'assoit à côté de vous et traduit la recette en anglais au fur et à mesure, ligne par ligne. Dans ce cas, votre ami est l'interprète de la version interprétée de la recette.

Langues compilées

Les langages compilés sont convertis directement en code machine que le processeur peut exécuter. En conséquence, ils ont tendance à être plus rapides et plus efficaces à exécuter que les langages interprétés. Ils donnent également au développeur plus de contrôle sur les aspects matériels, comme la gestion de la mémoire et l'utilisation du processeur.

Les langages compilés nécessitent une étape de «construction» - ils doivent d'abord être compilés manuellement. Vous devez «reconstruire» le programme chaque fois que vous devez effectuer une modification. Dans notre exemple de houmous, la traduction entière est écrite avant qu'elle ne vous parvienne. Si l'auteur original décide qu'il souhaite utiliser un autre type d'huile d'olive, la recette entière devra être traduite à nouveau et vous être renvoyée.

Des exemples de langages compilés purs sont C, C ++, Erlang, Haskell, Rust et Go.

Langues interprétées

Les interprètes parcourent un programme ligne par ligne et exécutent chaque commande. Ici, si l'auteur décide qu'il veut utiliser un autre type d'huile d'olive, il pourrait gratter l'ancienne et ajouter la nouvelle. Votre ami traducteur peut alors vous transmettre ce changement au fur et à mesure.

Les langues interprétées étaient autrefois beaucoup plus lentes que les langues compilées. Mais, avec le développement de la compilation juste à temps, cet écart se réduit.

Des exemples de langages interprétés courants sont PHP, Ruby, Python et JavaScript.

Une petite mise en garde

La plupart des langages de programmation peuvent avoir à la fois des implémentations compilées et interprétées - le langage lui-même n'est pas nécessairement compilé ou interprété. Cependant, par souci de simplicité, ils sont généralement appelés comme tels.

Python, par exemple, peut être exécuté soit comme un programme compilé, soit comme un langage interprété en mode interactif. D'un autre côté, la plupart des outils de ligne de commande, des CLI et des shells peuvent théoriquement être classés comme des langages interprétés.

Avantages et inconvénients

Avantages des langages compilés

Les programmes compilés en code machine natif ont tendance à être plus rapides que le code interprété. Cela est dû au fait que le processus de traduction du code au moment de l'exécution ajoute à la surcharge et peut ralentir globalement le programme.

Inconvénients des langages compilés

Les inconvénients les plus notables sont:

  • Temps supplémentaire nécessaire pour terminer toute l'étape de compilation avant le test
  • Dépendance de la plate-forme du code binaire généré

Avantages des langues interprétées

Les langues interprétées ont tendance à être plus flexibles et offrent souvent des fonctionnalités telles que la saisie dynamique et une taille de programme plus petite. De plus, comme les interprètes exécutent eux-mêmes le code du programme source, le code lui-même est indépendant de la plate-forme.

Inconvénients des langues interprétées

L'inconvénient le plus notable est la vitesse d'exécution typique par rapport aux langages compilés.