Интервью Ларри Уолла в подкасте rebuild.fm

Темы:

Вслед за Рикардо Сигнесом Тацухико Миягава взял интервью у создателя Perl — Ларри Уолла. Подкаст также проходил в Бельгии после крупнейшей европейской конференции FOSDEM, на которой Ларри Уолл сделал давно обещанный анонс выпуска стабильного релиза Perl 6 в 2015 году. Темой выпуска естественно стал Perl 6.

Запись интервью на английском языке доступна на сайте подкаста rebuild.fm. Далее последует краткое изложение беседы.

В начале интервью Ларри Уолл отметил, что это его первое участие в FOSDEM. Хотя раньше он уже бывал в Бельгии, но ещё не посещал Брюсселя. FOSDEM удивительно самоорганизован: практически вся организация была на плечах волонтёров, но при это всё прошло очень хорошо.

Ларри Уолл не смог выступить на конференции OSCON в прошлом году, поэтому его заявление о релизе Perl 6 задержалось на полгода. Была обыграна старая шутка о том, что релиз Perl 6 состоится на рождество, только не уточнено в рождество какого года, теперь же год был озвучен — 2015. Почти 15 лет потребовалось, после первого упоминания о Perl 6, чтобы довести дело до конца. В своём докладе Ларри Уолл провёл сравнение с тем, как долго Толкиену пришлось писать своё продолжение «Хоббита» — «Властелин Колец».

Предварительно будет сделан бета-релиз в сентябре на день рождения Ларри Уолла, чтобы дать всем его пощупать, убедиться, что все баги исправлены.

В своём докладе Ларри упомянул, что Perl 6 — это синдром второй системы, когда решили сломать всё, что нужно сломать в старом Perl 5. Когда такое происходит в коммерческой компании, происходит аврал, иначе пользователи уйдут и финансовый поток иссякнет. В сообществе волонтёров это сделать быстро невозможно и всё затягивается, но если всё время идти к цели, то она в конечном счёте достигается.

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

Вкратце было рассказано о предыдущих реализациях. Parrot оказался слишком большим и никто толком не знал его целиком, чтобы развивать и рефакторить. Потом появились попытки сделать другие реализации. Pugs был написан на Хаскеле Одри Тангом и следовал принципу «Дайте мне тест и я напишу код». Затем появилась реализация на C# — Niezha и стала первой концептуальной работой по переносу на другие готовые виртуальные машины (ВМ). Так и пришли к решению об использовании разных ВМ как бэкендов к Rakudo.

Вскоре было решено создать промежуточный слой NQP (Not Quite Perl — не совсем Perl) как упрощённый Perl 6, который легче портировать на различные ВМ. Его удалось портировать на JVM (виртуальная машина Java). Позже, в обстановке секретности, была создана виртуальная машина MoarVM. MoarVM стартует быстрее JVM и там есть JIT-оптимизатор, который работает очень не плохо, особенно когда используется последовательная типизация.

Сейчас для релиза Perl 6 решили сосредоточиться только на реализация Rakudo + MoarVM, которая показывает самые лучшие результаты.

Тацухико отметил, что на конференции были много других докладов по Perl 6 и в целом тема Perl на FOSDEM привлекла много людей. Ларри согласился и сказал, что доклад Кёртиса По удался, так как тот смог просто рассказать о сложных вещах. А потом добавил, что просто Кёртис выбрал для рассказа наименее страшные вещи из Perl 6.

Доклад Ларри практически не содержал кода, в основном речь шла о философских вещах, мы показали насколько хорошо и чисто проработана семантика языка.

Был задан вопрос: раз ваша миссия заключается в дизайне языка, то кто же занимается реализацией языка? На что Ларри рассказал о том, что все, кто работает над реализацией можно найти на IRC freenode.net на канале #perl6. На канале всегда порядка 200 пользователей, много луркеров и ботов, но порядка 15-20 разработчиков обязательно присутствует. Каждый день что-то происходит, люди делятся своими находками и часто звучит фраза-сокращение LTA (less than awesome — почти круто).

Зашёл разговор и о RFC для Perl 6, строится ли Perl 6 по-прежнему по принципам RFC? На что Ларри ответил, что это скорее не принципы, а болевой индикатор: RFC содержали те вещи, которые наиболее тяготили людей в Perl 5. Ларри ожидал, что RFC будет не более двенадцати, но в итоге их сейчас 361 штука.

Ларии описал преимущества типизации в Perl6:

  • Можно задать условия для типов параметров
  • Даёт информацию компилятору для оптимизации
  • Возможность создания мультиметодов: несколько методов с одинаковым именем, но с разными сигнатурами методов, что даёт возможность избежать использование условий switch в методах.

На вопрос о том, что будет после релиза 6.0 и как будут нумероваться релизы будущих версий Perl\ 6, Ларри ответил, что скорее всего будет привычная нумерация мажорный, минорные и патч части версии. Возможно последующие версии компилятора будут эмулировать поведение старых версий, т.е. будут реализовываться обратная и последующая совместимость.

Заострено было внимание об идентичности релизов, в том числе и для модулей Perl 6. Каждый релиз модуля должен быть уникальным. В этом случае Perl 6 сможет решать проблему с зависимостями на разную версию одного и того же модуля. Например, если модуль A зависит от C версии X, а модуль B зависит от C версии Y, то Perl 6 сможет загрузить обе версии модуля C в один процесс строго следя, что каждый из модулей A и B обращается к нужной версии модуля C.

По поводу существующего кода на CPAN Ларри сказал, что модули Perl 5 могут быть использованы из Perl 6 с помощью Inline::Perl5, но это не так эффективно. Это всё равно, что использовать Inline::Python в Perl 5. То же самое касается и XS-модулей. Если использовать JVM-бэкенд, то у программ на Perl 6 открывается возможность использовать и работать с Java-библиотеками, что также является одним из стимулов разработки JVM-бэкенда.

В конце эфира были вопросы о личной жизни. Ларри рассказал о своём привычном распорядке дня: кофе - irc - сон. В IRC он проводит очень много времени, читая что понаписали за ночь европейцы. Ларри использует ник TimToady, поэтому бывает курьёзные случаи, когда новички его не узнают и общаются с ним, как с обычным участником чата. Иногда даже обсуждают Ларри, а ему доставляет удовольствие говорить о себе в третьем лице.

Напоследок Ларри дал привычную рекомендацию тем, кто хочет помочь с реализацией Perl 6 - выберите себе, то что вам интересно: документацию, тесты или какую-либо подсистему, спрашивайте на IRC помощи и работайте. Чтобы изучить Perl 6 нужна внешняя мотивация, т.е. не надо учить Perl 6 ради Perl 6, надо выбрать какую-либо задачу и попробовать её сделать на Perl 6, по ходу дела изучая язык. Для этих целей, кстати, есть отличный ресурс Rosetta Code, где есть много задач и люди в общей сложности на 566 языках программирования их реализовали.