鹦鹉 - 我可以用吗?如何?

时间:2010-11-27 23:13:45

标签: parrot

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

  1. Parrot准备好供一般使用吗?我可以看到正在发布版本,但现在是否有效,或者仍在进行中,这一点并不明显。
  2. 是否有关于如何使用 Parrot的文档?我已经查看了之前问题中的链接,但我能找到的所有文档都讨论了各种级别的Parrot特定代码(PIR,PASM等),或者如何添加对更多语言的支持。这很好,但如何在Parrot上运行现有语言的代码?我如何使用其他语言编写的代码?
  3. 最后,我不想开始一场火焰战,但我知道Parrot与Perl 6捆绑在一起。我更喜欢Python。我理解Python是一种支持的语言,但实际上,它被认为是一种多语言VM,还是一种Perl 6解释器,其他语言被包含为好奇心?

2 个答案:

答案 0 :(得分:9)

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

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

尽管如此,语言之间的互操作并不完全无缝。例如,String类型很可能被所有语言用作基类,但Ruby对象可能需要包装器(但不是代理)来执行pythonic。对象互操作没有故事,至少目前还没有。

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

并回答你的实际问题:

  1. 排序。它并不快,而且针对它的语言并不完整,但它不会崩溃或破坏你的记忆。
  2. 通常,您使用自己喜欢的高级语言(Python)编写代码并将.py代码编译为parrot(如果您愿意,可以将其编译为本机代码)。另一个开发人员可以编写他们的Perl(6)代码并将其编译为parrot,如果编译器已经用interop编写,你将能够从python中调用Perl函数

答案 1 :(得分:3)

  1. 它仍在进行中,但对于语言实现者和库开发人员来说已经足够成熟了。警告:一些子系统正在重新设计(垃圾收集,嵌入),所以前方可能会有一些颠簸。

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