Карл Мэсак о Perl 6

В мае 2010 в Москве побывал Карл Мэсак, программист из Швеции, который принимает активное участие в развитии Perl 6. Мы встретились и поговорили о нем самом, о новом языке, о том, что с ним происходит и о том, как привлечь к языку большее внимание.

— Почему вы стали изучать Perl 6 и присоединились к его разработке? Это произошло не в 2000-м, а гораздо позже, когда язык был уже довольно зрелым.

— Не помню, когда я впервые услышал о Perl 6, это было где-то в 2003-2004-м. Тогда я начал читать Apocalypses и подписался на списки рассылки. А потом появился Pugs, и я втянулся в то неистовство происходящего с его разработкой. Я внес свой, совсем небольшой вклад, но при этом было очень приятно видеть, как Pugs развивается и крепнет, а Perl 6 оживает.

В 2007-м Pugs прекратил развитие, и я подумал: «Что же теперь? У нас больше никогда не будет Perl 6? Одна попытка и все?» Из-за того, что я не знал, что делать, я начал смотреть на Rakudo. В 2007-м Rakudo был еще небольшим и не мог делать многого, особенно по сравнению с Pugs, но, тем не менее, мы с другом решили его попробовать и создать движок вики. Это было летом 2008-го. То был лишь небольшой проект, который мы задумали сделать летом ради развлечения. И мы его написали 🙂

— А сейчас вы создаете свою собственную «еще одну» реализацию Perl 6, Yapsi.

— Да, хотя это больше шутка. Это честная реализация, но мы по сути любители, которые пытаются делать что-то для себя, чтобы поучиться и воспользоваться компилятором для собственных нужд.

— Кто «мы»?

— Над Yapsi вместе со мной работает snarkyboojum, мы двое — основные разработчики.

— Он тоже верит, что Perl 6 когда-либо появится?

— Perl 6 уже появился. Сейчас надо заполнить пробелы. Возможно, несколько противоречиво, но я на самом деле не верю в будущую дату выхода Perl 6. На мой взгляд, он уже выпущен. Настолько, насколько возможно. Конечно, мы можем назначить дату и сказать, что в этот момент спецификация очень-очень стабильна, но это не сильно повлияет ни на меня, ни на мою программистскую жизнь. Я пользуюсь Perl 6 более или менее ежедневно. Он не сверхстабилен, но, по крайней мере, вполне реален.

— Для Perl 5 существует большой CPAN, который является сильным аргументом в разного рода спорах. А будет ли полезен Perl 6 без CPAN?

— Полезность — относительный термин, люди понимают ее по-разному. Однажды я пришел в канал #perl на irc.perl.org, мы говорили о том, полезен ли Perl 6, и мнение участников, в основном, затрагивало вопросы: «Есть ли модуль для работы с базой данных?», «Есть ли CGI?» и т. п., поскольку они так привыкли использовать CPAN, что Perl для них — и есть сам CPAN. Было бы очень большим шагом иметь хороший доступ к CPAN, но мне кажется, что и без этого Perl 6 может быть полезен в меньших задачах. Существует много маленьких скриптов, которые возможно написать на Perl 5 даже без использования CPAN. Вероятно лишь, что их полезность будет в 100 или 1000 раз меньше, так что хвастаться особо нечем.

— Вы были одним из тех, кто пытался реализовать то, что доступно в Perl 5 — модуль CGI.pm — на новом языке. Много ли сегодя подобных разработок? Существует библиотека для работы с датами и временем, доступна возможность вызывать функции libmysql, а есть ли другие проекты?

— Есть целый список проектов, упомянутых на proto.perl6.org, там где-то 30-40 проектов. Я, правда, не знаю, что эти цифры означают, потому что хотя проекты и существуют, не все из них сейчас развиваются. Некоторые, возможно, не обновлялись год. Но в общем, мне кажется, что люди заполняют потребность в коде для своих непосредственных нужд. Так что если у кого-то есть потребность подключиться к базе данных, они хотят найти простой способ это сделать: либо сделать это напрямую из Perl 6, или через Parrot или обертку на Perl 5.

— ОК, сиюминутные нужны как-то охвачены, а что в перспективе? Однажды меня спросили, будут ли новички в программировании выбирать Perl — не важно, пятой или шестой версии — после того, как появится Perl 6. Предпочтут ли они Perl другим языкам?

— Не думаю, что пока Perl 6 сам себе повод выбрать Perl 6 вместо Perl 5. Обычно, когда новички приходят в канал #perl6, они задают этот вопрос. Вопрос типа: «Привет! Я только что прочитал о Perl 6, он супер! Могу ли я не учить Perl 5?». Обычный ответ на это: «Вероятно, стоит хорошо присмотреться к Perl 5, потому что на сегодня Perl 5 куда мощнее Perl 6 и сможет решить задачи быстрее и легче». Пока изучение Perl 6 не означает, что не нужно знакомиться с Perl 5.

— Мне кажется, что изучение Perl 5 до Perl 6 напоминает освоение ламповой схемотехники перед тем, как приступить к транзисторам и микросхемам.

— Да, возможно. Но я хотел бы избежать метафоры, которая позиционирует Perl 6 как более продвинутый язык по сравнению с Perl 5.

— В то же время, Perl 6 — это второй язык в семействе Perl. Может случиться, что Perl-сообщество разделится на две части. Это возможно?

— Да, мне кажется, что мы это уже видим. Такое деление отражается и на комьюнити. Два языка в одной семье, и комьюнити со слегка разными свойствами и особенностями. Это иногда происходит и в November, началось с пары постов в блогах, потом мы с mst разговаривали в IRC. Это также заставило нас задуматься о том, как мы преподносим Perl 6. Не как следующую версию Perl 5. В некоторых случаях это правда, но такое утврждене не слишком верно, потому что это будет означать, что Perl 5 устарел, а это не так: Perl 5 будет жить еще долго.

— Что вы думаете о том, что Perl 5 перенимает некоторые элементы Perl 6, например, say?

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

— Из будущего?

— Не из будущего, оба языка — сегодняшняя реальность. По сути, единственное существенное различие между Perl 5 и Perl 6 — в том, что Perl 6 — моложе и меньше. Он даже не то чтобы более футуристический, он просто делает акцент на других вещах. Мы не говорим об обратном портировании чего-то из Perl 6 в Perl 5, скорее, мы говорим о горизонтальном портировании, о переносе возможностей из одного форка в другой.

— Большое преимущество Perl 6 в том, что он полностью определен спецификацией. Но эта спецификация изменяется каждый день, поэтому невозможно закончить ее читать, не опасаясь того, что к моменту прочтения она окажется сильно измененной.

— Изменения происходят где-то раз в один-два дня. Должен сказать, что большинство изменений довольно незначительны: опечатки, грамматические ошибки, восполнение пробелов, которые нужно заполнить. Иногда, наверное раз в месяц, действительно случаются изменения в семантике, но даже они весьма малы сегодня. Мне кажется, причины изменений продиктованы в основном сегодняшней реализацией. Это очень хороший знак, в том смысле, что у нас не будет спецификации, в которой описано либо что-то невозможное, либо противоречивое, либо слишком сложное в реализации. Мы хотим оставаться практичными. Реализация в той или иной степени говорит спецификации, какой она должна быть. Здесь можно спорить, считать ли это изменениями или просто стремлением приблизиться к реальности.

— Но для новичка не существует простого и быстрого способа знакомства с языком.

— Да, и это проблема! Вот почему мы сейчас в фазе раннего тестирования, потому что нет легкого способа войти в Perl 6: нужно пожертвовать временем и приложить усилия, чтобы познакомиться.

— Есть ли способы это исправить?

— Создание документации, написание книг, руководств — всего того, в чем нуждаются новички, и разместить все это на какой-то центральной странице.

— Кстати, а что вы думаете о сегодняшней ситуации с публикацией книг? Каждая книга, будучи изданной, тут же устаревает. Существует много книг, многие из них весьма устарели и предлагают старые способы использования языка.

— Это особенно верно для Perl 6. Издано несколько книг, и в них описан синтаксис, который сегодня не компилируется. Perl 6 изменился.

— Написать книгу сложно.

— И рисковано.

— И это не даст какой-то ощутимой прибыли. Не думаете ли вы, что сегодня писать бумажные книги, в частности, о Perl 6, бесполезно?

— Я думаю, написание книги — по крайней мере своего рода психологическая победа. Мы прямо сейчас пишем книгу о Perl 6, приуроченную к выходу Rakudo *. Нам пришлось думать о том, как представить Perl 6 новичкам, как структурировать руководство размером с книгу, чтобы объяснить все аспекты Perl 6. Мне кажется, это упражнение важно само по себе. По крайней мере, из Advent-календаря в прошлом году мы видели, что создание руководств и демонстрация простых примеров — очень хороший способ привлечь внимание, способ заставить нужных людей заметить Perl 6, потому что мы описываем там все в очень сжатом виде. Это одна из целей книги.