Название «Perl» лежит в основе драмы, развивающейся между двумя языками, Perl 5 и Perl 6. Это далеко от некогда желательного объединения и движется к разрыву связей между бывшими родственными языками, которые теперь становятся полными врагами.
Но давайте начнем с самого начала. Еще в 2012 году, когда Попугай был жив, когда я брал у него интервью о Perl 6 и Parrot, Мориц Ленц ответил на этот вопрос:
NV: Существуют ли два различных сообщества для Perl 5 и Perl 6 или они перекрываются?
МЛ: Есть определенное совпадение. Например, люди p5 и p6 посещают одни и те же конференции, семинары и хакатоны, но многие разработчики ядра Perl 5 игнорируют Perl 6, и хотя большинство хакеров ядра Perl 6 примерно знают, что происходит в стране Perl 5, существует большая нехватка общения.
Н. В.: Это относится и к языкам? Я имею в виду, являются ли Perl 5 и Perl 6 двумя различными языками, или прошлый опыт Perl 5 облегчит принятие Perl 6?
МЛ: Это разные языки из одного семейства языков. На первый взгляд они выглядят очень похожими и спроектированы с использованием одних и тех же принципов:
легко учиться (можно говорить на «детском perl», не изучая большую часть языка)
делайте все быстро
есть более чем один способ сделать это
С другой стороны, они достаточно различны, чтобы программа Perl 5 не выполнялась на компиляторе Perl 6, или наоборот, и достаточно различны, чтобы автоматический перевод с одного на другой был довольно сложным. Так что, если вы знаете Perl 5, Perl 6 кажется знакомым, но под капотом многое изменилось. Например, Perl 6 объектно-ориентирован на ядро, в то время как Perl 5-нет.
А затем, 24 декабря 2015 года, был выпущен первый официальный релиз Perl 6, Perl 6 версии 1.0.
Мы рассмотрели различия с Perl 5 в первом официальном выпуске Perl 6, сообщив:
Ларри Уолл рассматривает Perl 6 как шанс исправить все, что было сделано неправильно в Perl 5… Это означает, что Perl 6 был разработан так, чтобы его было легче анализировать, в отличие от высказывания Perl 5 «только Perl может анализировать Perl».
Perl 6 был разработан с ориентацией на объекты с нуля, также смешивая в себе вкус функционального программирования, а не то, как объектно-ориентированная поддержка Perl 5, которая была исправлена в качестве запоздалой мысли.
Кроме того, Perl 6 — это другой язык, отличный от Perl 5, а не новая его версия, несмотря на заимствование многих аспектов, таких как простота в освоении, быстрое выполнение задач и наличие нескольких способов выполнения задач.
Что касается реализации, и, по словам Морица Ленца, другого основного участника Perl, Perl 6 в отличие от Perl 5 имеет несколько реализаций, таких как Rakudo и Niecza, причем Rakudo работает на JVM и MoarVM, а Niecza-на CLR/.NET. Perl 5 привязан к C и XS, в то время как авторы компиляторов Perl 6 имеют больше свободы в выборе бэкэндов. Perl 5 компилирует программу в байт-код, но всегда сохраняет ее в памяти, но Rakudo может компилировать в байт-код и хранить его на диске.
Синтаксис мудрый, если вы знаете Perl 5, Perl 6 кажется знакомым, но под капотом многое изменилось.
Таким образом, учитывая, как различия перевешивали сходства, называя язык Perl и давая ему число 6, люди вводили в заблуждение, полагая, что это обновленная версия Perl 5, а не другой язык; и с тех пор разрыв расширялся.
Zoffix, член основной команды Perl 6, даже почувствовал, что «Perl» прочно ассоциируется с Perl 5, и поэтому предполагаемое снижение популярности Perl 5 также снижает репутацию и «товарность» Perl 6:
Он похож на более ранний язык Perl (и, таким образом, поставляется со всеми негативными коннотациями, приписываемыми ему)
Это следующая версия языка Perl
Он быстрее, стабильнее и «лучше», чем более ранний язык Perl
Через полтора года после того, как он впервые поднял вопрос об альтернативном имени, чтобы попытаться устранить неоднозначность двух языков, в прошлом месяце Zoffix попросил Ларри Уолла придумать псевдоним для Perl 6, но не полностью изменить имя.
Почему не простое переименование, а просто псевдоним?
По словам Зоффикса:
В то время как многие члены сообщества хотели бы видеть полное переименование языка, есть также те, кто считает, что полное переименование было бы вредным. Полное переименование на данный момент также намного сложнее из—за наличия книг, веб-сайтов, документации, переменных среды и динамических переменных в языке-все с именем «Perl» в них.
Правда, мой обзор книг Think Perl 6, например, попадает в эту категорию. Это название книги, и оно написано на камне.
Но что произойдет, если носильщики Perl 5 (p5p) вызовут следующую версию Perl 5, Perl 7, чтобы положить крышку на гроб впечатления, что Perl 6 является более новой версией Perl 5?
Язык Perl 5 фактически заблокирован от выпуска следующей «основной версии», потому что Perl 6 сидит на нем на корточках. И если бы Perl 5 выпустил «Perl 7», это сразу же нарисовало бы Perl 6 как устаревший. Отсутствие каких-либо установленных альтернативных имен делает Perl 6 уязвимым для такого сценария.
Наконец, в начале ноября пришел окончательный ответ от самого Ларри Уолла. Псевдоним будет «Раку», будучи аналогом сценического имени.
Итак, чего может достичь это сглаживание? Наиболее оптимальным для Perl 6 было бы, чтобы люди полностью забыли о части Perl и начали называть ее просто Raku, позволяя ей «стать именем defacto из-за ее огромного количества использования».
Это может сработать для Perl 6, но все равно не компенсирует проблемы Perl 5 из-за этого противостояния имен. Как утверждает Элизабет Маттийсен, потеря популярности Perl 5 может быть просто такой:
«Perl 5 считался мертвым из-за появления Perl 6».
Соедините это с неспособностью носильщиков Perl 5 свободно использовать номер 7, а также с поврежденными отношениями внутри сообщества:
Однако самой большой проблемой здесь являются отношения с сообществом Perl 5. Само существование языка «Perl 6» делает Perl 5 устаревшим. В то время как сообщество Perl 6 должно дать разъяснения, чтобы дистанцироваться от негативов Perl 5, которые не относятся к Perl 6, сообщество Perl 5 должно сделать те же разъяснения, чтобы убедить людей, что они не мертвы. Это вызывает понятную враждебность по отношению к Perl 6.
С другой стороны, это может быть случай, когда все просто раздувается из пропорций, так как в совокупности вещи для Perl выглядят довольно яркими.
Люди, переговоры, события и встречи: недавняя Европейская конференция Perl в Глазго, Лондонский семинар Perl 2018, Саммит Perl Toolchain, Конференция Perl в Солт-Лейк-Сити, Nordic Perl Workshop & Mojoconf, Голландские и швейцарские семинары Perl, местные встречи премьер-министра, предстоящая конференция Perl 2019 в Риге, и список можно продолжать.
Новые выпуски книг:
Одностраничное приложение с Perl Dancer, Освоение Perl 2nd Edition,Think Perl 6, Поиск и анализ с помощью регулярных выражений Perl 6, Глубокое погружение Perl 6, Основы Perl 6, Обучение программированию с помощью Perl 6
Порты и вилки: RPerl — Ограниченный Perl Уилла Брасвелла, который переводит средне-магическое подмножество Perl 5 в C/C++ с помощью Inline::C и Inline::CPP
cperl — улучшенный вариант perl5, работающий со всем кодом perl5 и CPAN. Со многими функциями perl6, просто быстрее. Быстрее, чем perl5 и perl6. Он стабилен и удобен в использовании, но все еще находится в разработке, и в ближайшее время будет добавлено еще много функций.
Компиляторы, транспиллеры:Rakudo — компилятор Perl 6
WebPerl — порт всего интерпретатора Perl 5, работающего в современном веб-браузере. WebPerl компилируется с использованием веб-сборки clang/LLVM/Emscripten и может заменить JavaScript в качестве платформы выполнения на стороне клиента, в комплекте с поддержкой XS!
Perlito — исходный уровень от perl5/6 до perl5/6 и других бэкендов компилятора.
Возрождение на веб — фронте с Dancer, Mojolicious, Catalyst, Plack
Завоевание новых территорий С ростом DevOps Perl демонстрирует свою мускулатуру
Прогресс с новыми версиями Perl 5, бизнес как обычно: 5.28 последняя стабильная версия с большим количеством новых функций
Есть также признаки того, что в ряды Перла поступает свежая кровь:
Лондонский Семинар По Perl — HOWTO: развивайте команду Perl
Тематическое исследование — Geekuni at Booking.com, 2018 г.
Если это означает «плохо», то я не знаю, что значит «хорошо»…