Parrot是最初为Perl 6设计的虚拟机。
Parrot VM为Java Virtual Machine (JVM) / Hotspot VM和Common Language Runtime (CLR)之类的竞争虚拟机提供了哪些技术功能?
答案 0 :(得分:34)
以下答案于2009年撰写。另见2015 update by raiph。
为了扩展@Reed并指出一些亮点,Parrot的操作码远远高于大多数虚拟机。例如,虽然大多数机器存储整数和浮点数,但基本寄存器是整数,数字,字符串和Parrot Magic Cookies(PMC)。只是内置字符串是JVM的一步。
更有趣的是PMC,有点像JVM的对象类型,但更具可替代性。 PMC是一个容器all the other more complicated types,你需要一个真正的语言,如数组,表,树,迭代器,I / O等.PMC和各种内置的操作系统意味着语言编写器的工作量减少。鹦鹉不会回避实施一种语言的混乱但必要的部分。
我的信息可能已过期,但我相信操作码是可插拔的,您可以发送仅包含您的语言所需操作码的Parrot VM。它们也是可继承的,如果你的语言希望它们的数组与库存Parrot数组略有不同,那么你可以做它的子类化。
最后,Parrot不仅可以用汇编语言(PASM)编写,还可以编写更高级别的语言Parrot Intermediate Representation (PIR)。 PIR有循环,子程序,局部变量和一些基本的数学和比较操作,人们在编程语言中所期望的所有基础知识,而不会离金属太远。
总而言之,Parrot对语言设计师(由他们编写并为他们编写)非常友好,他们希望设计一种语言,并尽可能多地将实现留给其他人。< / p>
答案 1 :(得分:15)
您可以在Parrot VM Intro页面上阅读大部分内容。
Parrot对JVM或CLR的主要优势在于它首先支持动态语言,并可能为动态类型语言提供更好的支持和性能。 JVM和CLR都更倾向于支持静态类型语言,许多设计决策都表明了这一点。
答案 2 :(得分:5)
使Parrot与大多数VM(当然与JVM不同)的另一个不同之处在于它是一个注册机而不是堆栈机。但我认为人们将长期争论是否可以称之为优势或劣势。
答案 3 :(得分:5)
我不太了解JVM和CLR,但我的提示是:
更新:这可能无关紧要,因为现在JVM是Rakudo Perl 6后端之一。见Rakudo Perl 6 on the JVM(Perl 6 Advent calendar 2013,第3天)。
答案 4 :(得分:5)
Parrot是最初为Perl 6设计的虚拟机。
现在有两个 VM最初是为Perl 6设计的;承诺MoarVM始于2012年。
Parrot VM为Java虚拟机(JVM)/热点虚拟机和公共语言运行时(CLR)等竞争虚拟机提供了哪些技术功能?
在another answer on this page中,Reini Urban,目前(2015年4月)Parrot领导开发者提供了Parrot与JVM和CLR VM的简要比较。
According to Reini,Parrot对MoarVM的一个关键优势是&#34;有效锁定线程&#34;。
答案 5 :(得分:3)
与JVM和CLR相比,主要优势和技术差异在于,类型(类称为PMC)和ops( methods )可以从高效用户动态加载 - 提供了C实现,并且内置了用于创建和扩展语言的解析器框架。
答案 6 :(得分:2)
这个问题已经过时了。 Rakudo Perl 6不再将Parrot作为后端; MoarVM是首选的后端,JVM后端正在进行中(通常可行,但许多Perl 6功能未实现或当前已损坏)。正在进行开发工作(尚未为用户准备)以将Javascript添加为第三个后端。