Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Parrot – это название упомянутой выше виртуальной машины. На ранней стадии использовался собственный ассемблер (Parrot assembler, PASM), который содержит набор инструкций, очень похожих на те, которые применяются в обычном ассемблере для физических RISC-процессоров. Все операции выполняются с операндами в виртуальных регистрах разных типов: например, в одних регистрах хранятся целые числа, в других строки. Один из типов необычен (как и его название Parrot Magic Cookie, PMC) и предназначен специально для поддержки объектно-ориентированного программирования. Байт-код сохранялся в файле с расширением .pbc (pre-compiled bytecode).
Поскольку число регистров ограниченно, программировать непосредственно на ассемблере PASM неудобно (конечно, прежде всего разработчикам компиляторов), и появились сопутствующий язык IMC (Intermediate Code) и компилятор IMCC (Intermediate Code Compier). IMC представляет собой надстройку над ассемблером и разрешает пользоваться произвольными переменными, поэтому нехватка регистров перестает ощущаться. Сегодня вместо IMC используется PIR (Parrot Intermediate Representation).
Ponie (еще одна тупиковая ветвь в развитии Perl 6) – это попытка создать компилятор в байт-код для программ, написанных на Perl 5.
Библиотека CPAN содержит набор модулей Perl6::*, которые были написаны, чтобы поэкспериментировать с синтаксисом шестой версии, имея компилятор пятой. Пользоваться этими модулями сегодня особой необходимости нет.
В состав Parrot входит около десятка компиляторов, создающих байт-код из программ на разных языках (иногда экзотических типа Ook!), в том числе экспериментальный компилятор Perl 6.
Компилятор в составе Parrot более не развивается, ему на смену пришел проект Pugs (Perl 6 User’s Golfing System), которым занимается Одри Танг. Pugs тоже внес свой вклад в список сокращений, например, создав собственный формат PIL (Pugs Intermediate Language).
Приветствие, выводимое при запуске Pugs
Установка Perl 6
Разбираться в месиве форматов необязательно, достаточно установить последнюю
версию Pugs. Правда, радужная картина немного меркнет, когда узнаешь, что Pugs
написан на языке Haskell, и для сборки необходим работающий компилятор. (А тем,
кто захочет попробовать в действии новые регулярные выражения, возможно,
потребуется и установленный Parrot.) Компилятор доступен на сайте
Итак, если для вашей платформы не нашлось бинарной версии Pugs, необходимо последовательно выполнить две процесса: установить компилятор GHC, после чего собрать Pugs.
Ссылки на исходные и бинарные коды находятся на
сайте проекта
Процесс сборки из исходных кодов стандартный для модулей Perl:
perl Makefile.PL
make
make install
Примечание: исходный код Pugs размещен на сайте CPAN, но он не имеет отношения к модулям Perl6::*, о которых говорилось в предыдущем разделе.
Во время подготовки статьи для тестирования программ я пользовался двумя версиями Pugs под Windows XP SP2 и Linux Red Hat 9. На каждой системе установлены GHC 6.6, Parrot 0.4.6, Pugs 6.2.13 и Perl 5.8.8.
Кстати, при установке Pugs просит самую последнюю версию компилятора GHC, сообщая, что с более ранней скомпилировать-то пока удастся, но скорость работы будет низкой, а в будущем старая версия GHC вообще не подойдет.
Компилятор Haskell под Windows установлен из msi-файла (необходим один дистрибутив размером 37 Мб, находящийся на официальном сайте).
На второй системе получить желаемый набор удалось не сразу. В первый раз компилятор GHC собрался из исходных кодов без ошибок (за пару часов), но затем при установке Pugs конфигуратор сообщил, что не хватает модуля mtl в составе GHC:
*** Could not load the "mtl" package in your GHC installation.