3

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

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

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

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

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

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

4

2 回答 2

0

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

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

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

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

使用 VM,您可以在 Winforms 或 ActionScript 中执行该描述

于 2013-07-21T10:59:39.130 回答
0

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

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

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

于 2013-07-23T09:06:26.833 回答