Pugs (программирование)

редактировать

Pugs - это компилятор и интерпретатор для Raku язык программирования, созданный 1 февраля 2005 года Одри Танг. (В то время Raku был известен как Perl 6.)

Разработка Pugs сейчас приостановлена, и большая часть усилий по внедрению Raku теперь приходится на Rakudo.

Содержание
  • 1 Обзор
  • 2 Нумерация версий
  • 3 Совместимость с Perl 5
  • 4 Модель разработки
  • 5 Ссылки
  • 6 Внешние ссылки
Обзор

Проект Pugs был нацелен на загрузку Perl 6 путем реализации полной спецификации Perl 6, как подробно описано в Synopses. Он написан на Haskell, специально нацелен на компилятор Glasgow Haskell..

Pugs включает два основных исполняемых файла:

  • Pugs - это интерпретатор с интерактивной оболочкой.
  • Pugscc может компилировать программы Perl 6 в код Haskell, Perl 5, JavaScript или сборку PIR виртуальной машины Parrot.

Pugs - это бесплатное программное обеспечение, распространяемый на условиях либо Стандартной общественной лицензии GNU, либо Художественной лицензии. Это те же термины, что и в Perl.

Нумерация версий

Старшие / второстепенные номера версий Pugs сходятся к 2π (напоминают TeX и METAFONT, в которых используется аналогичная схема); каждая значащая цифра в дополнительной версии представляет собой успешно пройденный этап. Третья цифра увеличивается для каждого выпуска. Текущие вехи:

  • 6.0: Первоначальный выпуск.
  • 6.2: Базовый ввод-вывод и элементы потока управления; изменяемые переменные; присвоение.
  • 6.28: Классы и черты.
  • 6.283: Правила и грамматики.
  • 6.2831: Система типов и связывание.
  • 6.28318: Макросы.
  • 6.283185: При необходимости портируйте Pugs на Perl 6.
Совместимость с Perl 5

Начиная с версии 6.2.6, Pugs также может встраивать Perl 5 и использовать CPAN модулей, установленных в системе. Пример ниже демонстрирует использование популярного модуля Perl DBI для управления базой данных:

#! / Usr / bin / pugs use v6; используйте perl5: DBI; мой $ dbh = DBI.connect ('dbi: SQLite: dbname = test.db'); $ dbh.do ("CREATE TABLE Test (Project, Pumpking)"); мой $ sth = $ dbh.prepare ("ВСТАВИТЬ В ТЕСТОВЫЕ ЗНАЧЕНИЯ (?,?)"); $ sth.execute (); $ sth.execute (); $ sth.execute (); мой $ res = $ dbh.selectall_hashref ('SELECT * FROM Test', 'Pumpking'); # Еще один хакер Pugs сказал: "Еще один хакер $ res ";
Модель разработки

В качестве причин прогресса Pugs было предложено несколько факторов:

  • Статическая типизация Haskell может облегчить обнаружение ошибок программы во время компиляции. Код Haskell также часто считается лаконичным. Библиотека Parsec [1], монадический комбинаторный парсер, полностью написанный на Haskell, упрощает синтаксический анализ. Поскольку Haskell - это чисто функциональный язык, для взаимодействия функционального кода с реальным миром (входами / выходами и средой, управляемой временем) необходимо подумать. Для достижения этого Pugs широко использует монады.
  • Pugs использует методологию, основанную на тестировании (принцип экстремального программирования ). Эта методология диктует, что каждый модуль должен иметь тестовый код, даже до того, как модули будут реализованы. Сторонники этой методологии утверждают, что она улучшает качество программного обеспечения. Однако проект часто заставлял замолчать неудачные регрессионные тесты перед выпуском, что лишало многих преимуществ разработки через тестирование.
  • Либеральное предоставление Таном бита фиксации. В настоящее время разработка Pugs основана на репозитории Subversion, и доступ предоставляется бесплатно, особенно для людей, желающих писать тесты. Из-за этого накопилась огромная библиотека тестов. Другие реализации Perl 6 полагаются на многие тесты, разработанные для Pugs в качестве исполняемой спецификации для Perl 6.
  • Стиль общения Tang; ее журнал (ссылка ниже) привлек к проекту множество людей. Разработчики Pugs также собираются на канале # perl6 freenode IRC.

Несмотря на эти факторы, прогресс в реализации Haskell застопорился в конце 2006 года, поскольку личные проблемы не позволили Одри посвятить столько же время для проекта, как и в 2005 году.

Многие участники Pugs с тех пор перешли к реализации систем, вдохновленных Perl6, в виде модулей CPAN на Perl 5, таких как проект Moose.

Ссылки
Внешние ссылки
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Последняя правка сделана 2021-06-02 10:28:51
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте