Rakudo – компилятор Perl 6 на виртуальной машине Parrot::Журнал СА 3.2008
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6229
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6936
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4222
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3011
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3808
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3825
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6320
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3172
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3463
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7280
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10647
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12368
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14000
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9127
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7079
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5389
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4617
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3428
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3158
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3403
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3027
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Rakudo – компилятор Perl 6 на виртуальной машине Parrot

Архив номеров / 2008 / Выпуск №3 (64) / Rakudo – компилятор Perl 6 на виртуальной машине Parrot

Рубрика: Администрирование /  Администрирование

Андрей Шитов

Rakudo – компилятор Perl 6 на виртуальной машине Parrot

Rakudo – новое название компилятора Perl 6, входящего в дистрибутив виртуальной машины Parrot. Официальный сайт проекта – www.rakudo.org. И компилятор, и название – свежее направление в развитии шестой версии языка: первая запись в блоге разработчиков на этом сайте появилась 17 января 2008 года.

Название предложил Дамиан Конвей, оно происходит от японского перевода фразы The Way Of The Camel: Rakudа-do. Сокращенный вариант Rakudo (который по-японски к тому же имеет смысл «рай») и стал названием нового проекта.

Появление Rakudo означает, что разработчики вернулись к первоначальной идее создать компилятор Perl 6, который будет переводить программу в некий промежуточный байт-код, исполняемый виртуальной машиной.

Установка

Сейчас Rakudo является частью дистрибутива виртуальной машины Parrot и находится в каталоге languages/perl6. В будущем разработчики планируют перенести код в отдельный каталог или даже в отдельный репозиторий. Для установки Rakudo нужно загрузить дистрибутив Parrot либо из SVN-репозитория (https://svn.perl.org/parrot/trunk), либо по ссылке – http://svn.perl.org/snapshots/parrot/parrot-latest.tar.gz, а затем выполнить стандартные команды:

perl Configure.pl

make

make install

Ожидается, что в системе уже установлен пакет ICU, International Components for Unicode, (с соответствующими библиотеками libicuuc.so и libicudata.so). Если их нет, об этом нужно сообщить конфигуратору:

perl Configure.pl –-without-icu

После этого будет получена виртуальная машина, но компилятор Perl 6 требуется собрать отдельно: нужно перейти в каталог languages/perl6 и выполнить там команду make:

cd languages/perl6/

make perl6

Это создаст файл perl6.pbc (расширение pbc обозначает Parrot Byte Code), который по сути и является компилятором Perl 6.

Запуск программ на Perl 6 выполняется либо явно через Parrot:

parrot perl6.pbc programme.pl

либо просто:

perl6 programme.pl

Если не указать имя программы, Rakudo перейдет в интерактивный режим.

Для установки Parrot под Windows намного проще скачать инсталлятор с сайта http://parrotwin32.sourceforge.net. В комплекте сразу идет программа perl6.exe.

Комплект Rakudo

Реализация языка Perl 6 в Rakudo основана на стандартной грамматике, описанной в файле STD.pm, находящемся в репозитории Pugs: http://svn.pugscode.org/pugs/src/perl6/STD.pm.

Разработчики стремятся максимально следовать спецификации, описанной в STD.pm, и уже охватили значительную ее часть, но в каждом случае выполнена только базовая реализация отдельного фрагмента.

В папке languages/perl6/t содержится небольшой набор тестов, и предполагается, что в идеале Rakudo должен проходить тесты на спецификацию языка, которые сейчас хранятся опять же в репозитории Pugs: http://svn.pugscode.org/pugs/t.

Тесты

С одной стороны, Rakudo появился через несколько лет после того, как был создан Pugs, с помощью которого удалось попробовать многие возможности Perl 6, с другой – Rakudo это новый проект, поэтому он проходит свой собственный цикл развития, и многие конструкции языка здесь еще не реализованы. В то же время, благодаря активной работе программистов, новые возможности появляются довольно быстро. Все описанные далее простые программы работают в реализации Rakudo, входящей в Parrot 0.6.0. На предупреждения и ошибки, которые могут возникнуть при выполнении примеров, пока не стоит обращать особого внимания.

Связывание переменных

В Perl 6 существует механизм, называемый binding, создающий ссылки на переменные. Синтаксис связывания – $link := $var. Например:

my $hour = 14;

my $summertime := $hour;

say $hour;

$summertime++;

say $hour;

Эта программа дважды выводит на печать переменную $hour, но при этом печатает разные значения, хотя явного изменения этой переменной в программе нет.

for

Оператор for реализован более или менее полно. Например, уже сейчас можно пользоваться привлекательной конструкцией «for @value -> $var». К сожалению, выбирать за один шаг более двух значений пока нельзя.

my @values = <

    registration

    lunch

    coffee-break

    closing

>;

my $c = 0;

for @values -> $event {

    $c++;

    say "$c. $event";

}

Классы, isa и WHAT

В Rakudo реализованы элементы ООП, в частности, присутствует примитивная поддержка синтаксиса классов и сопутствующие методы WHAT и isa.

Вот пример простого класса, который использует закрытую переменную $!Name. На закрытость указывает вторичный сигил (восклицательный знак).

class Language {

    has $!Name;

    method give_name ($newname) {

        $!Name = $newname;

    }

    method say_name {

        say "This is $!Name";

    }

}

my $lang = Language.new();

$lang.give_name('Perl 6');

$lang.say_name();

Попытка узнать имя класса через вызов метода WHAT на переменной $lang и на имени класса Language на данный момент возвращает разные результаты, в то время как в Pugs – одинаковые:

say $lang.WHAT;

# печатает 'Refs' в Rakudo и 'Language' в Pugs

say Language.WHAT;

# везде печатает 'Language'

Метод WHAT позволит узнать тип значения, которое сейчас хранится в переменной.

Например:

my $var = 'Perl 6';

say $var.WHAT;

$var = 6;

say $var.WHAT;

Первый вызов say $var.WHAT напечатает Str, второй – Int.

Стоит обратить внимание на то, что если переменной присваивается результат вызова функции, то значение, возвращаемое WHAT, может оказаться не тем, которое мог бы ожидать программист:

$var = callme;

say $var.WHAT;

sub callme {

say 'I am a sub';

}

Эта программа напечатает Int. Объяснение простое: значение именно этого типа возвращает оператор say:

say (say 2).WHAT;

Метод isa позволяет проверить тип переменной. Например:

say "OK" if 10.isa('Int');

my $var = 'string';

say "OK" if $var.isa('Str');.

say "True" if (?100).isa('Bool');

say "True" if (Bool::False).isa('Bool');

Мультифункции

Мультифункции – набор функций с одинаковым именем, которые различаются типом и (или) количеством принимаемых аргументов. В объявлении должно присутствовать ключевое слово multi. Rakudo умеет различать такие функции:

multi sub say_time ($hour) {

    say "$hour:00";

}

multi sub say_time ($hour, $minute) {

    say "$hour:$minute";

}

say_time(14);

say_time(14, 15);

Try

В Rakudo реализован механизм перехвата исключений:

say 'before';

try {

    die 'Bye!';

}

say 'after';

Программа выводит обе строки 'before' и 'after', а сообщение об ошибке (в данном случае строка 'Bye!') содержится в переменной $!. Интересно отметить, что конструкция «проверить, не было ли ошибки» принимает такой вид: if !$!.

Регулярные выражения

Rakudo поддерживает базовый набор для работы с регулярными выражениями. В частности, именованные регулярные выражения можно создавать с помощью ключевого слова regex. К таким объектам можно обратиться по имени, например, при вызове оператора сопоставления:

regex language {Perl|XML};

say "ok" if 'Perl' ~~ /<language>/;

say "not ok" unless 'PHP' ~~ /<language>/;

Остальные вопросы, связанные с реализацией компилятора Rakudo Perl 6, будут освещены в одном из докладов на конференции YAPC::Russia «May Perl 2008», которая состоится в Москве 17-18 мая.

Официальный сайт мероприятия – http://2008.perlrussia.ru.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru