Perl 鹦鹉到底是什么?
我知道Parrot是一台虚拟机,但我觉得我没有完全理解它背后的想法 据我所知,这是一个虚拟机,可以处理多种语言。这是正确的吗 使用虚拟机而不仅仅是解释器有什么好处Perl 鹦鹉到底是什么?,perl,jit,vm-implementation,parrot,Perl,Jit,Vm Implementation,Parrot,我知道Parrot是一台虚拟机,但我觉得我没有完全理解它背后的想法 据我所知,这是一个虚拟机,可以处理多种语言。这是正确的吗 使用虚拟机而不仅仅是解释器有什么好处 Parrot到底做了些什么使其成为如此重要的事情?Parrot是一个字节码解释器(可能在未来阶段使用JIT)。想想Java及其虚拟机,Java(目前)更倾向于静态语言,而Parrot从一开始就倾向于动态语言 还可以看到科迪的精彩答案!强烈推荐。克里斯介绍了用户面临的差异,因此我将介绍另一面 Parrot是基于寄存器的,而不是基于堆栈的
Parrot到底做了些什么使其成为如此重要的事情?Parrot是一个字节码解释器(可能在未来阶段使用JIT)。想想Java及其虚拟机,Java(目前)更倾向于静态语言,而Parrot从一开始就倾向于动态语言
还可以看到科迪的精彩答案!强烈推荐。克里斯介绍了用户面临的差异,因此我将介绍另一面 Parrot是基于寄存器的,而不是基于堆栈的。这意味着编译器开发人员可以更轻松地优化为给定代码段分配寄存器的方式。此外,从Parrot字节码到机器码的编译在理论上可以比基于堆栈的代码更快,因为我们运行基于寄存器的系统,并且有更多的优化经验。是一个专门设计用于处理多种语言,特别是动态语言的虚拟机。尽管涉及到一些有趣的技术,但由于它可以处理多种语言,它将能够跨越语言边界。例如,一旦它可以编译Ruby、Perl和Python,就应该很容易跨越这些界限,让我使用Python中的Ruby库,Python中的Perl库,所以不管我喜欢什么组合
Parrot起源于Perl世界,许多从事它工作的人都是有经验的Perl人员。Parrot不使用当前的Perl解释器(它显示了它的时代),而是允许Perl具有诸如可分发的预编译模块(其他人已经拥有很长时间)和更智能的垃圾收集器等功能。其他人给出了很好的答案,所以我要做的是解释什么是“动态的”语言实际上意味着什么 在虚拟机的上下文中,这意味着在编译时变量的类型是未知的。在“静态”语言中,类型(或者至少是它的父类)在编译时是已知的,许多优化都是基于这种知识进行的 另一方面,在动态语言中,您可能知道变量是否包含容器类型(如数组)或标量(字符串、数字等),但在编译时,您拥有的类型信息要少得多 另一个特点是,动态语言通常使类型转换更加容易,例如,在perl和javascript中,如果使用字符串作为数字,它将自动转换为数字 Parrot的设计目的是使此类操作简单快速,并允许在编译时不知道类型信息的情况下进行优化 你可以在那里找到很多信息和链接 Parrot wiki主页的底部还显示来自提要聚合器的最新标题 除了VM之外,Parrot项目正在构建一个非常强大的工具链,以使移植现有语言或开发新语言变得更加容易 Parrot VM还将为许多功能强大的新Perl 6功能提供其他语言的幕后支持(有关Perl 6的更多信息,请参阅)
Parrot将提供不同语言的模块之间的互操作性,因此,例如,其他语言可以利用将成为庞大的Perl 6版本的CPAN(庞大的Perl 5模块存档,Perl 6将能够通过即将发布的Perl 5.12访问该存档)。老实说,我不知道这有那么大的意义。它已经走了很长一段路,但没有看到太多的用处。主要的目标语言还没有真正到达,在行业专业人士中已经失去了巨大的思想份额。与此同时,其他解决方案,如.Net和Jython等项目向我们展示了“此时此地”可以击败任何宣传。
- Parrot将成为java的目标,但从未实现——一个面向所有人的虚拟机 操作系统和平台
- Parrot将为任何动态语言和真正的跨平台实现微软公共语言运行库背后的理念
- 最重要的是,Parrot现在和将来都是免费和开源的
- Parrot将成为使用动态语言进行开源编程的事实标准
。pmc
模块在一段时间内工作正常。至于大小:p5p在2011年故意用5.14[perl#81332]打破了B上游,“744aaba059使B编译器膨胀。”你需要修补B或使用perlall--patches=Compiler
来获得小而快的.pmc
文件。当然,加载.pmc
比加载.pm
更快。Parrot.pbc
文件,如@brian