Языковые движки VS. Время выполнения VS. Виртуальные машины процессов

С ростом популярности JavaScript мне было интересно услышать (даже во время той же речи ) либо о движке JavaScript, либо о виртуальной машине JavaScript, либо о интерпретаторе JavaScript в том же контексте и ссылаясь на одно и то же.

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

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

Хотя я обнаружил, что их обязанности во время выполнения в основном одинаковы, я обнаружил также некоторые основные отличия:

  1. Виртуальные машины процессов

    • are the most complex (implements even the IO, virtual instruction set etc.)
    • всегда включает интерпретатор + промежуточный язык
    • кроме может также включать компиляцию (своевременную и / или динамическую перекомпиляцию)
    • приложения запускаются только внутри процесса ВМ как поток
    • в сочетании со средой выполнения
    • примеры: виртуальная машина Java, виртуальная машина Dalvik
  2. Время выполнения

  3. Языковые движки

Вопросы:

  • является ли верхний список точным, или это просто побочный продукт, основанный на полностью случайном сходстве между наиболее распространенными системами времени выполнения, которые используют одно и то же обозначение?

  • есть ли еще другие примечательные отличия?


person Teodor Tite    schedule 01.06.2016    source источник
comment
Как программист высокого уровня, я тоже всегда интересовался различиями. Я думаю, что из-за сходства и новой природы развивающихся технологий люди склонны говорить нечетко и будут использовать некоторые из этих терминов как синонимы. Я часто слышу это с компилятором и транспилятором. Спасибо за резюме, я нашел его полезным!   -  person andrewkeithly    schedule 20.03.2021