Следующий ответ был написан в 2009 году. См. Также это 2015 обновление по raiph .
Чтобы расширить @Reed и указать на некоторые основные моменты, коды операций Parrot находятся на гораздо более высоком уровне, чем большинство виртуальных машин. Например, в то время как большинство машин хранят целые числа и числа с плавающей запятой, основными регистрами являются целые числа, числа, строки и файлы cookie Parrot Magic Cookies (PMC). Просто встроенные строки - это шаг вперед по сравнению с JVM.
Более интересным является PMC, вроде как объектный тип JVM, но гораздо более функциональный. PMC - это контейнер для всех других более сложных типов , которые вам нужны на реальном языке, таком как массивы, таблицы, деревья, итераторы, ввод-вывод и т. Д. PMC и широкий набор встроенных операций для него означают меньше работы для автора языка. Попугай не уклоняется от грязной, но необходимой части реализации языка.
Моя информация может быть устаревшей, но я считаю, что коды операций являются подключаемыми, вы можете отправить виртуальную машину Parrot, которая содержит только коды операций, необходимые для вашего языка. Они также будут наследуемыми, если ваш язык хочет, чтобы их массивы работали несколько иначе, чем стандартные массивы Parrot, вы можете сделать это подклассом.
Наконец, Parrot можно написать не только на ассемблере ( PASM ), но и на языке немного более высокого уровня, Parrot Intermediate представителями (PIR) . В PIR есть циклы, подпрограммы, локализованные переменные и некоторые базовые математические операции и операции сравнения - все те основы, которые люди ожидают от языка программирования, не отходя слишком далеко от металла.
В целом, Parrot очень дружелюбен к языковым дизайнерам (написанным и для них), которые хотят разработать язык и оставить как можно большую часть реализации кому-либо еще.