Cod*_*ous 21
克里斯覆盖了面向用户的差异,所以我将覆盖另一方.
Parrot是基于寄存器而不是基于堆栈的.这意味着编译器开发人员可以更轻松地优化为给定代码段分配寄存器的方式.此外,从Parrot字节码到机器代码的编译理论上可以比基于堆栈的代码更快,因为我们运行基于寄存器的系统并且具有更多的优化经验.
Chr*_*ung 13
Parrot是一个字节码解释器(可能在未来阶段使用JIT).想想Java及其虚拟机,除了Java(目前)更倾向于静态语言,而Parrot从一开始就面向动态语言.
另见Cody的优秀答案!强烈推荐.
其他人给出了很好的答案,所以对我而言,解释什么是"动态"语言实际上意味着什么.
在虚拟机的上下文中,这意味着在编译时不知道变量的类型.在"静态"语言中,类型(或至少是它的父类)在编译时是已知的,并且许多优化建立在该知识的基础上.
另一方面,在动态语言中,您可能知道变量是保存容器类型(如数组)还是标量(字符串,数字......),但在编译时您的类型信息要少得多.
另一个特点是动态语言通常使类型转换更容易,例如在perl和javascript中如果使用字符串作为数字,它会自动转换为数字.
Parrot旨在使这些操作变得简单快速,并且允许在编译时不知道类型信息进行优化.