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

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

(Я новичок в проблеме с ВМ, поэтому, возможно, ответ очевиден)

EDIT

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

Ответы [ 2 ]

5 голосов
/ 17 августа 2011

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

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

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

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

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

4 голосов
/ 17 августа 2011

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

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

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

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

...