关于python构造的问题

时间:2010-12-06 08:32:38

标签: python compiler-construction programming-languages interpreter

我的一位程序员的朋友告诉我“Python是用Python编写的”或类似的东西。他的意思是Python解释器是用Python编写的(我认为)。我在一些网站上读过Python实时解释任何编程语言(甚至是C ++和ASM)。这是真的吗?

有人可以解释我怎么样?

我想到的一个独特的解释是:python与ASM处于相同的“级别”,python解释任何语言(在更高级别)是有道理的,我是对的吗?这有意义吗?

如果有人向我解释一下,我将不胜感激。

谢谢

4 个答案:

答案 0 :(得分:5)

这不是真的。 Python的标准实现 - CPython - 是用C语言编写的,尽管很多标准库都是用Python编写的。 Java(Jython)和.NET(IronPython)中还有其他实现。

有一个名为PyPy的项目,其中包括将Python的C部分重写为Python。但Python的主要开发仍然基于C。

答案 1 :(得分:2)

你的朋友告诉你Python是self-hosting

  

术语自托管是指使用计算机程序作为工具链或操作系统的一部分来生成同一程序的新版本 - 例如,可以编译自己的源代码的编译器。自托管软件在个人计算机和大型系统上很常见。其他通常自托管的程序包括内核,汇编程序,shell和修订控制软件。

当然,Python的第一个版本必须由其他一些机制引导 - 可能是C或C ++,因为它们是lexersparser generators的相当标准的目标。

答案 2 :(得分:0)

通常,当有人说X用X语言编写时,他们的意思是首先用X编译器或解释器用汇编语言或其他语言编写,编译,然后用更好的编译器或解释器编写是用X写的。

此外,一旦存在X的非常基本的编译器/解释器,有时通过在X中编写新的语言特性,类等来向X添加新的语言特性,类等比扩展编译器/解释器本身更容易。

答案 3 :(得分:0)

Python是用C(CPython)和Python编写的。

阅读pypy - 这是用Python编写的Python。

用Python编写Python是一个两步之舞。

  1. 用其他语言编写Python。 C,Java,汇编程序,COBOL,等等。

  2. 一旦你有了Python的工作实现(即,通过所有测试),你就可以用Python编写Python。

  3. 当你读到关于pypy的消息时,你会发现他们做的事情比这更复杂。 “我们正在使用高级语言Python的一个子集,称为RPython,我们将语言编写为简单的解释器,对较低级别的细节几乎没有引用和依赖。”

    所以他们从一个有效的Python开始,然后将运行时间打入这个RPython内核,这是Python优点的最小块。然后他们围绕RPython内核构建了其余的Python。