35 votes

Python est-il interprété (comme Javascript ou PHP)?

Je ne sais pratiquement rien de Python mais j'ai décidé d'intervenir. Je suis curieux cependant, est-ce que Python est strictement interprété au moment de l'exécution, ou peut-il être utilisé pour développer des programmes qui s'exécutent en tant qu'applications en arrière-plan (comme une application Java ou un programme C) ?

84voto

Brian Points 48423

Comme les réponses variées vais vous dire, la ligne entre interprété et compilé n'est plus aussi claire qu'elle l'était lorsque ces termes ont été inventés. En fait, c'est aussi quelque chose d'une erreur de considérer les langues comme étant interprété ou compilé, comme les différentes implémentations de langues peuvent faire des choses différentes. Ces jours, vous pouvez trouver à la fois C interpréteurs et compilateurs Javascript.

Même lorsque l'on regarde une mise en œuvre, les choses ne sont toujours pas claires. Il y a plusieurs niveaux d'interprétation. Voici quelques-uns des gradations entre interprété et compilé:

  1. Pure interprétation. Assez bien ce qu'il dit sur l'étain. Lire une ligne de source et de faire ce qu'il dit. Ce n'est pas réellement fait par de nombreuses productions langues - à peu près juste des choses comme des scripts shell.

  2. Tokenisation + interprétation. Un trivial d'optimisation sur le dessus de. Plutôt que d'interpréter chaque ligne à partir de zéro, c'est d'abord tokenised (qui est, plutôt que de voir une chaîne comme "impression 52 + x", il est traduit dans un flux de jetons (par exemple. [PRINT_STATEMENT, INTEGER(52), PLUS_SIGN, IDENTIFIER('x')] ) pour éviter d'effectuer plusieurs fois que l'état de l'interprétation. De nombreuses versions de base travaillé de cette façon.

  3. Le Bytecode de la compilation. C'est l'approche adoptée par les langues comme Java et C# (mais voir ci-dessous). Le code est transformé instructions pour une "machine virtuelle". Ces instructions sont ensuite interprétées. C'est également l'approche adoptée par python (ou au moins disponible, le plus commun de mise en œuvre.) Le Jython et Ironpython implémentations également faire cette démarche, mais la compilation du bytecode pour le Java et le C# machines virtuelles resepectively.

  4. Bytecode + Juste au Moment de la compilation. Comme ci-dessus, mais plutôt que l'interprétation du bytecode, le code qui doit être effectué est compilée à partir du bytecode au moment de l'exécution, puis sur exécuter. Dans certains cas, cela peut surpasser la compilation native, comme il est libre de réaliser l'analyse de l'exécution du code, et peut utiliser des fonctionnalités spécifiques du processeur actuel (alors que la compilation statique peut avoir besoin de compiler pour un plus petit dénominateur commun de l'UC). Plus tard, des versions de Java et C# dans cette approche. Psyco effectue cette pour python.

  5. Natif de la machine-la compilation du code. Le code est compilé pour le code machine du système cible. Vous pouvez penser que nous avons maintenant complètement éliminé de l'interprétation, mais même ici, il y a des subtilités. Certains le code machine des instructions ne sont pas réellement mises en oeuvre directement dans le matériel, mais qui sont en fait mis en œuvre par microcode - même le code machine est parfois interprété!

50voto

John Millikin Points 86775

Il y a plusieurs questions ici:

  1. Non, Python n'est pas interprété. L'implémentation standard compile en bytecode, puis s'exécute dans une machine virtuelle. De nombreux moteurs JavaScript modernes le font également.
  2. Quelle que soit l'implémentation (interprète, VM, code machine), tout ce que vous voulez peut s'exécuter en arrière-plan. Vous pouvez exécuter des scripts shell en arrière-plan, si vous le souhaitez.

24voto

David Z Points 49476

Techniquement, le Python est compilé en bytecode et ensuite interprétés dans une machine virtuelle. Si le Python compilateur est capable d'écrire le pseudo-code dans un .pyc fichier, il sera (normalement) à le faire.

D'autre part, il n'y a pas explicite étape de compilation en Python qu'il y a avec Java ou C. du point de vue du développeur, il ressemble Python est juste l'interprétation de la .py fichier directement. De Plus, Python propose une invite de commandes où vous pouvez taper des instructions Python et de les faire exécuter immédiatement. De sorte que le flux de travail dans Python est beaucoup plus semblable à celui d'un langage interprété que celle d'un langage compilé. Pour moi (et beaucoup d'autres développeurs, je suppose), que la distinction des flux de travail est plus important que de savoir si il y a un intermédiaire bytecode pas ou non.

4voto

John T Points 14067

Python est un langage interprété mais c'est le bytecode qui est interprété au moment de l'exécution. Il existe également de nombreux outils qui peuvent vous aider à exécuter vos programmes en tant que service Windows / démon UNIX.

2voto

user90052 Points 397

Oui, Python est interprété, mais vous pouvez également les exécuter en tant qu'applications de longue durée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X