Выпуск 2. Апрель 2013

Обзор CPAN за март 2013 г. | Содержание | Perl Quiz

Интервью с Alexis Sukrieh

Alexis Sukrieh — французский Perl-программист. Наиболее известен как автор популярного веб-фреймворка Dancer.

Как и когда начал изучать программирование?

Я начал изучать программирование когда еще был в средней школе, у меня был калькулятор, кажется, Casio, в систему была встроена минимальная реализация языка BASIC, и я начал экспериментировать. Помню, что моей первой программой была текстовая игровая лотерея. Вот так вот я и познакомился с if-then-else операторами и while-циклами.

Какой редактор используешь?

Vim! Не могу использовать ничего другого для написания кода. Каждый раз когда я пробую другой редактор, возвращаюсь к vim через 10 минут. Думаю, что мой мозг, буквально, сросся с vim.

Как и когда познакомился с Perl?

Это было во время моей первой работы (почти 13 лет назад). У меня было задание написать небольшую статистическую утилиту, которая бы доставала из MySQL большое количество данных и строило бы удобные PDF-отчеты через LaTeX. Меня познакомили с Perl, дав книги издательства O’Reilly «Введение в Perl» и, конечно же, «Camel Book». Вот так все и было. Поигравшись с этим несколько дней, я полюбил этот язык. Настолько просто было учить, настолько интуитивно, я никогда не прекращал писать на Perl с того времени.

С какими другими языками программирования приятно работать?

Некоторое время я программировал на Ruby, когда работал в Yoolink (компания, которую я соосновал и где был техническим директором). Наше веб-приложение было написано на Ruby on Rails. Это было очень модно в то время (2008 г.) и мы хотели поэкспериментировать с этой новой штуковиной. Мне очень понравилось работать с Rails тогда, но я никогда не терял удовольствия при работе с Perl.

Наверное, я никогда не мог найти той же свободы, которая есть в Perl. Я, как будто, знаю, что могу написать практически что угодно на Perl, даже расширить его синтаксис с помощью… DSL (Domain Specific Language – Предметно-ориентированный язык – прим. перев.). Понятно к чему я веду, правда?

Какое, по-твоему, самое большое преимущество Perl?

Хм, извини, но кажется, я рассказал про это в предыдущем ответе! Да, для меня самым большим плюсом Perl есть свобода, которую он дает. Можно расширять его покуда есть желание. У этого есть и свои недостатки, потому что свобода достается по цене очень… «толерантного» синтаксиса, а многие программисты хотят строгости (которую дает Python, например). И это можно понять, мне кажется, что обе философии имею право на жизнь, и очень хорошо, что у нас есть эти два стиля. Perl-путь наиболее удовлетворяет моим потребностям.

И, конечно, я не могу закончить здесь, если мы говорим о достоинствах Perl… без упоминания CPAN, разумеется. Даже самый плохой язык на земле стал бы замечательным, будь у него CPAN. Поэтому люди и приходят в Perl, мне кажется. Потому что любую возникшую проблему можно решить используя несколько хороших CPAN-модулей.

И если мы говорим про CPAN, то мы говорим и о Perl-сообществе. Множество умнейших людей ежедневно привносят что-то в язык, появляются очень умные идеи (Moose, к примеру, как проект наиболее впечатляющий и изменяющий мир Perl), а также мощные утилиты для поддержки, сопровождения и тестирования наших дистрибутивов. Автоматическое тестирование, MetaCPAN, cpanminus — все это делает работу с Perl удобной.

Какая, по-твоему, характеристика наиболее важна для языков будущего?

Вот это да, каверзный вопрос! Дай-ка подумать… Если бы я мог щелкнуть пальцами и волшебным образом получить универсальный язык будущего, каким бы он был? Хм, я думаю у него был бы синтаксис сильно похожий на натуральный язык. Синтаксис, который бы позволял программисту «описать» (в отличие от запрограммировать) данные с которыми он работает и поведение этих данных (если так можно выразиться).

Возможно, мы бы могли написать спецификацию нашей программы на обычном английском (конечно, придерживаясь некоторых соглашений) и затем направить это описание нашей магической программе. Все это бы компилировало документ в программу и тест. Мы могли бы затем проверить тест, и двигаться дальше. Думаю, что-то вроде этого.

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

Что мотивирует тебя на такую активность в Perl-сообществе и open source в целом?

Для начала, если быть честным, я не настолько активен в Perl и open source сообществе как был когда-то. Во время моей наибольшей «активности», я разрабатывал и поддерживал Backup Manager, писал для Debian (в течение трех лет был разработчиком Debian) и, конечно же, выкладывал модули на CPAN. К сожалению, моя личная и профессиональная жизнь больше не позволяют мне быть таким же активным. Поэтому я сфокусировал свое время для «свободного ПО» на Dancer.

Что меня мотивирует? Очень хороший вопрос. Думаю, что удовольствие писать код с единственной целью… писать код. Свободное ПО это единственная область где можно найти такое: когда замешаны деньги, красота кода меняется в силу внешних приоритетов. А здесь время не имеет значения. Все что имеет значение это то, что получается на выходе. С интеллектуальной точки зрения это очень удовлетворяет и ободряет.

Написание, выкладывание и сопровождение свободного ПО позволяет улучшать навыки, которые далеки от чистого программирования. Приходится рекламировать продукт, предоставлять поддержку пользователям, документировать код, исправлять ошибки… это действительно переводит на другой уровень как программиста, это уж точно, и это очень ценно. Это расширяет ваши горизонты как разработчика, вы начинаете видеть всю картину в целом.

К тому же, в конце концов, у вас могут взять дружественное интервью, и это может быть настоящей причиной почему вы занимаетесь свободным ПО! Нарциссизм!

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

Очень сложно ответить на этот вопрос. Я могу объяснить свое видение, что послужило причиной такой популярности, но здесь много неизвестного.

Во-первых, Dancer заполнил нишу. В то лето 2009 г. не было ничего похожего на Sinatra на CPAN: готовый микро-фреймворк, который предоставляет богатый DSL для написания веб-приложений. Dancer представил новый способ для решения проблемы «веб-разработки» на Perl.

Во-вторых, конечно же, его дух: быть интуитивным насколько возможно. Поэтому у вас нет $self в контроллерах, это преднамеренное решение. Все, что может быть удалено из синтаксиса, должно быть удалено. Как можно меньше лишнего. Это то, что в конечном итоге приносит чувство простоты, легкости и развлечения при разработке веб-приложений. Большинство пользователей говорят, что любят Dancer за то, что он не принуждает делать что-то, чего требует фреймворк, он не мешает им. И все это из-за небольшой и интуитивной прослойки в качестве DSL.

И, напоследок, думаю, тот факт, что я всегда пытался поощрять усилия сообщества в разработке, таким образом привлекая все больше и больше программистов.

Очень скоро я выдал права доступа к репозиторию другим разработчикам, это быстро привело к идее «ядра разработчиков», очень помогло в техническом обслуживании и создало много энергии вокруг проекта.

Посмотрите на список изменений Dancer, и посчитайте имена… Это, наверное, одно из самых приятных чувств: видеть такое большое количество людей присоединяющихся к тому, что ты когда-то начал. Так что изначальная идея была не такая уж и плохая!

Почему, по-твоему, параллельные выпуски и поддержка Dancer и Dancer2 это хорошая идея?

Потому что это фактически два разных способа реализации концепции Dancer, и изменения в дизайне настолько существенны, что невозможно полностью сохранить обратную совместимость с уже существующей экосистемой Dancer1. Я объяснил свою позицию подробнее в своем блоге. В заключении той записи обозначены причины такого решения:

Есть множество реальных приложений на D1. Большинство из них работают на движках, которые не работают с D2. К тому же, инкапсуляция некоторых приложений может быть нарушена, если его разбить на мелкие пакеты.

По этой причине я выпущу Dancer 2 под новым именем, и это привнесет новые силы в оба проекта:

Dancer 1 в то же время размораживается, продолжается разработка (с тем условием, что изменения не приведут к новому Dancer 2!);

Dancer 2 выпускается на CPAN для развития собственной экосистемы;

Пользователи Dancer 1 счастливы;

Пользователи Dancer 2 счастливы;

Миграция приложений становится контроллируемой.

В свое время было много попыток очернить проект. Что помогло тебе справиться с этим? Почему, по-твоему, такое происходит в open source мире и как с этим бороться?

Ха-ха, эти времена давно позади. Но действительно, в первые дни или месяцы Dancer был окружен страстями и войнами! Вначале было это недоразумение кто же был первым Dancer или Mojolicious::Lite (не стоит путать с Mojolicious — прим. перев.). Так как оба проекта были выпущены примерно в одно и то же время это создавало путаницу. Эта же путаница привела к созданию «сторон» и представило Dancer как конкурента Mojolicious (или наоборот), что фактически неправильно: Mojolicious отличный проект со множеством интересных идей. Это полноценное решение для веб-разработки с другой философией (что хорошо). Dancer это другая область, у него другое видение: он то же для веб-разработки, что Perl для программирования: минимальный и расширяемый набор ключевых слов, позволяющих описать решение проблемы. Вначале никто из нас (по обе стороны) не понимал, что мы играем на разных полях (включая меня, должен сознаться). Поэтому мы вели себя по-детски и вдоволь кормили троллей.

Был даже один индивидуум, который тратил время на плохие отзывы в CPAN рейтинге или флудил в наших объявлениях на Hacker News, даже пытался распространять слухи, что сообщество фреймворка Sinatra ненавидит Dancer! Что привело к официальному сообщению в блоге Sinatra: Sinatra любит Dancer!

В конечном счете ты понимаешь, что чем больше ты пытаешься навредить проекту, тем больше ты даешь ему сил, все возвращается как позитивная энергия. Даже плохой пиар все равно пиар.

Когда все это происходило я находил силы для продолжения своей работы по простой причине: позитивные отзывы от наших пользователей, взгляните на нашу страницу с отзывами, она побуждает действовать. Я думал: если я сделал что-то не так с Dancer, почему столько разработчиков интересуются им? И некоторые из них известные и заслуженные Perl-хакеры. Я должен был что-то сделать хорошо, не может же быть все насколько плохо!

Почему такое происходит в open source мире? Потому что когда мы общаемся online наше общение… бесчувственно. Нет чувств в email, нет возможности понять иронию или что ты кого-то обидел или рассмешил. Поэтому расстраиваться из-за email это плохая идея. Можно по-разному интерпретировать слова. Поэтому, мне кажется, хакеры из-за разногласий так часто воюют online!

Да и в конце концов, ты понимаешь, что это все о строчках кода! Это не имеет большого значения!

Где сейчас работаешь? Использует ли твоя компания Perl? Важно ли, по-твоему, поддерживать язык Perl и его сообщество на бизнес уровне?

Я работаю в Weborama, одной из лидирующих в Европе (у нас, кстати, с прошлого лета есть представительство и в России) компаний в индустрии онлайн рекламы. Я заведую R&D (научно-исследовательские и опытно-конструкторские работы — прим. перев.) отделом и работаю с очень талантливыми людьми, чрезвычайно рад работать в этой команде. Мы очень старались сделать нашу платформу используя Perl в полную силу. И не только язык, но и «культуру»: мы используем CPAN::Mini для создания приватных зеркал для наших внутренних модулей (в Weborama окружении). Все, что мы пишем, это CPAN дистрибутивы, написанные на современном Perl (Moose/Moo/Dancer…), а разворачиваем все с помощью perlbrew. Мы повторили настоящий CPAN, чтобы пользоваться всей инфраструктурой: юнит-тестами, автоматическими тестами, cpanminus как системой для развертывания… Мы используем Perl::Critic подключенный в git hooks, для проверки, что все придерживаются нашего стиля кодирования. Думаю, понятно, что все здесь базируется на Perl. Так работать доставляет большое удовольствие, и помогает нам предоставлять программное обеспечение высокого качества для компании.

Также мы стараемся привлекать как можно больше талантливых Perl-хакеров, недавно мы добавили вакансии на LinkedIn и jobs.perl.org и получили много ответов от людей со всего мира, желающих переехать в Париж и присоединиться к нашей команде. Работать в таком окружении захватывающе! Да, я не объективен! Все-таки я отвечаю за эту команду и ничего не могу сказать о ней плохого! Но я думаю, что если спросить моих коллег, они cо мной согласяться (я надеюсь!).

Думаю, очень важно поддерживать язык Perl на бизнес уровне, как мы делаем в Weborama. Мы уже некоторое время спонсируем Perl-мероприятия, франзцузские Perl-воркшопы, YAPC::EU и другие. Мы также помогаем нашим сотрудникам посещать такие события, спонсируя билеты и отели или разрешаем им не брать отпускные дни.

Содействие Perl-сообществу очень ценно для компании, которая работает с этим языком, это здравый смысл.

Стоит ли сейчас советовать молодым программистам учить Perl?

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

Вопросы от читателей

Используешь Mojolicious?

Конечно! Все мои веб-приложения написаны на Mojolicious. Не могу и думать о других способах.

Помните, я говорил раньше о том, что тяжело понять иронию из email? Если серьезно, я не пользовался Mojolicious, но читал код, когда начал разрабатывать Dancer 2. Я хотел посмотреть как сделаны некоторые вещи, и тогда я понял, что Dancer это совсем не то же самое, что Mojolicious::Lite. Lite это небольшая DSL-обертка над большим фреймворком. Dancer это полноценный DSL. Это не совсем одно и то же. Опять же, я думаю, что оба подхода имеют право на существование.

Так что нет, я не использую Mojolicious, но считаю проект хорошим.

Думаешь, что умеешь танцевать?

(Dancer с англ. танцор — прим. перев.)

Думаю, что моя лунная походка совсем неплоха! И нет, я не пришлю видео, придется поверить мне на слово.

Известны ли тебе большие реально работающие проекты, написанные на Dancer?

Во-первых, у нас в Weborama работает рекламный сервер (Управление кампаниями), предоставляющий API для веб-интерфейса и клиентов. Этот веб-сервис написан на Dancer (первой версии) и отлично работает. Недавно мы выпустили новый продукт на Dancer 2. Вне Weborama есть множество «реальных» компаний, которые используют Dancer. Например, Moonfruit.com с гордостью работает на Dancer. Также я слышал, что у Novell в недавно выпущенном приложении для развертывания серверов Baracus используется встроенный REST-сервис, который написан на Dancer. Другие проекты можно найти у нас на сайте perldancer.org/dancefloor.

Приедешь ли на YAPC::EU в Киев?

Пока не знаю, все зависит от моего расписания, но кто знает!

Оставил ли ты Dancer 1 сообществу или все еще участвуешь в развитии?

Dancer 1 сейчас поддерживает Yanick Champoux, но это не значит, что я не участвую в дискуссиях. Я недалеко, даже если все силы направляю на Dancer2.

Спасибо за интервью, используйте Perl и танцуйте!

Вячеслав Тихановский


Обзор CPAN за март 2013 г. | Содержание | Perl Quiz
Нас уже 1393. Больше подписчиков — лучше выпуски!

Комментарии к статье