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

StackOverflow https://stackoverflow.com/questions/1811048

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

Об этом можно прочитать в Intro Parrot VM Intro. страница.

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

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

Я недостаточно разбираюсь в JVM и CLR, но мои советы:

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

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

  

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

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

  

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

В другом ответе на этой странице , Reini Urban, текущий (апрель 2015 г.) ведущий разработчик Parrot, дается краткое Сравнение Parrot с JVM и CLR VM.

По словам Рейни , ключевое преимущество Parrot по сравнению с MoarVM - это "эффективно блокируемые потоки".

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top