虽然我大致了解模拟和仿真的含义,但我几乎总是混淆它们。如果我创建一个模拟现有硬件/软件的软件,应该称其为模拟器还是仿真器?
有人能说明编程方面的区别吗?
奖励问题:这两个术语在英语中的区别是什么? (抱歉,我的母语不是英语 :))
虽然我大致了解模拟和仿真的含义,但我几乎总是混淆它们。如果我创建一个模拟现有硬件/软件的软件,应该称其为模拟器还是仿真器?
有人能说明编程方面的区别吗?
奖励问题:这两个术语在英语中的区别是什么? (抱歉,我的母语不是英语 :))
模拟是模拟目标的底层状态。 最终结果是,好的仿真模型将模拟它正在模拟的目标。
仿真可以观察仿真中的属性,并且如果您查看原始目标,则应该能够看到这些属性。 实际上,为了性能原因,可能会对仿真进行一些捷径--也就是说,仿真的某些内部方面实际上可能是模拟。
MAME是街机游戏模拟器; Hyperterm是(不太好的)终端模拟器。无需详细建模街机或终端即可获得所需的仿真行为。
Flight Simulator是一个模拟程序; SPICE是电子模拟器。 它们尽可能地对目标的每个细节进行建模,以表示目标在现实中的运行情况。
编辑:其他回答指出仿真的目标是能够替代其仿真对象。 这是一个重要的观点。 仿真的重点更多地集中在目标的内部状态建模上,而仿真并不一定导致模拟。 特别是,仿真可能比实时运行缓慢得多。 例如,SPICE不能替代实际的电子电路(即使假设有某种完美地将电路与SPICE仿真器接口的神奇设备)。 仿真不一定会导致模拟。
如果一个飞行模拟器可以将你从A运送到B,那么它就是一台飞行仿真器。
仿真器可以替代原始系统进行真实使用。
虚拟PC模拟一个PC。
模拟器是用于研究和分析的模型。
仿真器总是必须接近实时操作。对于模拟器来说情况并非总是如此。地质学仿真可以达到每秒1000年或更多。
模拟 = 用于分析和研究
仿真 = 用作替代品
模拟器是模拟某物的环境,而仿真器则是复制原始设备或系统的使用方式。
模拟器模仿的是它所模拟的东西的活动。对用户来说,例如飞行模拟器“看起来”像一次真正的飞行,尽管它不会将您从一个地方运送到另一个地方。
另一方面,仿真器实际上“执行”被仿真对象所执行的操作,并且在这样做时它也“似乎在执行相同的操作”。仿真器可能使用不同的协议来模拟被仿真对象,但结果/输出始终与原始对象相同。例如,EMU8086在计算机上模拟了8086微处理器,显然不是在8086上运行(=不同的协议),但它提供的输出与真实的8086相同。
这是一种关注点的不同。模拟器1关注于重现系统行为,而不考虑系统内部的功能。仿真器2则专注于模拟系统组件。当您更关心系统的功能时,您将使用仿真器;当您更关心系统所做的事情时,则使用模拟器。
至于它们的通用英语含义,仿真是“努力在质量或动作上达到或超越另一个人”,而模拟是“对行为、外观或属性进行建模、复制、复制” 。差别不大。仿真来自于拉丁语“similis”(类似),与单词“similar”(类似)相关联,这可能暗示了更深层的一致性。而“模拟”则来自于拉丁语“æmulus”(竞争者),与“imitate”(模仿)和“image”(形象)相关联,这可能暗示了表面上的相似之处。
参考文献:
模拟器是在另一种思维环境中使用的,例如飞行模拟器、汽车模拟器等。模拟将只关注实际事物的某些方面,通常涉及到人类如何感知和控制它。模拟器不会执行真正的功能,也不能替代它。飞机模拟器不会飞行或搭载人员,这完全不是它的目的。模拟器的目的并不是为了工作,而是为了以某种方式出现在飞行员眼前,以达到除了其正常用途之外的目的,例如允许地面培训(包括在异常情况下的所有发动机故障)。因此,模拟器定义应该是:某种可以在人类眼前部分地出现与原物相同的东西,但无法替代其实际使用。此外,飞行员将知道模拟器是模拟器。
我认为我们不会看到任何ROM模拟器,因为ROM不与人类进行交互,我们也不会看到任何飞机仿真器,因为飞机无法有一个能够在现实世界中执行相同功能的替代品。
在我看来,仿真器或模拟器内部的模型可以是任何东西,并且不必类似于原始模型。ROM仿真器模型可能是软件而不是硬件,微软飞行模拟器不能比现在更多地成为软件。
这两个术语的比较将与当前选定答案(来自Toybuilder)的区别相矛盾,后者将差异放在内部模型上,而我的建议是,假装物能否在实际世界中用于执行实际功能(在一定程度上)。
请注意,飞机模拟器还必须模拟地球、太阳、风等不属于飞机的东西,因此,飞机模拟器将不得不模仿飞机的某些方面,以及飞机的环境,因为它并非在实际环境中使用,而是在培训室中使用。
这与仅模拟原版的模拟器存在很大区别,它的目的是在不需要模拟原版的情况下在原始环境中使用。回到平面背景下...可能会有一个飞机模拟器吗?也许是一辆列车,将连接两个机场 - 实际上是两个飞机步骤 - 运载乘客,有空中小姐在机舱内,车内装饰看起来像真正的飞机客舱,并有队长说“女士们先生们,我们的飞行高度目前为10千米,目的地的温度是24°C”。它的好处很难看到,嗯...
总之,模拟器是一个真实的东西,旨在工作,模拟器是一种伪造,旨在欺骗用户。
更通俗易懂地说:如果您的软件能够做到模拟系统可以做到的一切,那么它就是一个模拟器。如果它只是近似模拟系统(IT或其他)的结果,那么它就是一个仿真器。
模拟器是一个系统的模型,它可以接受模拟系统接受的任何有效输入,并产生相同的输出或结果。因此,只有当您的软件准确地重现了模拟系统的行为时,它才是一个模拟器。
几年前,我想出了一句非常简短的格言,我相信它很好地捕捉了两者之间的区别:
模拟器是一个有任务的仿真器。
我的意思是当你无法使用真正的设备时,你会使用仿真器;而当你无法使用真正的设备并且想要找出一些关于它的信息时,你会使用模拟器。
简单解释。
如果您想将运行Windows的PC转换为Mac,可以执行以下任一操作:
(1) 您可以在Windows上安装Mac主题。这样,您的PC就感觉像是Mac,但实际上您无法运行任何Mac程序。
(模拟)
或者
(2) 您可以编程使PC运行得像Mac(我不确定是否可能:P)。现在,您甚至可以成功运行Mac程序,并期望与Mac相同的输出。
(仿真)
在第一种情况下,您可以体验Mac,但不能期望与Mac相同的输出。
在第二种情况下,您可以期望与Mac相同的输出,但事实仍然是它只是一台PC。