Мопсы (составитель)
Pugs — компилятор и интерпретатор языка Raku программирования , созданный 1 февраля 2005 года Одри Танг . (В то время Raku был известен как Perl 6.)
Разработка мопсов сейчас приостановлена. [1] при этом большая часть усилий по внедрению Raku сейчас осуществляется на Rakudo .
Обзор
[ редактировать ]Целью проекта Pugs была загрузка Perl 6 путем реализации полной спецификации Perl 6, как подробно описано в Synopses . Он написан на Haskell и специально предназначен для компилятора Glasgow Haskell .
Pugs включает в себя два основных исполняемых файла:
- Pugs — это интерпретатор с интерактивной оболочкой.
- Pugscc может компилировать программы Perl 6 в код Haskell, Perl 5, JavaScript или Parrot сборку виртуальной машины PIR- .
Pugs — бесплатное программное обеспечение , распространяемое на условиях Стандартной общественной лицензии GNU или Художественной лицензии . [2] Это те же термины, что и в Perl.
Нумерация версий
[ редактировать ]Номера основных/второстепенных версий Pugs сходятся к 2π (напоминая TeX и METAFONT , которые используют аналогичную схему); каждая значащая цифра в младшей версии представляет собой успешно пройденный этап. Третья цифра увеличивается для каждого выпуска. Текущие вехи:
- 6.0: Первый выпуск.
- 6.2: Базовые элементы ввода-вывода и потока управления; изменяемые переменные; назначение.
- 6.28: Классы и черты.
- 6.283: Правила и грамматики.
- 6.2831: Система типов и связывание.
- 6.28318: Макросы.
- 6.283185: Перенесите Pugs на Perl 6, если необходимо.
Совместимость с Перл 5
[ редактировать ]Начиная с версии 6.2.6, Pugs также имеет возможность встраивать Perl 5 и использовать модули CPAN , установленные в системе. Пример ниже демонстрирует использование популярного модуля Perl DBI для управления базой данных:
#!/usr/bin/pugs
use v6;
use perl5:DBI;
my $dbh = DBI.connect('dbi:SQLite:dbname=test.db');
$dbh.do("CREATE TABLE Test (Project, Pumpking)");
my $sth = $dbh.prepare("INSERT INTO Test VALUES (?, ?)");
$sth.execute(<PGE Patrick>);
$sth.execute(<Pugs Audrey>);
$sth.execute(<Parrot Leo>);
my $res = $dbh.selectall_hashref('SELECT * FROM Test', 'Pumpking');
# Just another Pugs hacker
say "Just another $res<Audrey><Project> hacker";
Модель развития
[ редактировать ]В качестве причин прогресса Мопсов было предложено несколько факторов:
- Haskell Статическая типизация может облегчить обнаружение ошибок программы во время компиляции. Код Haskell также часто считают кратким. Библиотека Parsec [1] — монадический комбинаторный парсер, полностью написанный на Haskell, упрощает синтаксический анализ. Поскольку Haskell — чисто функциональный язык , взаимодействие функционального кода с реальным миром (вводы/выводы и управляемая временем среда) требует размышлений. Чтобы добиться этого, Pugs широко использует монады .
- Использование Пагсом методологии, основанной на тестировании (принцип экстремального программирования ). Эта методология требует, чтобы каждый модуль имел тестовый код еще до того, как модули будут реализованы. Сторонники этой методологии утверждают, что она улучшает качество программного обеспечения . Однако проект часто замалчивал неудачные регрессионные тесты перед выпуском, лишая большую часть преимуществ разработки через тестирование. [ нужна ссылка ] .
- Либеральное предоставление Таном бита фиксации . Разработка Pugs в настоящее время основана на репозитории Subversion , и доступ к нему предоставляется свободно, особенно людям, желающим писать тесты. Благодаря этому накопилась огромная библиотека тестов. Другие реализации Perl 6 основаны на многих тестах, разработанных для Pugs в качестве исполняемой спецификации Perl 6.
- Стиль общения Тана; ее журнал (ссылка на который приведена ниже) привлек к проекту множество людей.
Несмотря на эти факторы, прогресс в реализации Haskell застопорился в конце 2006 года, поскольку личные проблемы не позволяли Одри уделять проекту столько времени, сколько она делала в 2005 году.
Многие участники Pugs с тех пор перешли к реализации систем, вдохновленных Perl6, в виде модулей CPAN на Perl 5, например проект Moose .
Ссылки
[ редактировать ]- ^ «Как реализовать Perl 6 в 2010 году» .
- ^ «Мопсы Апокриф 1» . Архивировано из оригинала 5 марта 2007 г. Проверено 9 марта 2007 г.