【问题标题】:How does Parrot compare to other virtual machines?Parrot 与其他虚拟机相比如何?
【发布时间】:2009-11-27 23:54:40
【问题描述】:

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

Parrot VM 提供哪些技术能力是 Java Virtual Machine (JVM)/Hotspot VMCommon Language Runtime (CLR) 等竞争虚拟机所缺乏的?

【问题讨论】:

    标签: jvm clr raku parrot


    【解决方案1】:

    以下答案写于 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 不会回避实现语言的杂乱但必要的部分。

    我的信息可能已经过时,但我相信操作码是可插入的,您可以发布仅包含您的语言所需操作码的 Parrot VM。它们也将是可继承的,如果您的语言希望它们的数组与普通 Parrot 数组的工作方式略有不同,您可以对其进行子类化。

    最后,Parrot 不仅可以用汇编语言 (PASM) 编写,还可以用稍高级的语言 Parrot Intermediate Representation (PIR) 编写。 PIR 具有循环、子例程、本地化变量以及一些基本的数学和比较操作,这是人们期望在编程语言中具备的所有基础知识,而且不会离金属太远。

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

    【讨论】:

    • @raiph 您添加了广泛的 2015 更新的编辑属于其自己的答案或评论。添加新内容太广泛了,无法进行编辑。
    • 感谢您查看我的编辑和评论。如果我添加了一个新答案,然后您或我在您的答案开头添加了一行链接到新答案,它会起作用吗?就目前而言,大多数使用 SO 来查找有关 Parrot 的信息的人会认为“Parrot 是最初为 Perl 6 设计的虚拟机”,这是非常模棱两可的,并且您的答案在 2015 年是一个不错的答案(它有绿色复选标记,我的猜测是它不会被投票数年,如果有的话,尽管链接断开等)。
    • @raiph 是的,听起来不错。写一个关于当前情况的答案并编辑我的链接以链接到它。
    【解决方案2】:

    您可以在Parrot VM Intro 页面上阅读大部分内容。

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

    【讨论】:

      【解决方案3】:

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

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

      Parrot VM 提供了 Java 虚拟机 (JVM)/Hotspot VM 和公共语言运行时 (CLR) 等竞争虚拟机所缺乏的哪些技术能力?

      another answer on this page,当前(2015 年 4 月)Parrot 首席开发人员 Reini Urban 提供了 Parrot 与 JVM 和 CLR VM 的简要比较。

      According to Reini,Parrot 相对于 MoarVM 的一个关键优势是“有效地无锁线程”。

      【讨论】:

        【解决方案4】:

        使 Parrot 与大多数 VM 不同(当然与 JVM 不同)的另一件事是,它是一个寄存器机器而不是堆栈机器。但我想人们会争论很长一段时间,这到底是优势还是劣势。

        【讨论】:

          【解决方案5】:

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

          • 动态语言(闭包、多态标量、延续、协程)支持(速度)
          • 动态方法分派,
          • 一流的功能,
          • 一流的延续,
          • 参数(可选,命名,..),
          • 基于注册
          • 在程序集级别提供 HLL 互操作性
          • 平台范围

          更新:这可能无关紧要,因为 JVM 现在是 Rakudo Perl 6 后端之一。请参阅 Rakudo Perl 6 on the JVM(Perl 6 Advent 日历 2013,第 3 天)。

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                猜你喜欢
                • 2014-08-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-11-14
                • 2020-01-18
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多