我知道Parrot是一个虚拟机,但我觉得我并没有完全理解它背后的思想。
据我所知,它是一个可以处理多种语言的虚拟机。这是正确的吗?
使用虚拟机而不仅仅是解释器的优势是什么?
Parrot到底在做什么,让它变得如此重要?
发布于 2008-09-22 23:28:02
Parrot是一个专门为处理多种语言而设计的虚拟机,尤其是动态语言。尽管涉及到一些有趣的技术,但由于它可以处理多种语言,它将能够跨越语言边界。例如,一旦它可以编译Ruby、Perl和Python,就应该很容易跨越这些界限,让我可以使用Python中的Ruby库、Python中的Perl库,以及我喜欢的任何组合。
Parrot起源于Perl世界,许多从事这项工作的人都是有经验的Perl人员。Parrot没有使用当前的Perl解释器,而是允许Perl具有诸如可分发的预编译模块(其他所有人都已经拥有很长时间了)和更智能的垃圾收集器等特性。
发布于 2008-09-22 23:15:42
Chris介绍了面向用户的不同之处,因此我将介绍另一方面。
Parrot是基于寄存器的而不是基于堆栈的。这意味着编译器开发人员可以更容易地优化为给定代码段分配寄存器的方式。此外,从Parrot字节码到机器码的编译在理论上可以比基于堆栈的代码更快,因为我们运行基于寄存器的系统,并且有更多优化它们的经验。
发布于 2008-09-22 23:06:53
Parrot是一个字节码解释器(将来可能会使用JIT )。想想Java和它的虚拟机,除了Java (目前)更多地面向静态语言,而Parrot一开始就面向动态语言。
另请参阅Cody的优秀答案!强烈推荐。
https://stackoverflow.com/questions/118141
复制相似问题