Подтвердить что ты не робот

Как Parrot сравнивается с другими виртуальными машинами?

Parrot - это виртуальная машина, первоначально разработанная для Perl 6.

Какие технические возможности Parrot VM предлагают конкурирующие виртуальные машины, такие как Java Virtual Machine (JVM)/Hotspot VM и Отсутствует обычная среда выполнения (CLR)

4b9b3361

Ответ 1

Следующий ответ был написан в 2009 году. См. также обновление 2015 от raiph.

Чтобы расширить на @Reed и указать некоторые основные моменты, коды операций Parrot находятся на гораздо более высоком уровне, чем большинство виртуальных машин. Например, в то время как большинство машин хранят целые числа и float, базовые регистры являются целыми числами, числами, строками и Parrot Magic Cookies (PMC). Просто встроенные строки - это шаг вверх от JVM.

Более интересным является PMC, вроде типа объекта JVM, но гораздо более взаимозаменяемого. PMC - это контейнер для всех других более сложных типов, которые вам нужны на реальном языке, например массивах, таблицах, деревьях, итераторах, вводе-выводе и т.д. PMC и большое количество встроенных опций для него означает меньшую работу для писателя языка. Попугай не уклоняется от грязных, но необходимых бит реализации языка.

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

Наконец, Parrot может быть написан не только для ассемблера (PASM), но также немного более высокого уровня, Промежуточное представление попугаев (PIR). PIR имеет петли, подпрограммы, локализованные переменные и некоторые базовые математические и сравнительные операционные системы, все основы, которые люди ожидают на языке программирования, не заходя слишком далеко от металла.

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

Ответ 2

Вы можете прочитать об этом на странице Parrot VM Intro.

Основное преимущество Parrot над JVM или CLR заключается в том, что он предназначен для поддержки динамических языков во-первых и потенциально обеспечивает лучшую поддержку и производительность для динамически типизированных языков. JVM и CLR ориентированы скорее на поддержку статически типизированных языков, и многие из дизайнерских решений показывают это.

Ответ 3

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

Ответ 4

Я не знаю JVM и CLR, но мои советы:

  • динамические языки (замыкания, полиморфные скаляры, продолжения, совлокальные подпрограммы) поддержка (скорость)
  • отправка динамического метода,
  • функции первого класса,
  • первоклассные продолжения,
  • (необязательно, named,..),
  • зарегистрировать
  • имеет совместимость HLL, предоставляемую на уровне сборки
  • диапазон платформ

Обновление. Это, вероятно, не имеет значения, поскольку JVM является одним из бэкэндов Rakudo Perl 6 в настоящее время. См. Rakudo Perl 6 в JVM (Perl 6 Календарь пришествия 2013, День 3).

Ответ 5

Parrot - это виртуальная машина, первоначально разработанная для Perl 6.

Теперь есть две виртуальные машины, первоначально предназначенные для Perl 6; совершает MoarVM, начиная с 2012 года.

Какие технические возможности Parrot VM предлагают конкурирующие виртуальные машины, такие как виртуальная машина Java (JVM)/Hotspot VM и Common Language Runtime (CLR)?

В еще один ответ на этой странице, Reini Urban, текущий (апрель 2015 г.) Parrot lead dev, дает краткое сравнение Parrot с виртуальной машиной JVM и CLR.

Согласно Reini, ключевым преимуществом Parrot над MoarVM является "эффективно блокируемый поток".

Ответ 6

Основное преимущество и технические отличия JVM и CLR в том, что типы (классы, называемые PMC) и ops (методы) могут динамически загружаться из эффективных реализаций C, предоставляемых пользователем, а структура синтаксического анализатора для создания и расширения языков - это встроенный.

Ответ 7

Этот вопрос устарел. Rakudo Perl 6 больше не нацеливает попугай как бэкэнд; MoarVM является предпочтительным бэкэнд, а бэкэнд JVM - незавершенным (как правило, работает, но многие функции Perl 6 не реализованы или в настоящее время не работают). Работа над разработкой (не готова для пользователей) выполняется для добавления Javascript в качестве третьего бэкэнда.