虽然我理解模拟和模拟的一般含义,但我几乎总是对它们感到困惑。假设我创建了一个模仿现有硬件/软件的软件,我应该如何称呼它?模拟器还是模拟器?

有人能从编程的角度来解释一下吗?

福利:这两个词在英语中有什么区别?(对不起,我的母语不是英语:))


当前回答

模拟器:

Consider a situation that you know only English and you are in China. In order to interact with a Chinese person you need a translator. Now, role of translator is that it will seek input from you in English and convert to Chinese and and give that input to the Chinese person and gets response from the Chinese person and convert to English and give the output to you in English. Now that translator and Chinese person is the emulator. Both combine will provide similar functionality as if you were communicating with the English person. So hardware may be different but functionality will be same.

模拟器:

我想不出比SPICE或飞行模拟器更好的例子了。两者都将用与硬件行为相似的软件或数学模型取代硬件组件行为。

最后,哪种解决方案更适合项目需求取决于上下文。

其他回答

这是焦点的不同。模拟器1专注于重新创建系统的行为,而不考虑系统内部的功能。模拟器s2着重于系统组件的建模。当你主要关心一个系统做什么时,你使用模拟器;当你关心它如何做时,你使用模拟器。

就其一般的英文含义而言,emulation是“在品质或行为上努力达到或超过他人”,而simulation是“模仿、复制、复制行为、外观或特性”。差别不大。竞赛来自æmulus,“奋斗,竞争”,与“模仿”和“形象”有关,这表明表面上的相似。“模拟”来自similis的“像”,“相似”一词也是如此,这可能暗示了更深层次的一致性。

引用:

维基百科:模拟器 维基百科:计算机模拟 Wiktionary:模拟 Wiktionary:模拟 词源在线:仿真 词源在线:模拟

模拟是模拟外部可观察到的行为以匹配现有目标的过程。模拟机制的内部状态不必准确地反映它所模拟的目标的内部状态。

另一方面,仿真涉及到对目标的基本状态进行建模。一个好的仿真的最终结果是,仿真模型将模拟它所模拟的目标。

理想情况下,您应该能够查看模拟并观察到您在查看原始目标时也会看到的属性。在实践中,由于性能原因,模拟可能存在一些快捷方式——也就是说,模拟的某些内部方面实际上可能是模拟。

MAME是一款街机游戏模拟器;Hyperterm是一个(不是很好的)终端仿真器。没有必要为街机或终端详细建模以获得所需的模拟行为。

《Flight Simulator》是一款模拟器;SPICE是一个电子模拟器。他们尽可能地模拟目标的每个细节,以表示目标在现实中的行为。

EDIT: Other responses have pointed out that the goal of an emulation is to able to substitute for the object it is emulating. That's an important point. A simulation's focus is more on the modeling of the internal state of the target -- and the simulation does not necessarily lead to emulation. In particular, a simulation may run far slower than real-time. SPICE, for example, cannot substitute for an actual electronics circuit (even if assuming there was some kind of magical device that perfectly interfaces electrical circuits to a SPICE simulation.) A simulation does not always lead to emulation --

模拟是一种行为类似于其他事物,但以完全不同的方式实现的系统。它提供了系统的基本行为,但不一定遵守被模拟系统的所有规则。它的存在是为了让你了解事物是如何工作的。

模拟是一种行为完全类似于其他系统的系统,并且遵守所模拟系统的所有规则。它实际上是另一个系统的完全复制,甚至与仿真系统的输入和输出二进制兼容,但在与原始仿真系统的环境不同的环境中运行。规则是固定的,不能更改,否则系统会失败。

仿真器是一个系统的模型,它可以接受被仿真系统可以接受的任何有效输入,并产生相同的输出或结果。所以你的软件就是一个模拟器,只要它能精确地再现被仿真系统的行为。

模拟器:

Consider a situation that you know only English and you are in China. In order to interact with a Chinese person you need a translator. Now, role of translator is that it will seek input from you in English and convert to Chinese and and give that input to the Chinese person and gets response from the Chinese person and convert to English and give the output to you in English. Now that translator and Chinese person is the emulator. Both combine will provide similar functionality as if you were communicating with the English person. So hardware may be different but functionality will be same.

模拟器:

我想不出比SPICE或飞行模拟器更好的例子了。两者都将用与硬件行为相似的软件或数学模型取代硬件组件行为。

最后,哪种解决方案更适合项目需求取决于上下文。