代码之家  ›  专栏  ›  技术社区  ›  Thomas K

鹦鹉-我能用它吗?怎么做?

  •  6
  • Thomas K  · 技术社区  · 15 年前

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

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

    最后,我不想引发一场火焰战,但我知道Parrot与Perl6是密不可分的。我喜欢蟒蛇。我知道Python是一种受支持的语言,但实际上,它是被视为一个多语言VM,还是一个Perl 6解释器,其中包含了其他语言作为好奇?

    2 回复  |  直到 15 年前
        1
  •  9
  •   Lucian    15 年前

    我主要是一个Python开发人员,所以我有偏见。但可能和你的方向一样。

    鹦鹉是一个多语言虚拟机。它的Perl根有时会显示(“0”是假的,引导语言NQP是Perl的一个子集),但在运行时级别,它与语言完全不相关。

    也就是说,语言之间的互操作不会完全无缝。例如,字符串类型最有可能被所有语言用作基类,但是Ruby对象可能需要包装器(但不是代理)来执行Pythic。没有对象互操作的故事,至少目前还没有。

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

    回答你的实际问题:

    1. 某种程度上。它不快,目标语言也不完整,但不会崩溃或损坏内存。
    2. 通常,您用您最喜欢的高级语言(Python)编写代码,并将.py代码编译为parrot(然后,如果需要,可以将其编译为本机代码)。另一个开发人员可以编写他们的Perl(6)代码,并将其编译为parrot,如果编写编译器时考虑到了互操作性,则可以从python调用Perl函数
        2
  •  3
  •   muixirt    15 年前
    1. 它仍在进行中,但对于语言实现者和库开发人员来说已经足够成熟了。注意:一些子系统正在重新工作(垃圾收集、嵌入),因此前面的道路可能会有一些颠簸。

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

    推荐文章