Raku
Raku, раніше Perl 6 — мова програмування родини Perl.[4] Створення Perl 6 розпочалось в 2000 році, та вона все ще перебуває у стадії розробки специфікації. Perl 6 може мати багато реалізацій, декілька таких реалізацій у вигляді інтерпретаторів та компіляторів також знаходяться зараз на етапі розробки[5]. В Perl 6 представлені елементи багатьох як сучасних так і забутих мов програмування. Основною причиною небажання продовжувати розвиток проекту під ім'ям Perl 6 стало те, що Perl 6 не став продовженням Perl 5, як очікувалося спочатку, а перетворився в окрему мову програмування, для якого так і не було підготовлено інструментарію за прозорою міграції з Perl 5. В результаті склалася ситуація, коли під одним ім'ям Perl пропонуються дві паралельно розроблювані самостійні мови, несумісних одна з одною на рівні сирцевих текстів і колом своїх спільнот розробників. Використання одного імені для родинних, але кардинально відрізнених мов, призводило до плутанини, коли багато користувачів продовжують вважати Perl 6 новою версією Perl, а не принципово іншою мовою. При цьому ім'я Perl продовжує зв'язуватися з Perl 5, а згадка Perl 6 вимагає окремого уточнення. Історія
Початок пректування нового Perl було вперше анонсовано 19 липня 2000 року. Тоді, на 4-й день тогорічної конференції Perl[6], Ларі Волл оголосив це у своїй промові State of the Onion 2000 (Стан цибулини 2000)[7]. В той час, основними цілями було позбутись «історичних нашарувань» («historical warts») та в загальному очистити внутрішню структуру мови і інтерфейсів (API). Процес почався із ряду запитів на коментар (RFC). Він був відкритим для всіх бажаючих, та жоден аспект мови не лишився закритим для змін. По завершенню процесу RFC, Волл розглянув та класифікував кожен із запитів (всього одержано 361). Тоді він почав процес написання декількох «Апокаліпсисів» («Apocalypse»), що значить «відкриття»[8]. Існує серія Екзегезів написаних Демієном Конвеєм (Damian Conway), що описують вміст кожного Апокаліпсису з точки зору практичного застосування. Кожна Екзегеза містить приклади коду разом із обговореннями його застосування та результатами виконання[9]. При розробці Perl 6 використовуються такі найзначніші засоби спілкування:
СпецифікаціяPerl 6 — це специфікація мови і, так само як у випадку С та С++, для неї може бути створено багато компіляторів. Існує проектна документація[11], на яку в минулому посилалися як на специфікацію. Але цей підхід було змінено і тепер офіційний набір тестів «roast»[12] визначає специфікацію Perl 6. Як стверджують самі творці, «Perl 6 — це будь-що, що успішно проходить офіційні тести»[13] РеалізаціїРозробка Pugs, першої найбільш повної реалізації, почалась у 2005 році, а нині вже існує багато таких проектів по реалізації Perl 6. Rakudo Perl базується на Parrot і NQP (Not Quite Perl), і випускає нові версії щомісяця. У липні 2010 проект випустив першу дистрибуцію Rakudo Star[14] корисну і зручну добірку реалізацій Perl 6 та пов'язаних матеріалів. В Niecza, ще одній значній реалізація Perl 6, головна увага приділяється оптимізації етапу компіляції. STD — офіційна граматика Perl 6, визначає саму граматику і синтаксичний аналіз коду[15]. Розробляється і підтримується Ларі Воллом Згідність із Perl 5Perl 6 не сумісний з Perl 5. Хоч їх синтаксис багато в чому і схожий, але це дві абсолютно різні мови програмування. Згідність із Perl 5 не ставилась за ціль, хоча режим згідності передбачається специфікацією. Існують реалізації можливості підключення модулів Perl 5 всередині Perl 6[16], щоправда, на даний момент бракує відомостей щодо ефективності їх використання. Система модулівСпецифікація Perl 6 вимагає, щоб модулі визначалися ім'ям, версією та авторством[17]. Є можливість використовувати модуль лише певної версії або два модулі з однаковим ім'ям, які відрізняються версіями або авторством. Для зручності можна використовувати псевдоніми. Система поширення модулів Perl 5 CPAN поки не підтримує модулі Perl 6. Наразі існує прототип системи модулів.[18] Основні відмінності від Perl 5Perl 5 і Perl 6 відрізняються докорінно, хоч передбачалось, щоб Perl 6 був схожим на оригінальний Perl. Більшість змін запроваджено щоб нормалізувати мову, зробити її легшою для розуміння як для новачків, так і для досвідчених програмістів. СпецифікаціяОднією з основних відмінностей Perl 6 є те, що, на відміну від Perl 5, він почав своє існування як специфікація[19]. Це означає, що Perl 6 може бути за потреби реалізовано заново, а також, що програміст не мусить звертатися до сирцевого коду для підтвердження певної властивості або функції мови. Документацію Perl 5 оцінюють як відмінну[20], навіть поза Perl спільнотою завжди відзначають її завершеність і повноту. Одначе, вона не вважається офіційним, першоджерельним довідником і лише описує у вільній формі поведінку інтерпретатора. Будь-які невідповідності між документацією і самим інтерпретатором мови можуть призвести до приведення одного з них у відповідність до іншого. Система типівВ Perl 6 до системи динамічних типів Perl 5 було додано також систему статичних типів[21]. Наприклад: my Int $i = 0;
my Rat $r = 3.142;
my Str $s = "Hello, world";
Однак статичне типізування залишається необов'язковим, що дозволяє програмісту вирішувати більшість завдань без його використання: my $i = "25" + 10; # $i is 35
Perl 6 пропонує гібридну систему типів, даючи програмісту можливість використовувати статичне, динамічне типізування, або їх поєднання. Джерела інформації
|