【问题标题】:Question about python construction关于python构造的问题
【发布时间】:2010-12-06 08:32:38
【问题描述】:

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

有人可以解释一下吗?

我想了想之后得出的独特解释是:python 与 ASM 处于同一“级别”,python 解释任何语言(即更高级别)都是有意义的,对吗?这有意义吗?

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

谢谢

【问题讨论】:

    标签: python compiler-construction programming-languages interpreter


    【解决方案1】:

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

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

    【讨论】:

    • 赞成,但我要补充一点,“Python”意味着解释器和标准库。 CPython 解释器是用 C 编写的,但标准库的大部分是用 Python 编写的。
    • 虽然正确,但重新排列此答案以解释 pypy 如何存在可能会有所帮助。我认为问题的重点在于明显的循环性。关于pypy如何打破循环的一句话可能会有所帮助。
    【解决方案2】:

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

    自托管一词最初是指将计算机程序用作工具链或操作系统的一部分,从而生成同一程序的新版本,例如,可以编译自己的源代码的编译器。自托管软件在个人计算机和更大的系统上很常见。其他通常自托管的程序包括内核、汇编程序、shell 和版本控制软件。

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

    【讨论】:

    • 必须引导“第一个修订版”?您是在暗示后续修订版没有……即 Python 自托管。它没有(无论如何使用 CPython...PyPy 改变了图片)。
    【解决方案3】:

    一般来说,当有人说语言 X 是用 X 编写的时,他们的意思是首先 X 的编译器或解释器是用汇编或其他类似语言编写的,经过编译,然后是一个更好的编译器或解释器是用 X 写的。

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

    【讨论】:

    • 那么它可以用任何语言制作吗?我的意思是,用 X 重写一个更好的语言 X 编译器?
    • @Rafael:理论上,是的,尽管有些语言比其他语言更适合这种类型的开发。这也很大程度上取决于“更好”的含义。
    【解决方案4】:

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

    了解pypy——这是用 Python 编写的 Python。

    用 Python 编写 Python 是两步舞。

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

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

    当您阅读 pypy 时,您会发现他们所做的事情比这更复杂。 “我们使用的是高级语言 Python 的一个子集,称为 RPython,我们将语言编写为简单的解释器,很少引用和依赖于较低级别的细节。”

    所以他们从一个可以工作的 Python 开始,然后将运行时分解到这个 RPython 内核中,这是 Python 优点的最小块。然后他们围绕 RPython 内核构建了 Python 的其余部分。

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 2010-10-01
      相关资源
      最近更新 更多