WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
Parrot
Тип виртуальная машина
Разработчик The Perl Foundation[d]
Написана на Си
Операционная система Кроссплатформенное программное обеспечение
Последняя версия
Лицензия

Artistic License и GNU GPL

 (англ.)
Сайт parrot.org
parrot.org
parrot.org

Parrot (пэррот или паррот; от англ. parrot — попугай) — виртуальная машина, используемая интерпретируемыми языками для эффективного исполнения байт-кода. Название происходит от первоапрельской шутки[3], когда было объявлено о создании нового языка, объединяющего Perl и Python.

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

Parrot планировалось сделать основой интерпретатора Perl, а также целевой платформой для компиляции кода Perl 6. Кроме реализованной части Perl 6, в байткод можно скомпилировать программы на других языках, включая APL, BASIC, Befunge, Brainfuck, Cola, Forth, Jako, Lisp, m4, Miniperl, Ook!, Parakeet, OpenComal, PHP, Plot, Pheme, Punie, Python, Ruby, Scheme, Span[en], Tcl, URM и YAL, но большая часть реализаций этих языков для Parrot неполна и находится в экспериментальном состоянии.

В 2014 году, в связи с проблемами развития Parrot, в качестве альтернативной реализации виртуальной машины для Perl 6 была выпущена MoarVM[en][4].

Примеры

Регистры

Parrot основан на использовании регистров, в отличие от большинства виртуальных машин, основанных на стеке. Parrot предоставляет 4 типа регистров:

  • I: целые числа (от англ. integer)
  • N: числа с плавающей точкой (от англ. number)
  • S: расширенные строковые регистры с поддержкой Юникода (от англ. string)
  • 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 для компиляции на лету от Риза Везерли, Клауса Трейчела, Алексея Демакова и Кирилла Кононенко

Примечания

  1. https://github.com/parrot/parrot/releases/tag/RELEASE_8_1_0
  2. http://www.parrot.org/news/2016/Parrot-8.1.0
  3. Programming Parrot (недоступная ссылка). perl.com (1 апреля 2001). Проверено 26 февраля 2015. Архивировано 18 июля 2010 года.  (англ.)
  4. Андрей Шитов. Perl 6 XXI века // Pragmatic Perl. — декабрь 2014. Вып. 22.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии