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

Из Википедии, бесплатной энциклопедии
Раку
Камелия, талисман Раку [1]
Парадигма Мультипарадигмальность
Семья Перл
Разработано Ларри Уолл
Разработчик Сообщество Раку
Впервые появился 25 декабря 2015 г .; 8 лет назад ( 25.12.2015 )
Стабильная версия
6.д «Дивали» [2] / 24 октября 2020 г .; 3 года назад ( 24.10.2020 )
Дисциплина набора текста Динамичный , постепенный
ТЫ Кросс-платформенный
Лицензия Стандартная общественная лицензия GNU или художественная лицензия 2
Расширения имен файлов .raku, .rakumod, .rakudoc, .t, .rakutest [3]
Веб-сайт раку .org
Основные реализации
Ракудо
Под влиянием
Перл , Руби , Смоллток , Хаскелл , [4] JavaScript
Под влиянием
Перл , [5] Хаскелл , [5] АнтЛанг

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

История [ править ]

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

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

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

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

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

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

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

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

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

Талисман [ править ]

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

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

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

Реализации [ править ]

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

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

Исторические реализации [ править ]

Pugs был начальной реализацией Perl 6, написанной на Haskell . Раньше Pugs был самой продвинутой реализацией Perl 6, но с середины 2007 года он по большей части бездействует (обновления делались только для отслеживания текущей версии 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, была сосредоточена на оптимизации и исследованиях эффективной реализации. Он нацелен на инфраструктуру общего языка . [30]

Система модулей [ править ]

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

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

Книги [ править ]

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

  • Рэндал, Эллисон; Сугальски, Дэн; Тётч, Леопольд (2003). Основы Perl 6 (1-е изд.). О'Рейли Медиа. ISBN  978-0-596-00499-6 .
  • Рэндал, Эллисон; Сугальски, Дэн; Тётч, Леопольд (2004). Perl 6 и Parrot Essentials (2-е изд.). О'Рейли Медиа. ISBN  978-0-596-00737-9 .
  • Уолтерс, Скотт (15 декабря 2004 г.). Perl 6 сейчас: основные идеи, иллюстрированные Perl 5 . Голос эксперта в открытом исходном коде. ISBN  978-1-59059-395-0 .

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

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

новым именем изданные под Книги , Раку

Ссылки [ править ]

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

Внешние ссылки [ править ]