【发布时间】:2021-08-28 07:48:58
【问题描述】:
我对 Python 等解释型语言的理解是,它将源代码转换(或编译,取决于术语的确切定义)为低级且独立于平台的字节码。当字节码需要在特定机器上执行时,它会再次由 Python VM 转换为目标机器特定机器码,以便目标机器的 CPU 可以成功理解我的 Python 代码(已经是字节码格式)。
在这个过程中,源代码和字节码是平台无关的,最终的机器码是平台相关的。
我的问题是,如果我保存 Python VM 生成的结果机器代码并在同一台机器上重新使用它会怎样?这是否意味着我已经像 C/C++ 一样编译了 Python 源代码?我的理解是,在机器代码层面上,“高级编程语言”的概念消失了,生成这种机器代码的源代码变得无关紧要——机器代码只是机器代码,CPU不关心也不知道是哪种语言这样的机器码来自。这是否意味着,不知何故,PythonVM 生成的机器代码可以和 C/C++ 生成的机器代码一样快?
(我知道这样的机器代码无论如何都不会是跨平台的——但这不是这个问题的关注点。因为我总是可以编译针对不同平台的源代码,就像 C/C++ 一样。)
【问题讨论】:
标签: python compilation machine-code