Parrot 是最初为 Perl 6 设计的虚拟机。

Parrot VM 提供哪些技术功能来超越竞争虚拟机(例如 Java 虚拟机 (JVM)/热点虚拟机公共语言运行时 (CLR) 缺少?

有帮助吗?

解决方案

以下答案于2009年撰写。另请参阅此 raiph 2015年更新

为了扩展@Reed并指出一些亮点,Parrot的操作码远远高于大多数虚拟机。例如,虽然大多数机器存储整数和浮点数,但基本寄存器是整数,数字,字符串和Parrot Magic Cookies(PMC)。只是内置字符串是JVM的一步。

更有趣的是PMC,有点像JVM的对象类型,但更具可替代性。 PMC是所需的所有其他更复杂类型的容器一种真正的语言,如数组,表格,树,迭代器,I / O等.PMC和各种内置的操作系统意味着语言编写者的工作量减少。鹦鹉不会回避实施一种语言的混乱但必要的部分。

我的信息可能已过期,但我相信操作码是可插拔的,您可以发送仅包含您的语言所需操作码的Parrot VM。它们也是可继承的,如果你的语言希望它们的数组与库存Parrot数组略有不同,那么你可以做它的子类化。

最后,Parrot不仅可以用汇编程序编写( PASM ),也是一种略高级别的语言, Parrot Intermediate Representation(PIR)。 PIR有循环,子程序,局部变量和一些基本的数学和比较操作,人们在编程语言中所期望的所有基础知识,而不会离金属太远。

总而言之,Parrot对语言设计师(由他们编写并为他们编写)非常友好,他们希望设计一种语言,并尽可能多地将实现留给其他人。

其他提示

您可以在 Parrot VM简介中阅读大部分内容页面。

Parrot对JVM或CLR的主要优势在于它首先支持动态语言,并可能为动态类型语言提供更好的支持和性能。 JVM和CLR都更倾向于支持静态类型语言,许多设计决策都表明了这一点。

使Parrot与大多数VM(当然与JVM不同)的另一个不同之处在于它是一个注册机而不是堆栈机。但我认为人们将长期争论是否可以称之为优势或劣势。

我对 JVM 和 CLR 不太了解,但我的提示:

  • 动态语言(闭包、多态标量、延续、协同例程)支持(速度)
  • 动态方法调度,
  • 一流的功能,
  • 一流的延续,
  • 参数(可选,命名,..),
  • 基于寄存器
  • 在汇编级别提供 HLL 互操作性
  • 平台范围

更新:这可能无关紧要,因为 JVM 是当今 Rakudo Perl 6 后端之一。看 JVM 上的 Rakudo Perl 6 (Perl 6 降临节日历 2013 年,第 3 天)。

  

Parrot是最初为Perl 6设计的虚拟机。

现在有两个 VM最初是为Perl 6设计的;承诺 MoarVM 始于2012年。

  

Parrot VM为Java虚拟机(JVM)/热点虚拟机和公共语言运行时(CLR)等竞争虚拟机提供了哪些技术功能?

此页面上的其他答案中,目前(2015年4月)Parrot领导开发者Reini Urban提供了一个简要介绍Parrot与JVM和CLR VM的比较。

根据Reini ,Parrot的主要优势在于MoarVM是“有效锁定线程”。

与JVM和CLR相比,主要优势和技术差异在于,类型(称为PMC)和ops( methods )可以从高效用户动态加载 - 提供了C实现,并且内置了用于创建和扩展语言的解析器框架。

这个问题已经过时了。 Rakudo Perl 6不再将Parrot作为后端; MoarVM是首选的后端,JVM后端正在进行中(通常可行,但许多Perl 6功能未实现或当前已损坏)。正在进行开发工作(尚未为用户准备)以将Javascript添加为第三个后端。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top