Python est-il un langage interprété ?

Python est-il un langage interprété ?

Vous avez déjà sûrement entendu dire que Python est un langage interprété. Mais qu'est-ce que ça signifie exactement et quelle est la différence avec un langage compilé ?

Publié le 18 novembre 2019 par Thibault
paceTemps de lecture estimé : 13 minutes

Dans le domaine de la programmation, il existe plusieurs types de langages.

On retrouve deux catégories principales qui regroupent la plupart d'entre eux : les langages compilés et les langages interprétés.

Python se retrouve dans la deuxième catégorie.

C'est ce qu'on appelle un langage interprété.

Qu'est-ce qu'un langage interprété ?

Un langage interprété est un langage qui est lu ligne par ligne, par un interpréteur.

L'interpréteur va passer à travers chaque ligne de votre code Python pour le traduire en langage machine (votre ordinateur ne sait pas exécuter du code Python directement, il a besoin de langage machine).

Votre script est donc lu par l'interpréteur à la volée ce qui comporte des avantages et des inconvénients que nous verrons plus loin.

C'est donc tout l'inverse des langages dits compilés qui nécessitent un processus appelé compilation, qui va compiler le code (par exemple du code écrit en C, qui est un langage compilé) dans un exécutable.

C'est le fameux fichier .exe que vous retrouvez sur Windows.

Une fois compilé, un script peut être exécuté par n'importe qui, sans qu'il ait besoin d'avoir un programme spécifique d'installé sur sa machine.

Ce n'est pas le cas de Python qui a absolument besoin d'un interpréteur pour être exécuté.

Si vous donnez votre script Python à un de vos amis qui n'a pas d'interpréteur Python sur sa machine, il ne pourra pas exécuter votre script.

Un langage interprété, c'est donc tout d'abord un langage qui a besoin d'un interpréteur pour fonctionner.

Dans le cas de Python on parle donc de l'interpréteur Python.

L'interpréteur Python

L'interpréteur Python, c'est l'application avec laquelle vous allez exécuter votre script Python.

Sur Windows, c'est l'exécutable python.exe qui se trouve à l'intérieur du dossier dans lequel vous avez installé Python (par exemple C:\Python37\python.exe).

Sur macOS ou Linux, ce fichier se trouve généralement dans /usr/local/bin/python3.

L'interpréteur Python va effectuer trois opérations à chaque fois que vous lui demandez d'exécuter votre script :

  1. Regarder si un fichier .pyc existe déjà pour votre script Python. Si c'est le cas, l'interpréteur passe directement à l'étape 3.
  2. Si aucun fichier .pyc n'existe, l'interpréteur va lire votre script ligne par ligne et le convertir en code binaire qu'il va par la suite écrire dans un fichier .pyc, au même endroit que votre script Python. C'est à ce moment que l'interpréteur peut générer des erreurs de syntaxe (si vous avez oublié un deux points après une condition par exemple).
  3. Pour finir, l'interpréteur va lire le fichier .pyc qu'il vient de générer ou qui existait déjà sur le disque. C'est à ce moment que va se dérouler l'interprétation de votre code en langage machine et que vous aurez potentiellement des erreurs d'exécution. Ce sont des erreurs que l'interpréteur ne peut déceler tant qu'il n'a pas exécuté votre script.

Par exemple si vous faites une division par un nombre qui n'existe pas encore et qui se retrouve être 0 par la suite, vous aurez une erreur, car l'interpréteur n'arrivera pas à réaliser une division par zéro.

Cette étape est par défaut exécuté par CPython, qui est lui-même un interpréteur de bytecode et qui va traduire le fichier .pyc en langage machine. Il existe différentes implémentations du langage Python (je vous en parle en fin d'article).

Il est également possible d'utiliser l'interpréteur Python en mode interactif.

En mode interactif, vous pouvez exécuter des lignes de code qui seront interprétés directement par l'interpréteur Python.

Vous avez probablement déjà utilisé l'interpréteur Python en mode interactif, si vous avez par exemple déjà lancé l'exécutable de Python dans votre Terminal macOS ou Linux.

Interpréteur Python

On reconnaît qu'on est dans un interpréteur Python interactif grâce aux trois signes plus grand que (>>>).

Pour sortir de l'interpréteur Python, on utilise la commande exit().

Un autre programme très connu qui vous permet d'utiliser un interpréteur Python interactif est le programme IDLE.

Idle

IDLE n'est pas un interpréteur Python en tant que tel, c'est un environnement de développement intégré avec Python qui utilise la librairie graphique Tkinter.

Vous pouvez à l'intérieur de IDLE, exécuter des lignes de code Python qui seront interprétés par l'interpréteur Python, tout comme on le ferait directement depuis l'interpréteur interactif de notre Terminal.

Avantages et inconvénients

Un langage interprété comporte des avantages et des inconvénients par rapport à un langage compilé.

✅ Avantage : la simplicité

Le principal avantage d'un langage interprété, c'est sa simplicité. Pour les langages compilés, vous devez passer par le processus de compilation à chaque fois que vous voulez tester votre script. En plus de rajouter une étape, parfois longue, à l'exécution de votre script, la compilation peut parfois être complexe et demande des compétences spécifiques (il faut compiler différemment pour chaque système d'opération par exemple).

Si vous avez déjà programmé en Python vous savez à quel point il est plaisant de pouvoir juste exécuter son script, avoir un retour direct sur les possibles erreurs de syntaxe ou d'exécution, les corriger et recommencer ce processus encore et encore, avec une simplicité et une rapidité à toute épreuve.

Cette simplicité d'exécution et la syntaxe épurée de Python en font un langage de choix pour beaucoup de développeurs qui doivent créer des prototypes ou des applications rapidement. Certains développeurs passent même par Python pour développer un 'proof of concept' de leur programme avant de le développer dans un langage compilé comme le C une fois que leur concept est approuvé.

✅ Avantage : la portabilité

Un autre avantage d'un langage interprété comme Python c'est qu'il est multi-plateforme. Vous pouvez exécuter votre script sur Windows, macOS et Linux pour peu que vous disposiez de l'interpréteur Python sur chaque plateforme.

L'interpréteur Python fera le travail pour vous de convertir votre code en langage que chaque système d'opération sera à même de comprendre. Cela ne veut cependant pas dire que vous n'aurez pas à adapter votre code pour chaque système d'opération, il existe quelques différences que l'interpréteur ne pourra pas résoudre pour vous.

🔴 Inconvénient : la rapidité d'exécution

Logiquement, vu que notre script doit d'abord être converti en langage binaire par l'interpréteur Python, l'exécution d'un script Python sera plus lente qu'un programme écrit en C et compilé qui sera lu directement en langage machine par notre ordinateur.

Même si ces différences en termes de performances tendent à se faire de moins en moins sentir avec les années, elles restent encore présentes. Si votre objectif est de travailler sur des programmes qui demandent des performances inégalées, Python n'est peut-être pas le meilleur langage pour vous.

Cela ne veut pas dire que Python n'est fait que pour des tâches simples et peu gourmandes en ressources. La preuve, Python est LE langage principal utilisé pour tout ce qui touche au Machine Learning et Deep Learning. Ce qu'il faut comprendre c'est que dans ce cas, Python n'est utilisé que comme point d'entrée et comme manière de définir des procédures qui seront ensuite exécutées avec des langages plus performants comme le C++ (et probablement sur d'autres machines que la vôtre).

De même avec la librairie Numpy qui permet d'effectuer des calculs scientifiques avec Python.

Vous écrivez vos calculs en code Python, mais les calculs en tant que tels sont ensuite exécutés en C ou C++, ce qui permet de réaliser des calculs scientifiques poussés avec Python et ce rapidement.

Oubliez tout ce que vous venez de lire

Maintenant, il est temps de briser un peu le miroir de la simplicité et de vous demander d'oublier tout ce que vous venez de lire.

👉 Ce n'est pas le langage qui est interprété, mais la façon dont on l'utilise.

En effet, la séparation des langages de programmation en ces deux catégories n'a pas vraiment de sens.

Le monde n'est pas noir et blanc et nous avons vu plus haut que le code Python que nous exécutons n'est pas exécuté comme tel et a besoin d'être traduit en langage machine pour être compris par notre ordinateur.

Ainsi, on peut dire sans mentir que Python est à la fois un langage interprété et un langage compilé. Ce n'est pas le langage en lui-même qui est interprété ou compilé, mais la façon dont on l'utilise.

Quand on développe en Python, on n'a pas besoin de passer nous même par l'étape de compilation, mais cela ne veut pas dire pour autant que notre script Python n'est pas compilé en langage machine. C'est juste que la façon dont nous utilisons Python fait que nous n'avons pas besoin de passer par cette étape nous même, l'interpréteur Python s'en charge pour nous.

Plusieurs implémentations de Python existentPour tout vous dire, il existe en fait plusieurs implémentations de Python.

Boom

L'implémentation par défaut est faite avec CPython, un programme qui va traduire le bytecode (le code contenu dans les fichiers .pyc) en langage machine.

Mais il existe d'autres implémentations du langage, notamment PyPy (prononcé PaïPaï 😅), qui utilise un système de compilation à la volée (Just-In-Time compiler en anglais ou JIT compiler pour les intimes). L'un des avantages de l'utilisation de PyPy pour implémenter du code Python est la possibilité de bénéficier d'une compilation à la volée, ce qui se traduit par une exécution plus rapide de votre code.

On pourrait débattre pendant des heures sur les définitions d'interprété et compilé, l'important finalement est de bien comprendre les avantages et les inconvénients du langage qu'on utilise afin de pouvoir choisir la bonne technologie pour nos besoins.

Ordinateur erreur