【问题标题】:Interpreter vs. Virtual Machine解释器与虚拟机
【发布时间】:2015-06-13 19:49:15
【问题描述】:

OOP 设计模式中解释器和虚拟机之间的确切区别是什么,尤其是在游戏编程的上下文中?

http://www.oodesign.com/interpreter-pattern.html 将解释器模式识别为某种映射

将域映射到语言,将语言映射到语法,将语法映射到分层的面向对象设计

另一方面,虚拟机应该是……究竟是什么?

我认为这必须是某种对象集合才能进行图灵完备的计算。除了获得硬件互操作性的最小公分母(最好的例子是 Java 平台)之外,它还有什么用途?

您能想象一个没有将应用程序移植到另一个平台(和游戏)目的的 VM 用例吗? VM 是否假设有明确的抽象语言和解释器命令它?

【问题讨论】:

    标签: design-patterns interpreter vm-implementation


    【解决方案1】:

    两种不同的抽象 因此,在 .Net 术语中,两种不同的源语言可以解释为相同的结果,而且只需解释一次。

    正如您所说,VM 将您从“物理”环境中抽象出来,并且作为奖励,您可以专门针对它们进行优化。

    两者的一个用途是游戏引擎。说一个基本的文字冒险。

    所以你可以用法语和英语描述一个房间,两者都会产生相同的对象和事件。

    使用 VM,您可以在 Winforms 或 ActionScript 中操作该描述

    【讨论】:

      【解决方案2】:

      在大多数语言中都以运行时库的形式存在各种 VM;如果解析器/编译器部分被删除,它存在于任何解释器中的 potentio 中。但在正确指定之前,它不会真正成为真正的虚拟机,通常以字节码语法的形式。

      如果您阅读有关 Perl 版本 4 的内部结构,然后阅读有关 Parrot 或 JVM 字节码的内容,那么区别应该很明显。运行时支持和语言/编译器之间的接口更加明确。虚拟机是一个软件引擎,可以使用工程工具进行优化。

      在更高级别的设计中,虚拟机在语言实现中的存在可以更清晰地规范语言的允许语义。至少对数组执行边界检查。 :)

      【讨论】:

        猜你喜欢
        • 2021-10-04
        • 1970-01-01
        • 2011-05-08
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多