stringtranslate.com

Раку (язык программирования)

Raku является членом семейства языков программирования Perl . [6] Ранее называвшийся Perl 6 , он был переименован в октябре 2019 года . [7] [8] Raku вводит элементы многих современных и исторических языков. Совместимость с Perl не была целью, хотя режим совместимости является частью спецификации. Процесс проектирования Raku начался в 2000 году.

История

В Perl 6 мы решили, что лучше исправить язык, чем пользователя.

—  Ларри Уолл [9]

Процесс проектирования Raku был впервые анонсирован 19 июля 2000 года, на четвертый день конференции Perl того года , [10] Ларри Уоллом в его докладе State of the Onion 2000. [11] В то время основными целями были удаление «исторических бородавок» из языка; «легкие вещи должны оставаться легкими, сложные вещи должны становиться проще, а невозможные вещи должны становиться сложнее»; и общая очистка внутреннего дизайна и интерфейсов прикладного программирования (API). Процесс начался с серии запросов на комментарии (RFC). Этот процесс был открыт для всех участников и не оставлял ни одного аспекта языка закрытым для изменений. [12]

После завершения процесса RFC Уолл рассмотрел и классифицировал каждый из 361 полученных запросов. Затем он начал процесс написания нескольких «Апокалипсисов», используя первоначальное значение термина, «раскрытие». [13] Хотя изначальной целью было написать один Апокалипсис для каждой главы Programming Perl , стало очевидно, что по мере написания каждого Апокалипсиса предыдущие Апокалипсисы становились недействительными из-за более поздних изменений. По этой причине был опубликован набор Синопсисов, каждый из которых касался содержания Апокалипсиса, но с любыми последующими изменениями, отраженными в обновлениях. Сегодня спецификация Raku управляется с помощью набора тестирования «roast», [14] в то время как Синопсисы сохраняются как историческая справка. [15]

Также существует серия Exegeses, написанная Дэмианом Конвеем , которая объясняет содержание каждого Апокалипсиса с точки зрения практического использования. Каждая Exegesis состоит из примеров кода вместе с обсуждением использования и последствий примеров. [16]

Сегодня при разработке Raku используются три основных метода коммуникации. Первый — канал Raku Internet Relay Chat (IRC) на Libera Chat . Второй — набор списков рассылки . [17] Третий — репозиторий исходного кода Git , размещенный на GitHub . [18]

Первоначальные цели и последствия

Основная цель, которую Уолл предложил в своей первоначальной речи, заключалась в устранении исторических бородавок. К ним относились путаница вокруг использования сигила для контейнеров, неоднозначность между selectфункциями и синтаксическое воздействие bareword filehandles . Было много других проблем, исправление которых программисты Perl обсуждали годами, и Уолл явно упомянул их в своей речи. [ необходима цитата ]

Следствием этих целей было то, что Perl 6 не будет иметь обратной совместимости с существующей кодовой базой Perl. Это означало, что некоторый код, который был правильно интерпретирован компилятором Perl 5, не будет принят компилятором Perl 6. Поскольку обратная совместимость является общей целью при улучшении программного обеспечения, критические изменения в Perl 6 должны были быть указаны явно. Различие между Perl 5 и Perl 6 стало настолько большим, что в конечном итоге Perl 6 был переименован в Raku.

Талисман

Ларри Уолл и Камелия

Талисман языка — «Камелия, жук Раку». [1] Ее имя — отсылка к талисману верблюда, связанному с Perl , а ее форма, в каламбурной традиции сообщества Perl, является игрой слов « software bug ». Спиральные узоры, встроенные в ее крылья, похожие на бабочку, напоминают символы «P6», любимое прозвище Perl 6, а нецентральное расположение глаз — преднамеренный каламбур на «Wall-eyed». [19]

Одной из целей создания яркого и красочного дизайна логотипа было противодействие женоненавистничеству в обществе и предоставление возможности людям «мужских убеждений» продемонстрировать свою чувствительную сторону. [20]

Реализации

По состоянию на 2017 год , только реализация Rakudo находится в стадии активной разработки. Ни одна реализация не будет обозначена как официальная реализация Raku; скорее, «Raku — это все, что проходит официальный набор тестов». [21]

Rakudo Perl 6 [22] [23] нацелен на ряд виртуальных машин, таких как MoarVM , Java Virtual Machine и JavaScript . MoarVM — это виртуальная машина , созданная специально для Rakudo [24] и NQP Compiler Toolchain. [25] Между Raku и виртуальными машинами есть слой, называемый Not Quite Perl 6 (NQP), который реализует правила Raku для разбора Raku, а также абстрактное синтаксическое дерево и генерацию кода , специфичного для бэкэнда . Большие части Rakudo написаны на Raku или на его подмножестве NQP. Rakudo не является полностью самостоятельным внедрением , и на данный момент нет конкретных планов сделать Rakudo самозагружающимся компилятором .

Исторические реализации

Pugs был первоначальной реализацией Perl 6, написанной на Haskell под руководством Одри Тан . Pugs был самой продвинутой реализацией Perl 6, но с середины 2007 года он в основном бездействует (обновления производились только для отслеживания текущей версии Glasgow Haskell Compiler (GHC)). По состоянию на ноябрь 2014 года Pugs не поддерживался. [26]

В 2007 году v6-MiniPerl6 («mp6») и его повторная реализация v6-KindaPerl6 («kp6») были написаны как средство для загрузки Perl-6.0.0 STD с использованием Perl 5. STD представляет собой полную грамматику для Perl 6 и написана на Perl 6. Теоретически, все, что способно анализировать STD и генерировать исполняемый код, является подходящей системой загрузки для Perl 6. kp6 в настоящее время компилируется mp6 и может работать с несколькими бэкэндами. [27] [28] mp6 и kp6 не являются полными реализациями Perl 6 и предназначены только для реализации минимального набора функций, необходимого для загрузки полного компилятора Perl 6.

Yapsi был компилятором Perl 6 и средой выполнения, написанной на Perl 6. В результате для его запуска требовался существующий интерпретатор Perl 6, например, один из релизов Rakudo Star. [29]

Niecza, еще одна крупная работа по внедрению Perl 6, сосредоточена на исследовании оптимизации и эффективной реализации. Она нацелена на Common Language Infrastructure . [30]

Модульная система

Спецификация Raku требует, чтобы модули идентифицировались по имени, версии и полномочиям. [31] Можно загрузить только определенную версию модуля или даже два модуля с одинаковым именем, которые отличаются по версии или полномочиям. Для удобства предоставляется псевдоним для короткого имени.

CPAN , система распространения модулей Perl, пока не обрабатывает модули Raku. Вместо этого используется прототипная модульная система. [32]

Книги

Книги, опубликованные до версии Perl 6 1.0 (известной как версия 6.c)

Кроме того, в 2009 году была опубликована книга, посвященная одной из первых виртуальных машин Perl 6 — Parrot.

Книги, опубликованные после Perl 6 версии 1.0 (известной как версия 6.c)

Книги, изданные под новым именем Raku

Ссылки

  1. ^ ab Jackson, Joab (23 июля 2010 г.). «Создатель Perl намекает на скорый выпуск долгожданной версии Perl 6». IDG News Service . Получено 8 февраля 2015 г.
  2. ^ "Объявление: выпуск спецификации языка Raku Perl 6 'Diwali' 6.d". blogs.perl.org . Zoffix Znet. 5 ноября 2018 г. Получено 19 августа 2022 г.
  3. ^ "Модули". docs.raku.org . Получено 19 августа 2022 г. .
  4. ^ "Глоссарий терминов и жаргонизмов". Perl Foundation Perl 6 Wiki . Perl Foundation . 28 февраля 2011 г. Архивировано из оригинала 21 января 2012 г. Получено 8 февраля 2015 г.
  5. ^ ab 唐鳳, также известная как Одри Тан (21 апреля 2010 г.). «Как реализовать Perl 6 в '10».
  6. ^ "О Perl". perl.org . Получено 11 июня 2020 г. ."Perl" — это семейство языков, "Raku" (ранее известный как "Perl 6") является частью семейства, но это отдельный язык, имеющий собственную команду разработчиков. Его существование не оказывает существенного влияния на продолжающуюся разработку "Perl".
  7. ^ "Perl 6 переименован в Raku". LWN.net . 15 октября 2019 г. Получено 16 октября 2019 г.
  8. ^ "Ответ TPF на переименование Raku". 29 октября 2019 г.
  9. ^ Бьянкуцци, Федерико; Уорден, Шейн (2009). Мастера программирования: беседы с создателями основных языков программирования. "O'Reilly Media, Inc.". ISBN 978-0596515171.
  10. Клайн, Джо (21 августа 2000 г.). «Отчет с конференции Perl».
  11. ^ Уолл, Ларри (2000). «State of the Onion 2000». O'Reilly Network.
  12. ^ Perl Foundation (2000). «О Perl 6 RFC».
  13. Уолл, Ларри (2 апреля 2001 г.). «Апокалипсис 1: Злое, плохое и хорошее».
  14. ^ "Набор тестов Raku". GitHub . 2019.
  15. ^ Уолл, Ларри ; Разработчики Perl 6 (2015). «Документы по проектированию Perl 6».{{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  16. Фонд Perl (2001). «Толкования».
  17. ^ Язык программирования Raku (2022). «Сообщество Raku».
  18. ^ "Raku". GitHub . Получено 19 августа 2022 г. .
  19. ^ "Ларри Уолл в журнале чата IRC". 15 января 2016 г. Получено 10 ноября 2017 г.
  20. ^ "Архивное письмо "Logo considerations" от Ларри Уолла". GitHub . 24 марта 2009 . Получено 10 ноября 2017 .
  21. Уолл, Ларри (10 августа 2004 г.). «Синопсис 1: Обзор».
  22. ^ "rakudo/rakudo - GitHub". Github.com . Получено 21 сентября 2013 г. .
  23. ^ Мишо, Патрик (16 января 2008 г.). «Компилятор, ранее известный как „perl6“». Архивировано из оригинала 18 февраля 2012 г.
  24. ^ Уортингтон, Джонатан (31 мая 2013 г.). "MoarVM: виртуальная машина для NQP и Rakudo". 6guts . Получено 24 июля 2013 г.
  25. ^ "NQP - Not Quite Perl на github". GitHub . 29 мая 2022 . Получено 29 мая 2022 .
  26. ^ "Сравнение возможностей компиляторов Perl 6". Архивировано из оригинала 7 февраля 2019 г.
  27. ^ Уолл, Ларри и др. (2007). "Perl 6 STD". GitHub .
  28. ^ "mp6/kp6 FAQ". Команда разработчиков Perl 6. 2006.
  29. ^ "Yapsi README". GitHub . 2011.
  30. O'Rear, Стефан (29 ноября 2011 г.). "Niecza README.pod". GitHub . Получено 12 января 2012 г.
  31. ^ Уолл, Ларри (2004). «Синопсис 11: Модули».
  32. ^ "Perl 6 Modules Directory". Modules.raku.org . Получено 17 мая 2020 г. .

Внешние ссылки