Parrot
| Parrot | |||
|---|---|---|---|
| |||
| Тип | виртуальная машина | ||
| Разработчик | The Perl Foundation[вд] | ||
| Написана на | Си | ||
| Операционная система | Кроссплатформенное программное обеспечение | ||
| Последняя версия |
|
||
| Репозиторий | github.com/parrot/parrot | ||
| |||
| Лицензия |
(англ.) |
||
| Сайт | 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[англ.], Tcl, URM и YAL, но большая часть реализаций этих языков для Parrot неполна и находится в экспериментальном состоянии.
В 2014 году, в связи с проблемами развития Parrot, в качестве альтернативной реализации виртуальной машины для Perl 6 была выпущена MoarVM[англ.][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 для компиляции на лету от Риза Везерли, Клауса Трейчела, Алексея Демакова и Кирилла Кононенко
Примечания
- ↑ https://github.com/parrot/parrot/releases/tag/RELEASE_8_1_0
- ↑ http://www.parrot.org/news/2016/Parrot-8.1.0
- ↑ Programming Parrot (англ.). perl.com (1 апреля 2001). Дата обращения: 26 февраля 2015. Архивировано из оригинала 18 июля 2010 года.
- ↑ Андрей Шитов. Perl 6 XXI века // Pragmatic Perl. — декабрь 2014. — Вып. 22. Архивировано 13 сентября 2021 года.
Ссылки
- Parrot Virtual Machine (англ.). — официальная страница проекта. Дата обращения: 30 сентября 2011. Архивировано из оригинала 18 мая 2012 года.
- Parrot (29 февраля 2004). — перевод части документации. Дата обращения: 18 июля 2011. Архивировано из оригинала 26 сентября 2008 года.
- LXF73: Что такое...Parrot? — статья в LinuxFormat. Архивировано 18 мая 2012 года.
- Как использовать виртуальную машину Parrot: Часть 1, Часть 2, Алексей Снастин, IBM developerWorks
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
