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

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

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


person knorv    schedule 27.11.2009    source источник


Ответы (7)


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

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

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

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

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

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

person Schwern    schedule 28.11.2009
comment
@raiph Ваше редактирование, в которое добавлено обширное обновление 2015 года, относится к отдельному ответу или комментарию. Это слишком обширное добавление нового контента для редактирования. - person Schwern; 31.03.2015
comment
Спасибо за просмотр моей правки и комментарии. Будет ли работать, если я добавлю новый ответ, а затем вы или я добавим строку в начале вашего ответа, ссылающуюся на новый ответ? В настоящее время большинство людей, использующих SO для получения информации о Parrot, будут думать, что Parrot - это виртуальная машина, изначально разработанная для Perl 6, что ужасно неоднозначно, и что ваш ответ будет достойным в 2015 году (у него зеленая галочка. mark, и я предполагаю, что он не получит голосов в течение многих лет, если вообще когда-либо, несмотря на неработающие ссылки и т. д.). - person raiph; 31.03.2015
comment
@raiph Да, звучит здорово. Напишите ответ о текущей ситуации и отредактируйте мой, чтобы на него была ссылка. - person Schwern; 31.03.2015

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

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

person Reed Copsey    schedule 28.11.2009

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

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

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

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

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

person Community    schedule 12.04.2015

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

person hobbs    schedule 28.11.2009

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

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

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

person mj41    schedule 24.12.2009

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

person rurban    schedule 05.09.2014

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

person Coke    schedule 21.01.2016