La machine virtuelle Python
Au cœur même de l'interpréteur Python, nous trouvons la Machine Virtuelle Python (PVM). Elle représente le moteur vital qui insuffle l'énergie nécessaire au bytecode généré par vos programmes Python.
Quelle est donc sa fonction ? Au lancement d'un programme Python, le code source est premièrement converti en bytecode. C'est ensuite le rôle de la PVM de prendre le relais pour exécuter ce dernier. Le processus ne s'opère pas ligne par ligne directement via l'interpréteur, mais à travers l'exécution du bytecode. Cette démarche, couramment désignée sous le terme d'interprétation du bytecode, se réalise de manière automatique dès l'exécution de votre code Python. C'est en quelque sorte le travail d'une équipe invisible, agissant sans relâche en coulisses pour vous épargner toute intervention. Ce débat vise simplement à lever le voile sur ces mécanismes internes.
Ainsi, l'arsenal de Python ne se limite pas à un interpréteur ; il inclut également un compilateur de bytecode.
Mais pourquoi Python prend-il la peine de transformer le programme en bytecode ?
Le bytecode représente en fait une version épurée de votre code source Python.
Il agit comme une cartographie optimisée de votre code, lui permettant de s'exécuter plus promptement par rapport à l'interprétation classique ligne par ligne d'un programme.
La Machine Virtuelle Python est un élément fondamental de l'implémentation standard de Python, affectueusement nommée CPython, et est conçue en langage C. Elle est donc rapide, efficace et capable de s'adapter à une vaste gamme de plateformes matérielles.
La PVM enrichit également la portabilité de Python en tant que langage de programmation.
Le bytecode n'est pas un code machine spécifique à une plateforme. Autrement dit, il ne se dédie pas à un matériel particulier mais reste loyalement lié à la Machine Virtuelle Python.
Le bytecode Python peut ainsi être exécuté sur toute implémentation de la PVM, sur n'importe quel système d'exploitation pourvu d'un interpréteur Python, indépendamment du type de matériel ou de système d'exploitation.
Cette flexibilité vous assure de pouvoir faire tourner le même programme Python sous Windows, Linux ou Mac OS sans le moindre obstacle.
Cependant, il est crucial de dissiper certaines confusions concernant la PVM. Elle ne se confond pas avec les "machines virtuelles" au sens traditionnel du terme.
Il est important de préciser que, bien que la PVM constitue une pierre angulaire de l'architecture de Python, elle ne se définit pas comme une "machine virtuelle" dans l'acception usuelle du terme, à l'instar de ce que l'on trouve chez Java ou .NET.
Python ne s'appuie pas sur un environnement d'exécution Just-In-Time (JIT) comparable à ceux de Java ou de .NET.
De ce fait, la PVM ne peut prétendre offrir les mêmes garanties en termes de sécurité ou d'isolation que celles associées à une "machine virtuelle" au sens strict.