Мопсы (программирование) - Pugs (programming)
Мопсов это компилятор и устный переводчик для Раку язык программирования, начат 1 февраля 2005 г. Одри Танг. (В то время Raku был известен как Perl 6.)
Развитие мопсов приостановлено,[1] при этом большая часть усилий по внедрению Raku сейчас осуществляется Ракудо.
Обзор
Проект Pugs направлен на бутстрап Perl 6 путем реализации полной спецификации Perl 6, как подробно описано в Краткое содержание. Это написано в Haskell, специально нацеленные на Компилятор Glasgow Haskell.
Pugs включает в себя два основных исполняемых файла:
- Мопсов интерпретатор с интерактивной оболочкой.
- Pugscc может компилировать программы Perl 6 в код Haskell, Perl 5, JavaScript, или же Виртуальная машина Parrot с PIR сборка.
Мопсы это бесплатно программное обеспечение, распространяемых на условиях Стандартная общественная лицензия GNU или Художественная лицензия.[2] Это те же термины, что и Perl.
Нумерация версий
Старшие / второстепенные номера версий Pugs сходятся к 2π (что напоминает TeX и МЕТАФОНТ, которые используют аналогичную схему); каждая значащая цифра в дополнительной версии представляет собой успешно пройденный этап. Третья цифра увеличивается для каждого выпуска. Текущие вехи:
- 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 / мопсыиспользовать v6;использовать perl5: DBI;мой $ dbh = DBI.соединять('dbi: SQLite: dbname = test.db');$ dbh.делать(«СОЗДАТЬ ТАБЛИЦУ Тест (проект, накачка)»);мой $ sth = $ dbh.подготовить("ВСТАВИТЬ ЗНАЧЕНИЯ теста (?,?)");$ sth.выполнять(<PGE Patrick>);$ sth.выполнять(<Pugs Audrey>);$ sth.выполнять(<Parrot Leo>);мой $ res = $ dbh.selectall_hashref('ВЫБРАТЬ * ИЗ теста', 'Pumpking');# Просто еще один хакер Pugsсказать "Еще один хакер $ res " ;
Модель развития
В качестве причин прогресса Мопса было предложено несколько факторов:
- Haskell's статическая типизация может упростить обнаружение ошибок программы во время компиляции. Код Haskell также часто считается лаконичным. Библиотека Parsec [1], а монадический комбинаторный парсер, полностью написанный на Haskell, упрощает синтаксический анализ. Поскольку Haskell - это чисто функциональный язык Чтобы функциональный код взаимодействовал с реальным миром (входы / выходы и среда, управляемая временем), необходимо подумать. Для этого Pugs широко использует монады.
- Мопсы используют методология тестирования (принцип Экстремальное программирование ). Эта методология требует, чтобы каждый модуль имел тестовый код, даже до того, как модули будут реализованы. Сторонники этой методологии утверждают, что она улучшает качество программного обеспечения. Тем не менее, проект часто заставлял замолчать неудачные регрессионные тесты перед выпуском, что лишало многих преимуществ разработки через тестирование.[нужна цитата ].
- Либеральное предоставление Таном бит фиксации. Разработка Pugs в настоящее время основана на Subversion репозиторий, и доступ предоставляется бесплатно - особенно людям, желающим писать тесты. Из-за этого накопилась огромная библиотека тестов. Другие реализации Perl 6 полагаются на многие тесты, разработанные для Pugs в качестве исполняемой спецификации для Perl 6.
- Стиль общения Тан; ее журнал (ссылка ниже) привлек к проекту множество людей. Разработчики Pugs тоже собираются на # perl6 Freenode IRC канал.
Несмотря на эти факторы, прогресс в реализации Haskell застопорился в конце 2006 года, поскольку личные проблемы не позволили Одри посвятить проекту столько же времени, сколько в 2005 году.
С тех пор многие участники Pugs перешли к реализации систем, вдохновленных Perl6, в виде модулей CPAN на Perl 5, таких как лось проект.