【问题标题】:Parrot - Can I use it? And how?鹦鹉 - 我可以使用它吗?如何?
【发布时间】:2010-11-27 23:13:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: parrot


    【解决方案1】:

    我主要是一名 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 函数

    【讨论】:

    • 所以,至少从 Python 的角度来看,听起来它真的处于“有趣的想法,几年后再回来看看”的阶段?恐怕我并没有真正渴望通过帮助开发它来从头开始,但我很想看看结果如何。
    【解决方案2】:
    1. 它仍在进行中,但对于语言实现者和库开发者来说已经足够成熟了。警告:一些子系统正在重新设计(垃圾收集、嵌入),因此前面的道路可能会遇到一些颠簸。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多