6

我关注Parrot已经有一段时间了。我知道它是一个虚拟机,旨在运行各种动态语言,并允许一定程度的互操作性(例如,从 Python 脚本调用 Perl 函数)。所以,我的问题分为两部分:

  1. Parrot 准备好通用了吗?我可以看到正在发布版本,但不清楚它是现在运行良好还是仍在进行中。
  2. 有没有关于如何使用Parrot 的文档?我查看了之前问题中的链接,但我能找到的所有文档都讨论了 Parrot 特定代码的各个级别(PIR、PASM 等),或者如何添加对更多语言的支持。很好,但是如何在 Parrot 上运行现有语言的代码?以及如何使用用另一种语言编写的代码?

最后,我不想引发一场激战,但我知道 Parrot 与 Perl 6 捆绑在一起。我更喜欢 Python。我知道 Python 是一种受支持的语言,但实际上,它是被视为一种多语言 VM,还是一种 Perl 6 解释器,其中包含其他语言作为好奇心?

4

2 回答 2

9

我主要是 Python 开发人员,所以我有偏见。但可能与您的方向相同。

Parrot 旨在成为一个多语言虚拟机。它的 Perl 根有时会显示(“0”是错误的,引导语言 NQP 是 perl 的子集),但在运行时级别它与语言完全无关。

也就是说,语言之间的互操作不会完全无缝。例如,String 类型很可能会被所有语言用作基础,但 Ruby 对象可能需要包装器(但不是代理)来表现 Python 风格。没有对象互操作的故事,至少到目前为止还没有。

Python 3 编译器“Pynie”还有很长的路要走。这是回购http://bitbucket.org/allison/pynie。也许你想帮忙?现在它还很年轻,甚至还没有对象。

并回答您的实际问题:

  1. 有点。它速度不快,针对它的语言也不完整,但它不会崩溃或破坏你的记忆。
  2. 通常,您使用您最喜欢的高级语言 (Python) 编写代码并将您的 .py 代码编译为 parrot(如果需要,您可以从那里将其编译为本机代码)。另一个开发人员可以编写他们的 Perl(6) 代码并将其编译为 parrot,如果编译器的编写考虑了互操作,您将能够从 python 调用 Perl 函数
于 2010-11-28T22:52:58.553 回答
3
  1. 它仍在进行中,但对于语言实现者和库开发人员来说已经足够成熟了。警告:一些子系统正在重新设计(垃圾收集、嵌入),所以前面的道路上可能会有一些颠簸。

  2. 每种语言都需要一个编译器来生成 Parrot 可以理解的代码。这些编译器是单独发布的。(请参阅http://trac.parrot.org/parrot/wiki/Languages)大多数针对 Parrot 的语言都处于早期不完整状态,因此互操作性现在不是一个大问题。Parrot 不是 Perl 6 解释器,但 Rakudo Perl 6 恰好是针对 Parrot 开发最密集的编译器之一。

于 2010-11-29T19:59:15.477 回答