C’est simplement une question que j’avais en lisant sur les langages interprétés et compilés.
Ruby est sans aucun doute un langage interprété puisque le code source est traité par un interpréteur au moment de l'exécution.
Au contraire, C est un langage compilé, car il faut d'abord compiler le code source en fonction de la machine, puis l'exécuter. Ce résultat est une exécution beaucoup plus rapide.
J'arrive maintenant à Python :
- Un code python ( somefile.py ) lors de l’importation crée un fichier ( somefile.pyc ) dans le même répertoire. Supposons que l'importation s'effectue dans un shell Python ou un module Django. Après l'importation, je modifie un peu le code et exécute à nouveau les fonctions importées pour constater que l'ancien code est toujours en cours d'exécution. Cela suggère que les fichiers * .pyc sont des fichiers python compilés similaires aux fichiers exécutables créés après la compilation d'un fichier C, bien que je ne puisse pas exécuter directement le fichier * .pyc.
- Lorsque le fichier python (somefile.py) est exécuté directement (./somefile.py ou python somefile.py), aucun fichier .pyc n'est créé et le code n'est exécuté que lorsqu'il indique un comportement interprété.
Celles-ci suggèrent qu'un code python est compilé chaque fois qu'il est importé dans un nouveau processus pour créer un fichier .pyc alors qu'il est interprété lorsqu'il est exécuté directement.
Alors, quel type de langue devrais-je le considérer comme? Interprété ou compilé? Et comment son efficacité se compare-t-elle aux langages interprétés et compilés?
Selon la page Langages interprétés de wiki , celui-ci est répertorié en tant que langage compilé pour le code de machine virtuelle. Qu'entend-on par là?
RUN
. C'était comme si vous aviez un compilateur qui effectuait l'étape de lexing puis produisait un flux de jetons qui devaient être reparsés chaque fois que le programme était exécuté. Pas du tout comme la compilation de javac
code- octet moderne telle que réalisée par, disons , qui englobe le lexing, l’analyse et l’optimisation.