Как Parrot сравнивается с другими виртуальными машинами? - PullRequest
28 голосов
/ 28 ноября 2009

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

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

Ответы [ 7 ]

34 голосов
/ 28 ноября 2009

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

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

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

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

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

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

15 голосов
/ 28 ноября 2009

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

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

5 голосов
/ 12 апреля 2015

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 - это "эффективно блокируемые потоки".

5 голосов
/ 24 декабря 2009

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

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

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

5 голосов
/ 28 ноября 2009

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

3 голосов
/ 05 сентября 2014

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

2 голосов
/ 22 января 2016

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

...