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