Interested Article - Parrot
- 2020-06-28
- 1
Parrot ( пэррот или паррот ; от англ. parrot — попугай) — виртуальная машина , используемая интерпретируемыми языками для эффективного исполнения байт-кода. Название происходит от первоапрельской шутки , когда было объявлено о создании нового языка, объединяющего Perl и Python .
Одной из важных причин для разработки новой виртуальной машины стало различие между языками со статическими и динамическими типами данных. Современные распространенные виртуальные машины, как, например, Java VM и .NET CLR , были разработаны для языков со статическими типами данных, тогда как языки, на поддержку которых нацелен Parrot, используют динамические типы. Виртуальная машина Parrot основана на использовании регистров , а не стека , так как, по мнению разработчиков, это увеличивает скорость и лучше отражает устройство современных процессоров.
Parrot планировалось сделать основой интерпретатора Perl , а также целевой платформой для компиляции кода Perl 6 . Кроме реализованной части Perl 6, в байткод можно скомпилировать программы на других языках, включая APL , BASIC , Befunge , Brainfuck , , Forth , Jako , Lisp , m4 , , Ook! , , , PHP , , , , Python , Ruby , Scheme , , Tcl , и , но большая часть реализаций этих языков для Parrot неполна и находится в экспериментальном состоянии.
В 2014 году, в связи с проблемами развития Parrot, в качестве альтернативной реализации виртуальной машины для Perl 6 была выпущена .
Примеры
Регистры
Parrot основан на использовании регистров , в отличие от большинства виртуальных машин, основанных на стеке. Parrot предоставляет 4 типа регистров:
- I: целые числа (от англ. i nteger )
- N: числа с плавающей точкой (от англ. n umber )
- S: расширенные строковые регистры с поддержкой Юникода (от англ. s tring )
- P: PMC, или Parrot Magic Cookie — специальный тип объектов Parrot
До версии 0.3.0 включительно Parrot обычно предоставлял программам по 32 регистра каждого типа с возможностью увеличения этого числа до 64. Более поздние версии стали предоставлять неограниченное число регистров; каждая функция может запросить столько регистров, сколько ей требуется.
Parrot Assembly Language
Кроме, непосредственно, байткода в Parrot есть специальный язык низкого уровня Parrot Assembly Language (PASM). Ниже приведен пример небольшой программы на нём:
set I1, 4 # Запись в регистр I1 числа 4 inc I1 # Инкремент I1 add I1, 2 # Добавление к I1 двойки; значение в I1 станет равным 7 set N1, 42.0 # Запись в N1 значения 42.0 dec N1 # Декремент N1, новое значение будет 41.0 sub N1, 2.0 # N1 станет равным 39.0 print I1 # Вывод содержимого I1 print ", " # Вывод строки «, » print N1 # Вывод значения N1 print "\n" # Вывод символа перевода строки end
Поддерживаемые платформы
Parrot компилируется и запускается на большом числе платформ, включая все самые распространенные, в том числе Linux ( x86 ), Cygwin , Win32 , Tru64 , OpenVMS (Alpha), Solaris ( Sparc ), FreeBSD (x86).
См. также
- Библиотека libJIT для компиляции на лету от Риза Везерли, Клауса Трейчела, Алексея Демакова и Кирилла Кононенко
Примечания
- . perl.com (1 апреля 2001). Дата обращения: 26 февраля 2015. Архивировано из 18 июля 2010 года. (англ.)
- Андрей Шитов. // Pragmatic Perl. — декабрь 2014. — Вып. 22 . 13 сентября 2021 года.
Ссылки
- (англ.) . — официальная страница проекта. Дата обращения: 30 сентября 2011. Архивировано из 18 мая 2012 года.
- (29 февраля 2004). — перевод части документации. Дата обращения: 18 июля 2011. Архивировано из 26 сентября 2008 года.
- — статья в LinuxFormat . 18 мая 2012 года.
- , , Алексей Снастин, IBM developerWorks
|
Это
заготовка статьи
о
программном обеспечении
. Помогите Википедии, дополнив её.
|
- 2020-06-28
- 1