据我所知,CPython程序被编译成中间字节码,由虚拟机执行。那么,如果没有预先知道CPython是用C语言编写的,如何识别它呢?两者之间是否存在某些共同的DNA可以匹配以识别它们?
解释器是用C语言编写的。
它将Python代码编译成字节码,然后通过评估循环来解释该字节码以运行您的代码。
您可以通过查看其源代码来确定Python是用什么语言编写的。例如,请参阅评估循环源代码。
请注意,Python.org实现只是Python实现之一。我们称其为CPython,因为它是用C实现的。还有其他实现,使用其他语言编写。Jython是用Java编写的,IronPython是用C#编写的,然后还有PyPy,它是用Python(子集)编写的,并且比CPython运行许多任务更快。
Python并不是用C编写的。可以说,Python是使用BNF编写的奇特英语方言。
然而,以下所有陈述都是正确的:
您可以无限地添加更多的层次:考虑到您的“硬件处理器”实际上可能是软件仿真,或者硬件处理器可能具有将其“本地”指令集解码为另一种内部字节码的前端。
所有这些层次都是通过它们所执行的操作(根据某些规范执行或解释指令)来定义的,而不是它们的实现方式。
哦,我跳过了编译步骤。 C编译器通常是用C编写的(使任何语言达到能够自我编译的阶段通常很重要),但它也可以用Python或Java编写。同样,编译器的定义是通过它的功能(根据语言规范将某些源语言转换为某些输出,例如字节码),而不是它的实现方式。
我在这里找到了对我的疑问的很好理解: http://amitsaha.github.io/site/notes/articles/c_python_compiler_interpreter.html
(注:此文为IT技术相关内容,具体翻译结果因语境略有不同而有所差异)