Зачем использовать Parrot (или другую виртуальную машину), если у меня есть переводчик?

Зачем мне использовать виртуальную машину, например Parrot, для динамического языка, который я использую (Python, Perl, ...), если у меня уже есть интерпретатор? Что я потенциально могу получить за счет использования разных виртуальных машин между моим кодом и моей машиной, а также за счет использования отдельного интерпретатора?

(Я новичок в проблеме с виртуальной машиной, поэтому, возможно, ответ очевиден)

РЕДАКТИРОВАТЬ

В чем преимущество Parrot VM для конечных пользователей?


person Jakub M.    schedule 17.08.2011    source источник
comment
Могу я спросить, какой у вас интерптетер? Насколько мне известно, нет специальных интерпретаторов, доступных ни для Perl, ни для Python - все существующие реализации используют виртуальные машины.   -  person SK-logic    schedule 17.08.2011
comment
Что ж, штатный переводчик. Я не знал, что там есть ВМ   -  person Jakub M.    schedule 17.08.2011
comment
Тем не менее, каковы потенциальные преимущества использования виртуальной машины, отличной от той, которая уже поставляется с интерпретатором?   -  person Jakub M.    schedule 17.08.2011
comment
Наличие единой общей виртуальной машины позволяет иметь общие библиотеки, упрощает взаимодействие между разными языками, снижает затраты на обслуживание и т. Д.   -  person SK-logic    schedule 17.08.2011


Ответы (2)


Зачем мне использовать виртуальную машину, например Parrot, для динамического языка, который я использую (Python, Perl, ...), если у меня уже есть интерпретатор?

Во-первых, если вы начинаете проект, возможно, у вас еще нет переводчика.

Однако, если у вас есть интерпретатор и вы думаете, добавить ли к нему функциональность или переписать для использования Parrot, на ум приходят следующие компромиссы:

  • В общем, Parrot, вероятно, лучше протестирован, чем рассматриваемый интерпретатор (лучший оптимизатор, лучший сборщик мусора и т. Д.)
  • В целом разработчики Parrot знают о кроссплатформенных проблемах больше, чем обычные программисты.
  • В общем, Parrot решил большинство проблем, с которыми вы, вероятно, столкнетесь.
  • Parrot был разработан с учетом полной универсальности, и это добавило тонны сложности; вам может не понадобиться дополнительная общность

Лично меня было бы достаточно оптимизатора Parrot (и конструкции на основе регистров, в основном для упрощения оптимизации) и хорошо протестированной кроссплатформенной кодовой базы, чтобы убедить меня.

person Max Lybbert    schedule 17.08.2011

Анализ исходного кода ASCII выполняется медленно. Быстрее, если исходный файл будет проанализирован один раз, а затем интерпретатор будет использовать двоичную структуру. В Python эта структура сохраняется в .pyc файлах для быстрого повторного использования.

Есть два шага:

  1. Разобрать исходный код, создать байт-код
  2. Запустить (интерпретировать) байтовый код.

Это используется, например, scala: Scala-VM не существует. Scala - это просто новый синтаксис. Компилятор scala создает байт-код java.

person guettli    schedule 17.08.2011