虽然我理解模拟和仿真的含义一般,但我几乎总是对它们感到困惑.假设我创建了一个模仿现有硬件/软件的软件,我该怎么称呼它?模拟器还是模拟器?
任何人都能解释编程方面的差异吗?
额外奖励:这两个术语的英语差异是什么?(对不起,我不是母语人士:))
仿真是模仿外部可观察行为以匹配现有目标的过程.仿真机制的内部状态不必准确地反映它正在仿真的目标的内部状态.
另一方面,模拟涉及对目标的基础状态进行建模.良好模拟的最终结果是模拟模型将模拟它正在模拟的目标.
理想情况下,您应该能够查看模拟并观察在查看原始目标时也会看到的属性.实际上,出于性能原因,可能会有一些模拟的快捷方式 - 也就是说,模拟的某些内部方面实际上可能是仿真.
MAME是街机游戏模拟器; Hyperterm是一个(不是很好)的终端模拟器.无需对街机或终端进行详细建模即可获得所需的模拟行为.
飞行模拟器是一个模拟器; SPICE是一个电子模拟器.他们尽可能地模拟目标的每个细节,以表示目标在现实中的作用.
编辑:其他回应指出,仿真的目标是能够替代它正在模拟的对象.这是一个重点.模拟的重点更多地放在目标内部状态的建模上 - 模拟并不一定会导致仿真.特别是,模拟可能比实时运行得慢得多.例如,SPICE不能替代实际的电子电路(即使假设有某种神奇的设备可以完美地将电路连接到SPICE仿真.)仿真仿真并不总是导致仿真 -
如果飞行模拟器可以将你从A运送到B,那么它将是一个飞行模拟器.
仿真器可以替换原件以供实际使用.
Virtual PC模拟PC.
模拟器是用于研究和分析的模型.
仿真器总是必须接近实时运行.对于并非总是如此的模拟器.地质模拟可以达到1000年/秒或更长时间.
模拟=用于分析和研究
仿真=用作替代品
模拟器是一种模型环境,但模拟器是复制原始设备或系统上的用法的模拟器.
模拟器模仿它正在模拟的东西的活动.它"出现"(很多可以用这个"出现",取决于上下文)与被模拟的东西相同.例如,飞行模拟器"出现"是对用户的真实飞行,尽管它确实将您从一个地方运送到另一个地方.
另一方面,模拟器实际上" 做 "了被模拟的东西所做的事情,并且这样做也" 似乎在做同样的事情 ".模拟器可以使用不同的协议集来模仿正在模拟的事物,但结果/结果始终与原始对象相同.例如,EMU8086模拟计算机上的8086微处理器,显然不是在8086(= 不同协议)上运行,但它提供的输出是真正的8086所能提供的.
这是焦点的差异.仿真器1专注于重建系统的行为,而不考虑系统如何在内部运行.模拟器2专注于对系统组件进行建模.当您主要关心系统的功能时,您可以使用模拟器,当您关心它是如何工作时,您可以使用模拟器.
至于他们的一般英语含义,模仿是"努力在质量或行动上等于或优于另一个",而模拟是" 模仿,复制,复制行为,外观或属性".差别不大.仿真来自æmulus,"奋斗,竞争",与"模仿"和"形象"有关,这表明了表面杠杆的相似性."模拟"来自similis "like","相似"这个词也可能表示更深的一致性.
参考文献:
维基百科:模拟器
维基百科:计算机模拟
维基词典:仿效
维基词典:模拟
词源在线:仿效
词源在线:模拟
我不认为可以比较仿真器和模拟器.两者都模仿某些东西,但不属于相同的推理范围,它们不会在相同的上下文中使用.
简而言之:模拟器旨在复制orginial的某些功能,甚至可以在真实环境中替换它.模拟器不是为了复制原件的特征而设计的,而是仅仅与原始人类相似.没有原始功能,模拟器无法在真实环境中取代它.
一个仿真器是模拟的东西足够近,以便它的设备可以替代真实的东西.例如,您希望电路像ROM(只读存储器)电路一样工作,但也希望调整内容直到它是您想要的.您将使用ROM仿真器,黑盒子(可能是基于CPU的),其物理和电气接口与您要模拟的ROM兼容.模拟器将插入设备以代替真实ROM.工作时主板不会有任何差异,但您可以轻松更改模拟ROM内容.否则,仿真器将完全按照其主板上下文中的实际内容(由于实际的内部模型可能稍微慢一点)但是在主板上下文中将只有设计者可见的其他功能(如重写) .因此,模拟器定义将是:模仿原始的东西,具有其所有功能特征,实际上可以在现实世界中的某些范围内替换它,并且可能具有在正常上下文中不可见的附加特征.
一个模拟器在另一个思维环境中使用,如飞机模拟器,汽车模拟器等模拟将只有实际的东西,通常是那些相关的一些方面照顾一个人会如何看待和控制它.模拟器不会执行真实的东西的功能,也不能取代它.飞机模拟器不会飞行或载人,这根本不是它的目的.模拟器不是为了工作,而是为了飞行员看起来像某些目的而不是正常目的,例如允许地面训练(包括在所有发动机故障等异常情况下).因此,模拟器定义将是:在某种程度上可以像人类一样出现在人类身上,但不能替代实际使用的东西.此外,飞行员将知道模拟器是模拟器.
我认为我们不会看到任何ROM模拟器,因为ROM不与人类交互,也不会看到任何平面模拟器,因为飞机无法在现实世界中执行相同功能的替换.
在我看来,模拟器或模拟器中的模型可以是任何东西,并且不能与原始模型相似.ROM仿真器模型可能是软件而不是硬件,MS Flight Simulator不能是软件.
这两个术语的比较将与当前选择的答案(来自Toybuilder)相矛盾,后者将差异放在内部模型上,而我的建议是不同之处在于伪造是否可以用于在现实世界中执行实际功能(事实上,某些已接受的延伸.
请注意,平面模拟器还将模拟不属于平面的地球,太阳,风等,因此平面模拟器必须模拟飞机的某些方面,以及平面的环境.飞机,因为它不是在这个实际环境中使用,而是在训练室中使用.
这与仅模拟原始模拟器的模拟器有很大不同,其目的是在原始环境中使用而无需模拟它.回到飞机上下文......什么可能是飞机模拟器?也许一列火车将连接两个机场 - 实际上是两个平面台阶 - 载着乘客,船上有空中小姐,汽车内部看起来像一个真正的飞机舱,并且船长说"女士们,先生们我们的海拔高度是10公里和温度在我们的目的地是24°C".它的好处很难看,哼......
作为结论,模拟器是一个真正意图工作的东西,模拟器是一个虚假的意图欺骗用户.
简单说明.
如果要将PC(运行Windows)转换为Mac,可以执行以下任一操作:
(1)您只需在Windows上安装Mac主题即可.所以,你的PC感觉更像Mac,但实际上你无法运行任何Mac程序.
(SIMULATION)
(要么)
(2)您可以将PC编程为像Mac一样运行(我不确定这是否可行:P).现在,您甚至可以成功运行Mac程序,并期望与Mac上的输出相同.
(EMULATION)
在第一种情况下,您可以体验Mac,但是您不能期望与Mac上相同的输出.
在第二种情况下,您可以期望与Mac上相同的输出,但事实仍然是它只是一台PC.
要了解模拟器和模拟器之间的区别,请记住模拟器试图模仿真实设备的行为.例如,在iOS模拟器的情况下,它模拟实际iPhone/iPad设备的真实行为.但是,模拟器本身使用Mac上安装的各种库(例如QuickTime)来执行其渲染,以使效果看起来与实际的iPhone相同.此外,在Simulator上测试的应用程序被编译为x86代码,这是Simulator理解的字节代码.相反,真正的iPhone设备使用基于ARM的代码.
相反,仿真器模拟真实设备的工作.在仿真器上测试的应用程序被编译为真实设备使用的实际字节代码.仿真器通过将字节代码转换为可由运行仿真器的主计算机执行的形式来执行应用程序.
要了解模拟和模拟之间的细微差别,想象一下,您正试图说服孩子玩刀具是危险的.为了模拟这一点,你假装用刀割伤自己并痛苦地呻吟.为了模仿这一点,你实际上削减了自己.
模拟器是系统的模型,它将接受模拟系统可接受的任何有效输入,并产生相同的输出或结果.因此,只有在精确再现仿真系统的行为时,您的软件才是仿真器.
几年前,我想出了一个非常简短的格言,我相信,它很好地捕捉了差异的本质:
模拟器是任务中的模拟器.
我的意思是,当你不能使用真实的东西时,你使用模拟器,当你不能使用真实的东西并且想要找到关于它的东西时,你使用模拟器.
或多或少的正常说法:如果您的软件可以完成模仿系统可以做的所有事情,那么它就是一个模拟器.如果它只是近似系统的结果(IT或其他),它就是一个模拟器.