Perl 6

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Perl 6[1]
Camelia.svg
Perl
Дата появи: 2000
Творці: Ларі Волл
Останній реліз: (різниться в залежності від реалізації)
Rakudo Star / 26 вересня 2014; 943 дні тому [2]
Niecza Perl 6 / 26 березня 2013; 1492 дні тому[3]
Основні реалізації: Rakudo, Niecza
Під впливом від: Haskell (мова програмування),[4] JavaScript, Perl 5, Ruby (мова програмування), Smalltalk
ОС: Багатоплатформова
Ліцензія: Загальна громадська ліцензія GNU або Artistic License
Сайт: Perl6.org

Perl 6мова програмування родини Perl.[5] Створення Perl 6 розпочалось в 2000 році, та вона все ще перебуває у стадії розробки специфікації. Perl 6 може мати багато реалізацій, декілька таких реалізацій у вигляді інтерпретаторів та компіляторів також знаходяться зараз на етапі розробки[6]. В Perl 6 представлені елементи багатьох як сучасних так і забутих мов програмування.

Історія[ред.ред. код]

В Perl 6 ми вирішили, що краще змінити мову, ніж змінювати того, хто на ній пише.

Ларі Волл

Початок пректування нового Perl було вперше анонсовано 19 липня 2000 року. Тоді, на 4-й день тогорічної конференції Perl[7], Ларі Волл оголосив це у своїй промові State of the Onion 2000 (Стан цибулини 2000)[8]. В той час, основними цілями було позбутись "історичних нашарувань" ("historical warts") та в загальному очистити внутрішню структуру мови і інтерфейсів (API). Процес почався із ряду запитів на коментар (RFC). Він був відкритим для всіх бажаючих, та жоден аспект мови не лишився закритим для змін.

По завершенню процесу RFC, Волл розглянув та класифікував кожен із запитів (всього одержано 361). Тоді він почав процес написання декількох "Апокаліпсисів" ("Apocalypse"), що значить "відкриття"[9]. Існує серія Екзегезів написаних Демієном Конвеєм (Damian Conway), що описують вміст кожного Апокаліпсису з точки зору практичного застосування. Кожна Екзегеза містить приклади коду разом із обговореннями його застосування та результатами виконання[10].

При розробці Perl 6 використовуються такі найзначніші засоби спілкування:

Специфікація[ред.ред. код]

Perl 6 — це специфікація мови і, так само як у випадку С та С++, для неї може бути створено багато компіляторів. Існує проектна документація[12], на яку в минулому посилалися як на специфікацію. Але цей підхід було змінено і тепер офіційний набір тестів "roast"[13] визначає специфікацію Perl 6. Як стверджують самі творці, "Perl 6 - це будь-що, що успішно проходить офіційні тести"[14]

Реалізації[ред.ред. код]

Розробка Pugs, першої найбільш повної реалізації, почалась у 2005 році, а нині вже існує багато таких проектів по реалізації Perl 6.

Rakudo Perl базується на Parrot і NQP (Not Quite Perl), і випускає нові версії щомісяця. У липні 2010 проект випустив першу дистрибуцію Rakudo Star[15] корисну і зручну добірку реалізацій Perl 6 та пов'язаних матеріалів.

В Niecza, ще одній значній реалізація Perl 6, головна увага приділяється оптимізації етапу компіляції.

STD - офіційна граматика Perl 6, визначає саму граматику і синтаксичний аналіз коду[16]. Розробляється і підтримується Ларі Воллом

Згідність із Perl 5[ред.ред. код]

Perl 6 не сумісний з Perl 5. Хоч їх синтаксис багато в чому і схожий, але це дві абсолютно різні мови програмування. Згідність із Perl 5 не ставилась за ціль, хоча режим згідності передбачається специфікацією. Існують реалізації можливості підключення модулів Perl 5 всередині Perl 6[17], щоправда на даний момент бракує відомостей щодо ефективності їх використання.

Система модулів[ред.ред. код]

Специфікація Perl 6 вимагає щоб модулі визначалися ім'ям, версією та авторством[18]. Є можливість використовувати модуль лише певної версії або два модулі з однаковим ім'ям, які відрізняються версіями або авторством. Для зручності можна використовувати псевдоніми.

Система поширення модулів Perl 5 CPAN поки не підтримує модулі Perl 6. Наразі існує прототип системи модулів.[19]

Основні відмінності від Perl 5[ред.ред. код]

Perl 5 і Perl 6 відрізняються докорінно, хоч передбачалось щоб Perl 6 був схожим на оригінальний Perl. Більшість змін запроваджено щоб нормалізувати мову, зробити її легшою для розуміння як для новачків так і для досвідчених програмістів.

Специфікація[ред.ред. код]

Однією з основних відмінностей Perl 6 є те, що, на відміну від Perl 5, він почав своє існування як специфікація[20]. Це означає, що Perl 6 може бути за потреби реалізовано заново, а також, що програміст не мусить звертатися до сирцевого коду для підтвердження певної властивості або функції мови. Документацію Perl 5 оцінюють як відмінну [21], навіть поза Perl спільнотою завжди відзначають її завершеність і повноту. Одначе, вона не вважається офіційним, першоджерельним довідником і лише описує у вільній формі поведінку інтерпретатора. Будь-які невідповідності між документацією і самим інтерпретатором мови можуть призвести до приведення одного з них у відповідність до іншого.

Система типів[ред.ред. код]

В Perl 6 до системи динамічних типів Perl 5 було додано також систему статичних типів[22]. Наприклад:

 my Int $i = 0;
 my Rat $r = 3.142;
 my Str $s = "Hello, world";

Однак статичне типізування залишається необов'язковим, що дозволяє програмісту вирішувати більшість завдань без його використання:

 my $i = "25" + 10; # $i is 35

Perl 6 пропонує гібридну систему типів, даючи програмісту можливість використовувати статичне, динамічне типізування, або їх поєднання.

Джерела інформації[ред.ред. код]

  1. Ця сторінка має Властивість Вікіданих P910: основна категорія теми сторінки із значенням "Category:Perl 6", але не має ні назви українською мовою ні відповідника в Українській Вікіпедії. Виправити це, за необхідності, можна за посиланням d:Q8758040. Вимкнути це повідомлення можна вказавши у картці параметр |mcat=-.
  2. Rakudo Star Release 2014.09. 2014-09-26. Процитовано 2014-09-26. 
  3. Niecza Perl 6 v16. 
  4. Glossary of Terms and Jargon. Perl Foundation Perl 6 Wiki. The Perl Foundation. February 28. Процитовано 2012-02-09. 
  5. About Perl. perl.org. Процитовано 2013-04-20. «"Perl" is a family of languages, "Perl 6" is part of the family, but it is a separate language which has its own development team. Its existence has no significant impact on the continuing development of "Perl 5".» 
  6. Перелік компіляторів на Perl6.org (англ.). 
  7. Kline, Joe (2000-08-21). Report from the Perl Conference. 
  8. Wall, Larry (2000). State of the Onion 2000. O'Reilly Network. 
  9. Wall, Larry (2001-04-02). Apocalypse 1: The Ugly, the Bad, and the Good. 
  10. The Perl Foundation (2001). Exegeses. 
  11. The Perl Foundation (2002). Perl Development: Mailing Lists. 
  12. Проектна докуентація Perl 6 (англ.). 
  13. Офіційний комплект тестів Perl 6. 
  14. Розділ 1-й проектної документації Perl 6 (англ.). Процитовано 2014-12-22. «Perl 6 is anything that passes the official test suite.» 
  15. Michaud, Patrick (29 July 2010). Announce: Rakudo Star — a useful, usable, "early adopter" distribution of Perl 6. Процитовано 2012-01-12. 
  16. Сторінка модулів STD та viv на perl6.org (англ.). 
  17. Модуль Inline::Perl5 на github.com. 
  18. Wall, Larry (2004). Synopsis 11: Modules. 
  19. Perl 6 Modules Directory. Modules.perl6.org. Процитовано 2013-09-21. 
  20. Wall, Larry (2004-08-10). Synopsis 1: Overview. 
  21. Lhotsky, Brad (2004-03-10). Thinking In Perl. 
  22. Wall, Larry (2009-05-20). Synopsis 2: Bits and Pieces.