Python是否在运行时严格解释,还是可以用于开发作为后台应用程序运行的程序(如Java应用程序或C程序)?
Bri*_*ian 83
正如各种各样的回答告诉你的那样,解释和编译之间的界限不再像创造这些术语时那样清晰.实际上,将语言视为解释或编译也是错误的,因为不同的语言实现可能会做不同的事情.这些天你可以找到C解释器和Javascript编译器.
即使在查看实施时,事情仍然不明确.有各种解释.以下是解释和编译之间的一些渐变:
纯粹的解释.几乎就是它在锡上所说的.阅读一系列来源并立即按照说明进行操作.这实际上并不是由许多生产语言完成的 - 几乎就像shell脚本一样.
标记化 +解释.以上是一个微不足道的优化.它不是从头开始解释每一行,而是首先进行标记(即,不是看到像"print 52 + x"这样的字符串,而是将其转换为标记流(例如.[PRINT_STATEMENT, INTEGER(52), PLUS_SIGN, IDENTIFIER('x')])以避免重复执行该解释状态.许多版本基本的工作方式.
字节码编译.这是Java和C#等语言采用的方法(尽管见下文).代码转换为"虚拟机"的指令.然后解释这些指令.这也是python采用的方法(或者至少是cpython,最常见的实现.)Jython和Ironpython实现也采用这种方法,但分别编译为Java和C#虚拟机的字节码.
Bytecode + Just in Time编译.如上所述,而不是解释字节码,将执行的代码从执行点的字节码编译,然后运行.在某些情况下,这实际上可以胜过本机编译,因为它可以自由地对代码执行运行时分析,并且可以使用当前处理器的特定功能(而静态编译可能需要针对最小公分母CPU进行编译).Java的更高版本和C#使用这种方法. Psyco为python执行此操作.
本机机器代码编译.代码被编译为目标系统的机器代码.你可能认为我们现在完全取消了解释,但即使在这里也有微妙之处.一些机器代码指令实际上并不直接在硬件中实现,但实际上是通过微代码实现的- 甚至机器代码有时也会被解释!
Joh*_*kin 50
这里有多个问题:
| 归档时间: |
|
| 查看次数: |
18071 次 |
| 最近记录: |