我有一段时间关注Parrot了。我知道它是一个虚拟机,旨在运行各种动态语言,并允许一定程度的互操作性(例如从Python脚本调用Perl函数)。所以,我的问题分为两部分:
最后,我不想开始一场火焰战,但我知道Parrot与Perl 6捆绑在一起。我更喜欢Python。我理解Python是一种支持的语言,但实际上,它被认为是一种多语言VM,还是一种Perl 6解释器,其他语言被包含为好奇心?
答案 0 :(得分:9)
我主要是Python开发人员,所以我有偏见。但可能与你的方向相同。
Parrot旨在成为一种多语言虚拟机。它的Perl根有时显示(“0”为假,引导语言NQP是perl的子集),但在运行时级别它与语言无关。
尽管如此,语言之间的互操作并不完全无缝。例如,String类型很可能被所有语言用作基类,但Ruby对象可能需要包装器(但不是代理)来执行pythonic。对象互操作没有故事,至少目前还没有。
Python 3编译器“Pynie”还有很长的路要走。这是回购http://bitbucket.org/allison/pynie。也许你想帮忙吗?现在它很年轻,甚至还没有物体。
并回答你的实际问题:
答案 1 :(得分:3)
它仍在进行中,但对于语言实现者和库开发人员来说已经足够成熟了。警告:一些子系统正在重新设计(垃圾收集,嵌入),所以前方可能会有一些颠簸。
每种语言都需要一个生成Parrot理解的代码的编译器。这些编译器是单独发布的。 (见http://trac.parrot.org/parrot/wiki/Languages) 大多数针对Parrot的语言处于早期不完整状态,因此互操作性现在不是一个大问题。 Parrot不是Perl 6解释器,但Rakudo Perl 6恰好是针对Parrot的最发达的编译器之一。