Следующий ответ был написан в 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