Vyšlo v týdeníku Computerworld č. 10/92 v roce 1992
Vytištěno z adresy: http://www.earchiv.cz/a92/a210c120.php3

Simulace vs. emulace

Napadlo vás někdy, jak těžký úkol musí představovat takový způsob řízení dopravy, který by zajišťoval co nejlepší průjezdnost určitého městského celku, odstraňoval dopravní zácpy a minimalizoval prostoje aut na křižovatkách? Určité prostředky k řízení dopravy existují - hodně je možné dosáhnout např. už jen ovládáním světelné signalizace na křižovatkách. Ale jak? Podle jakých pravidel?

Problém je v tom, že dopravní systém, se všemi svými křižovatkami, ulicemi, auty a chodci, je nesmírně složitým organismem. Jeho chování jako celku není v podstatě předem známo: jak se např. zachová, změní-li se intervaly světelné signalizace na jedné jediné křižovatce? Praktické experimenty obvykle nepřipadají v úvahu - například již jen pro značnou náročnost jejich přesného vyhodnocení. Co tedy dělat, máme-li najít alespoň trochu rozumný způsob řízení tak složitého komplexu?

Jednou z možností je vytvořit model dopravního systému ve formě počítačového programu, který by co nejvěrněji modeloval chování jednotlivých složek (aut, chodců, signalizačních zařízení) i celého systému jako celku, se všemi jeho vazbami a souvislostmi (mj. se sítí ulic a jejich průjezdností). S takovým modelem pak můžeme snáze experimentovat, například zjišťovat jeho reakce na různé podněty - změny přikázaných rychlostí, délky časových intervalů světelné signalizace na křižovatkách, změny intenzity provozu apod. Pomocí modelu tak získáváme poznatky o původním modelovaném systému, které pak můžeme uplatnit při jeho skutečném řízení.

Právě naznačený postup je příkladem simulace - v našem případě počítačové simulace dopravního systému. V obecném případě jde při simulaci o nahrazení zkoumaného systému jiným systémem, který jej modeluje a se kterým pak provádíme experimenty, s cílem získat informace o původním zkoumaném systému.

Simulace má tedy za cíl získat nové poznatky, které z nejrůznějších důvodů nejsme schopni získat přímo, zkoumáním původního systému či experimentováním s ním.

Jiná situace ovšem nastává v případě, kdy o určitém systému "víme všechno", ale nemáme ho k dispozici. Jeho funkce však potřebujeme, a tak je musíme realizovat těmi prostředky, které k dispozici máme. Představme si opět příklad: máme osobní počítač, který není vybaven numerickým koprocesorem. Místo něj však můžeme používat vhodnou knihovnu numerických podprogramů, která nám zajistí to, co bychom jinak mohli požadovat od koprocesoru (samozřejmě ale o mnoho pomaleji). V tomto případě jde o emulaci, konkrétně o emulaci koprocesoru programovými prostředky. Jiným příkladem může být např. situace, kdy se osobní počítač, vhodným způsobem připojený k sálovému počítači, chová jako jeho (jednoúčelový) terminál. Osobní počítač zde pak vystupuje v roli emulovaného terminálu.

Rozdíl mezi simulací a emulací je tedy především v tom, k čemu slouží - simulace k získání nových poznatků o určitém systému, zatímco emulace umožňuje zajištění jeho funkcí jinými prostředky.