Разница между симуляторами и эмуляторами | welcome to eL

Разница между симуляторами и эмуляторами

17.03.2014

терминология, симуляторы и тренажёры по работе с программным обеспечением (ПО), эмуляторы ПО

В последнее время в eL-среде всё чаще встречаю статьи, в которых путаются понятия "эмулятор" и "симулятор". Некоторые почему-то упорно отказываются различать эти термины (тем более сейчас весна), вводя тех, кто в этой теме пока ещё не разбирается, в заблуждение. Собственно, данная тема ещё более увлекательная, чем holywar на тему "щёлкать или нажимать".

На первой картинке мы видим 2 скриншота: слева — оригинальная программа, справа — эмулятор этой программы.




На второй картинке тоже 2 скриншота: слева — оригинальная программа, справа — симулятор этой программы.




Разницы между этими скриншотами никакой нет. То есть, визуально симулятор ПО и эмулятор ПО зачастую могут выглядеть одинаково.

Итак, давайте сравним два понятия —  эмулятор и симулятор, чтобы понять, в чём заключается различие. Часть формулировок, которые я привёл ниже, были взяты из справочников, а также со специализированных форумов.

Что же такое эмулятор?


Начнём с понятия "эмуляция". Эмуляция — это воспроизведение работы программы или системы (а не какой-то её мизерной части) с сохранением ключевых её свойств и принципов работы. Эмуляция выполняет программный код в привычной для этого кода среде, состоящей из тех же компонентов, что и эмулируемый объект.

Пример эмулятора. Все мы знакомы с программой (системой) 1С. Сотрудники выполняют рабочие задачи в "боевом" режиме программы, в рамках которого, к примеру, сохраняется связь с реальными базами данных. Иногда программисты в целях обучения или тестирования функционала программы создают "тестовую" версию программы, в рамках которой можно делать всё тоже самое, что и в "боевой" версии с той разницей, что любые действия пользователя ни на что не повлияют (к примеру, можно смело "грохнуть" базу данных без какого-либо ущерба - просто для того, чтобы посмотреть, что в результате будет). Пожалуй, это можно назвать эмуляцией. Кстати, это отличая замена обучающим симуляторам и тренажёрам ПО (точнее симуляторы ПО выступают заменой таким эмуляторам). Особенно, если такой эмулятор напичкать сообщениями с обратной связью и подсказками для пользователя.

В отличие от симуляции, при которой предполагается имитация поведения системы и её интерфейса, термин эмуляция предполагает создание точной модели устройства.

Эмулируются все основные компоненты устройства, в том числе процессор, память и устройства ввода/вывода. Поскольку эмулируется и процессор, совершенно не обязательно чтобы в гостевой системе (эмулируемом устройстве) процессор был того же типа, что и в хост-системе (эмулирующем устройстве). #

IBM, компания, которая ввела термин "эмуляция" определяет её как "новую комбинацию программы, микрокода и оборудования". До 1980-х годов термин "эмуляция" относился исключительно к аппаратной реализации с применением микрокода, тогда как для программной эмуляции использовался термин "симуляция". Например, компьютер, специально разработанный для выполнения программ, написанный для другой архитектуры, являлся эмулятором. С другой стороны симулятором могла бы называться программа для ПК, с помощью которой можно было бы симулировать старые игры для Atari. #

Симуляция — это воспроизведение работы программы-оригинала сугубо виртуально, на движке специальной программы (средство разработки курсов, к примеру). Симуляция лишь имитирует выполнение кода, а не копирует его, всё виртуально на 100%, всё понарошку.

Как правило, симулятор ПО —  это имитация лишь отдельных свойств, возможностей или функций симулируемой программы, причём не в полном объёме, а только в том, в каком это необходимо в рамках тех задач, которые были поставлены перед симулятором. Вы как будто бы работаете в настоящей программе, но при этом функционал полностью или почти полностью "фальшивый", как правило" написанный совершенно иначе, чем в оригинале (например, на другом языке программирования). Но зато, работая в симуляторе, вы понимаете, как работать в оригинальной программе, понимаете то, как будет реагировать программа на ваши действия.

Нашёл на просторах инета хороший наглядный пример: подключив к телевизору генератор тестовых сигналов, мы получим эмуляцию приёма этих сигналов, а вставив в телевизор картинку и осветив её лампочкой, мы получим симуляцию приёма сигналов. В результате мы увидим одно и то же — ряд картинок на экране, которые появляются при тестировании сигнала. Но реализация, как вы понимаете, существенно различается.

Симулятор по полноте функций/учитываемых параметров уже, чем эмулятор. Эмулируется объект, а симулируются его свойства, функции или поведение.

Эмулятор ПО — полнофункциональный аналог оригинального ПО, либо его версия, в которой может быть предусмотрен ряд ограничений по функционалу, возможностям и поведению ПО.

Симулятор ПО — модель оригинального ПО, в которой реализуется логика работы этого ПО (частично или полностью), имитируется поведение ПО, копируется его интерфейс.