2013-07-21 3 views
3

Какова разница между интерпретатором и виртуальной машиной в шаблонах проектирования ООП, особенно в контексте игрового программирования?Интерпретатор против виртуальной машины

http://www.oodesign.com/interpreter-pattern.html идентифицирует шаблон интерпретатора в качестве своего рода отображения:

Карты домен на язык, язык для грамматики и грамматики к иерархическому объектно-ориентированному проектированию

С другой стороны, виртуальная машина должна быть ... что именно?

Я предполагаю, что это должна быть какая-то коллекция объектов для выполнения расчетов по Тьюрингу. Каково его использование, помимо получения наименее общего знаменателя для аппаратной совместимости (самым большим примером является платформа Java)?

Можете ли вы представить прецедент для виртуальной машины без необходимости переноса приложения на другую платформу (и для игр)? Предполагает ли VM, что существует явный абстрактный язык, и интерпретатор его командует?

ответ

0

Две различные абстракции Так что в терминах .Net два разных языка-источника могут интерпретировать один и тот же результат, с дополнительным бонусом, который нужно интерпретировать только один раз.

VM, как вы говорите, абстрагирует вас от «физической» среды и в качестве бонуса позволяет вам специально оптимизировать для них.

Одно использование для обоих будет игровым движком. Скажите основное текстовое приключение.

Таким образом, вы могли бы описать комнату на французском и английском языках, и это приведет к тому же объекту и событиям.

С VM вы могли бы действие, описание, скажем, Winforms или ActionScript

0

ВМ сортов существует в большинстве языков в виде библиотеки времени выполнения; и он существует в potentio в любом интерпретаторе, если часть анализатора/компилятора удалена. Но это действительно не настоящая виртуальная машина, пока она не будет правильно указана, как правило, в виде грамматики для байтового кода.

Если вы прочитали о внутренностях Perl для версии 4, а затем что-то о байт-коде Parrot или JVM, разница должна быть очевидной. Интерфейс между поддержкой времени выполнения и языком/компилятором гораздо более четко разграничен. Виртуальная машина - это программное обеспечение двигатель, который может быть оптимизирован с помощью технических средств.

На более высоком уровне дизайна наличие виртуальной машины в реализации языка позволяет более четко определить допустимую семантику языка. Обеспечение контроля границ по массивам, по крайней мере. :)

Смежные вопросы