是否有兴趣从PyPy 项目开发Rpython(受限 Python)作为通用编程语言?也许它可能是 PyPy 项目的一个分支。有这样的项目吗?由于程序是编译的,因此可以简单地贡献用 Rpython 编写的模块,它可以与其他 python 实现竞争,包括 CPython 和 PyPy。
5 回答
我不能代表其他所有人,但我个人对使用 RPython 作为通用语言非常感兴趣。回答一些其他人的问题:
为什么?因为 Cython 很难弄清楚如何使用。如果你没有正确地放入很多棘手的类型声明,你就不会得到任何加速。使用 RPython,它会运行得很快,或者根本不会运行。
使用 PyPy 提供了很好的加速,但目前还不如 RPython。
RPython 可能是获得超快、有点 Python 风格的代码的好方法。这是一个帮助您入门的示例。不幸的是,我不知道有任何大型项目可以做到这一点。
是的,已经有一个项目使用 PyPy 的翻译工具链来使用 RPython 创建独立的可执行文件和库。它被称为RPythonic。
通用 RPython 不会成为 CPython 和 PyPy 的竞争对手。它甚至不会成为 Cython 之类的竞争对手。
为什么?因为RPython 不是 Python!!RPython 只是一种与 Python 共享一些语法的语言。足以让 Python 解释器执行 RPython 代码,但您不能将 Python 代码编译为 RPython。
为了使 RPython 能够被静态类型化和编译(实际上,具有静态类型推断)而添加的对 Python 的限制非常严格,以至于它们完全改变了语言。如果你想编写一个 RPython 程序,你必须预先决定这样做并用 RPython 编写它。你不能用 Python 编写程序然后决定将其编译为 RPython,你甚至不能稍微调整一个现实的 Python 程序以使其成为 RPython。普通的 Python 代码与普通的 RPython 代码完全不同。编写 RPython 更类似于编写 Java 或 C#。
因此,如果你想用 Python 编写通用程序,但又想让它们运行得更快,那么 RPython 提供的东西很少。这就是 PyPy 的 Python 解释器试图填补的利基市场。
如果你想用较低级别的编译语言编写通用程序,因为你需要你的程序比 Python 运行得更快,那么现有的非常成熟的语言和库,比如 Java 或 C#。
用 RPython 编码的原因是为了做一些 RPython 做得特别好的事情。就像编写解释器一样,您可以在其中添加垃圾收集器和 JIT 编译器,而无需手动编写它们!RPython在这里大放异彩,是的,我会对更精致、更实用的 RPython 解释器编写环境非常感兴趣。但是,作为一种用于编写程序的通用编程语言,它并没有特别受益于 RPython 的专长,要让它达到可以与已经更好地填补这一角色的现有语言竞争的地步,这将是一项巨大的工作。例如,它现在几乎没有标准库(因为 Python 的扩展标准库几乎没有一个可用于 RPython)。
为什么我想直接用 RPython 编写?
Python 代码和运行 PyPy 似乎要简单得多。
我为什么要写 C 代码?
编写 Python 并用 C 实现 PyPy 似乎要简单得多
为什么我要编写汇编代码?
编写 Python 并在 C 中实现 PyPy 并在 Assembler 中实现 C 似乎要简单得多。
我想这真的是海龟一路下来。
为什么我要停止使用最方便的语言并切换到不太方便的语言?
放弃一门好语言有什么价值?
从外观上看,限制非常严格,总的来说,我想编程要少得多。这是实现 PyPy 所必需的,但通常如果您想要可以与 Python 交互的快速编译代码,您会使用Cython(它针对 CPython 扩展并无缝支持几乎所有 Python)或使用更常见的代码之一编写代码可以做到这一点的语言。如果你只想要快速、编译的代码……好吧,RPython 可能比 C 更令人愉快,但我仍然没有看到这里有明显的优势(至少没有一个值得努力创建一个可用的、稳定的语)。