Выпуск 30. Август 2015

Обзор CPAN за июль 2015 г. | Содержание

Интервью с Филиппом Брухатом

Филипп Брухат (Philippe Bruhat) — автор модулей на CPAN, подборки секретных операторов perlsecret, сооснователь конференций YAPC::EU

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

Первый компьютер мне достался когда я был подростком (где-то около 13 лет). Это был T07/70 (французский микрокомпьютер). Единственным доступным языком был Microsoft BASIC. Помню, что набирал бесконечные страницы программ из французского еженедельника Hebdogiciel, где были распечатки для всех компьютеров того времени (Oric, Sinclair, Commodore и т.д.).

Все выпуски можно почитать онлайн! http://www.abandonware-magazines.org/affiche_mag.php?mag=7&page=1

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

В конце концов я купил Assembler, но примеры в книге были неправильными, и я не сильно продвинулся.

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

Я пользуюсь vim, хотя мой .vimrc довольно скуден. Когда я начал использовать Unix, помню, что нужно было выбрать между Emacs и Vi, и кто-то мне сказал, что неважно что установлено в системе, но там всегда должен быть vi, поэтому выучить его было полезно. Так я и подсел.

Годами я пользовался vim не зная многих команд. В 1999 я купил vi-кружку через интернет и многое выучил прямо с нее. Но настоящим прорывом было когда мой друг, увидев ту самую кружку, сказал, что перед любой :-командой можно вставить «адрес» и она будет выполнена на соотвующем участке файла.

Кружку до сих пор можно купить через cafepress: http://www.cafepress.com/geekcheat.11507711

Шпаргалка, напечанная на кружке, выглядит следующим образом: http://f2.org/image/archive/vi-mug-detail.gif

Я часто пользуюсь терминалом. Помню как допечатывал последние символы на пятом соревновании по обфусцированному Perl через screen-сессию на настоящем VT320, подключенном к моему компьютеру через серийный порт. Этот терминал до сих пор пылится у меня на полке.

Моим первым настоящим email-клиентом в Unix был Elm (моим первым email-аккаунтом был аккаунт на VMS-машине, но я написал всего лишь дюжину писем прежде чем перейти на Unix и никогда об этом не пожалел). Потом я перешел на Pine, также немного сидел на Eudora (когда застрял на Windows 95 на несколько месяцев). Я перешел на mutt в ноябре 2002 года и до сих пор использую ее как свой основной email-клиент.

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

Моей первой Perl-программой был счетчик посещений. Я его даже не написал, а просто скопировал. Позже (когда начала расти посещаемость моего сайта), смутно припоминаю, что добавлял что-то вроде блокировки файлов, чтобы счетчик не повреждался.

Другой программой, которую я «написал», была гостевая книга (вот это были дни). Я хорошо помню одну магическую Perl-строку. С 99.9% уверенностью могу сказать, что взял ее из Архива Мэтта, и это строкой была:

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

Гостевая книга до сих пор доступна в Интернет Архиве http://web.archive.org/web/19970705232331/www2.ec-lille.fr/~book/goldenbook.htm и среди глупых сообщений есть первый контакт с женщиной, которая в дальнейшем стала мне женой. Кому нужны сервисы знакомств, если есть Perl и CGI?

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

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

Я писал несколько быстрых прототипов на Bash, но затем обычно переписывал все на Perl, как только программа становилась более сложной.

Я писал несколько простых PostScript-программ, когда мне нужен был больший контроль на тем, что печатается на бумаге. Также с гордостью могу заявить, что однажды написал целую презентацию на PostScript, и некоторые слайды использовали функцию rand для отрисовки графиков. Также у меня был Makefile для пересборки слайдов (в основном для замены констант), чтобы они нормально выглядели независимо от разрешения проектора (4:3 или 16:9).

Также я написал как минимум одну нетривиальную программу на Befunge.

Очевидно, чтобы работать с современным веб, мне пришлось выучить немного JavaScript (jQuery рулит). Также я написал несколько строк на Python, так как это основной язык используемый в моей команде (у нас очень странное приложение, где основная работа сделана на Python, а чокнутые места на Perl).

У меня несколько книг о языках, которые хотелось бы выучить (Haskell, Erlang, Lisp), но так как Perl удовлетворяет все мои нужды, у меня нет времени и мотивации учить новые языки программирования.

Что мне действительно нравится, так это история компьютеров. У меня много книг об истории Unix и интернета, всегда ищу «классику». Одной из последних книг, которую я прочел от корки до корки, была «О стиле программирования» (“Elements of Programming Style”), второе издание, Керниган и Плагер (1978). Что означает, что я выучил немного PL/I и Фортран пока читал ее. До этой книги мне понравилась «Жизнь в Unix» (“Life with Unix”) Дона Либса (1989). И, конечно же, «Пособие для ненавидящих UNIX» (“Unix-Haters Handbook”), Гарфинкела, Вайса и Страсманна (1994).

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

Простой ответ — CPAN, с CPAN Testers на втором месте, но это не мой ответ.

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

По-моему, самым большим преимуществом Perl являются его люди.

Я не считал себя Perl-программистом пока не присоединился с парижским Perl-монгерам в апреле 1999. С тех пор я им являюсь.

INGY в 2004 году дал мое любимое Perl-интервью. До сих пор у меня бегут муражки по коже когда я читаю последний параграф, последнее предложение интервью: «Если глубоко копнуть, то меня держит Perl-сообщество. Эти люди как странная связанная семья. Perl привлекает людей определенного типа; это мои люди».

Интервью INGY: http://osdir.com/Article1534.phtml

Что, по-твоему, является самой важной особенностью языков будущего?

Возможность использовать несколько ядер процессора без необходимости fork и IPC. И затем хорошая система обмена данными поверх всего для возможности дальнейшего роста мощности. «Большие данные» (“Big data”) последнее время стало популярным словом; я знаю нескольких людей, которые занимаются подобным на работе, и ясно, что с технической стороны, любой достаточно успешный проект сталкивается с одной проблемой: масштабирование.

Успех, если вы работаете с интернетом, означает, что что бы вы не делали, это может вырасти на несколько порядков за короткое время. Если вы не хотите утонуть в своем собственном успехе, вам понадобятся технологии для соответствия росту. В некоторых областях моей работы (очень успешная интернет-компания) мы достигли лимита Perl 5.

Что думаешь о Perl 6?

Я достаточно давно в сообществе, так что я застал, когда Perl 6 только был объявлен. Я помню волнение, когда писались RFC. Помню как слышал о том, что кружки разбивались о стены. Помню, как разработку Parrot возглавил Дэн Сугальски.

Я пытался учить Perl 6, когда только появился Pugs, но дальше, чем несколько примеров, не продвинулся.

Я следил за прогрессом Perl 6 издалека, зная, что однажды мне придется его выучить. Мне нравится, что Ларри представляет Perl 5 и Perl 6 сестрами в семье Perl-языков. (Хотя, почитайте про семьи в его выступлении “State of the Onion” в 2006 году http://www.perl.com/pub/2006/09/21/onion.html)

Мне нравится лого Perl 6, бабочка, и ее имя, Камелия. (И как имя пересекается с верблюдом Perl 5: camel, Amelia). Также мне нравится, что лого отталкивает многих программистов-мужиков. Хотя не думаю, что Ларри стоит представлять язык как привлекательный для семилетних девочек, потому как это только подкрепляет стереотипы с которыми он хочет бороться.

Многие годы я хотел поехать на FOSDEM, но никак не мог втиснуть конференцию в свое расписание. Наконец-то в этом году поехал (хотя я провел меньше 24 часов в Брюсселе, включая время, которое потратил, чтобы туда добраться) только для того, чтобы услышать объявление Ларри о том, что Perl 6 выходит в 2015 году.

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

Что ты делаешь для организации YAPC::EU и почему?

Я один из сооснователей YAPC Europe Foundation. В 2003 году сразу после YAPC Europe в Париже, организаторы прошлых четырех конференций (Лондон, Амстердам, Мюнхен и Париж) собрались вместе в баре обсудить будущее.

YAPC Europe стало жить своей жизнью, и не было необходимости в людях из YAS (Еще Одно Общество, неприбыльная организация, которая в последствии стала TPF), которые были за океаном и несколькими часовыми поясами, для помощи европейскому сообществу в организации конференций.

Команда из Парижа завела платежную систему, подключенную к нашему сайту (который был переписан через год для первого французского воркшопа, сайт в дальнейшем начал называться “Act”), и мы хотели сделать это доступным и для других Perl-конференций, так что работа и деньги, которые шли через платежную систему не были утеряны.

Так как команда была интернациональная, организация была зарегистрирована в Нидерландах как Dutch Stichting, с банковским счетом во франции (чтобы сохранить один и тот же банк для платежной системы, которую использовали в Париже). А нашим первым председателем был немец.

У YAPC Europe Foundation (http://yapc.eu/) есть две роли: выбор команды для организации следующей конференции YAPC Europe; и управление платежной системой. Платежная система предоставляется бесплатно для Perl-сообщества, так как YEF оплачивает все счета. Весь бюджет YEF складывается из пожертвований и тратится на оплату онлайн-сервисов и предоставляется как начальная сумма для разных Perl-конференций http://www.yapceurope.org/finance/kickstart.html.

В 2008 году я занял роль казначея, так как у предыдущего не было достаточно свободного времени. Так что я тот, кто отправляет деньги участников организаторам. С 2005 года YEF пропустило через себя €350,000 от участников и спонсоров к организаторам 45 Perl-конференций.

Где сейчас работаешь, сколько времени проводишь за написанием Perl-кода?

С марта 2007 года я работаю в Booking.com в основном удаленно из Лиона. С тех пор компания выросла на порядок (и даже больше) в разных направлениях.

Я пишу на Perl большинство времени (я все еще разработчик) в команде, где большинство коллег моляться на Python. Мой текущий проект использует Moo (в течение некоторого времени я использовал одновременно Moose и Moo, но затем Moose полностью убрал), Dancer и DBIx::Class. Так как у проекта есть веб-интерфейс, я также немного пишу на JavaScript.

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

Не могу найти точной цитаты Ларри Уолла, но он как-то объяснял, что Perl вероятнее может быть последним языком, чем первым.

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

И затем студенты могут узнать про Perl и смешать все воедино.

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

Как решил собрать в одном месте все секретные операторы Perl?

Я долгое время тусовался в рассылке Fun with Perl, и именно там Хосе Кастро начал спрашивать про названия популярных секретных операторов для своей книги OGSOP (Обфускация, Гольф и Секретные операторы в Perl). Я придумал название «детская коляска» для @{[]}, и оно мне так понравилось, что я захотел убедиться, что другие люди тоже будут использовать это название. Единственным способом добиться этого, было написать документацию самому…

Также в 2008-2009 гг. я сделал несколько докладов о секретных операторах в Perl на разных Perl-конференциях. Так само собой я начал их собирать.

У меня была заготовка для “perlsecret” (по аналогии с “perlop”) в одной из директорий (самая старая версия была от 2010 года) и однажды я решил довести ее до ума. Другой моей целью было включение этого списка в документацию Perl, но, как оказалось, упоминание “Goatse” не очень вписывалось в официальную документацию.

Git::Repository использует команду git, есть ли какое-то преимущество в использовании libgit2?

Это большая проблема, что у git нет библиотеки libgit. Это значит, что для управления git-репозиторием приходится использовать git (почти как только perl может отпарсить Perl).

Дело даже не в скорости: git очень быстр, и время на создание fork все равно будет тратится при использовании shell-скриптов. Программа, использующая libgit, будет вероятнее быстрее, чем shell-скрипт выполняющий git-команды, но я сомневаюсь, что другая библиотека (такая как libgit2) будет быстрее, чем git, выполнять git-операции.

Git::Repository оборачивает репозитории в простые объекты, которые предоставляют контекст для запуска git-команд. Для меня преимущество использования Git::Repository в том, что я могу работать со многими репозиториями не волнуясь о текущей рабочей директории. Также модуль поддерживает все 128+ git-команд и работает с потоком данных (любого размера), который производится git.

На CPAN есть обертки над libgit2 (Git::Raw), но я не использовал их. Читал где-то, что в libgit2 объекты могут быть сохранены не только в git-объектах или git-пакетах. Это может быть полезным при работе с git-объектами крупных масштабов (как, например, это делает GitHub).

Почему розовый?

Это длинная история.

Я одеваю розовые вещи на Perl-конференции уже довольно давно. Я вынуждал некоторые конференции (и не только французские) печатать розовую футболку специально для меня. У меня также одна из двух розовых футболок Dancer. На YAPC в Пизе, Ник Кларк и BinGOs пародируя меня тоже одели розовые футболки. На работе некоторые коллеги требуют, чтобы я носил что-то розовое, или хотя бы с требовательным тоном спрашивают почему я не одел розовое сегодня.

Есть история почему я ношу розовые футболки. В 2001 году во время конференции YAPC Europe в Амстердаме, небольшая группа парижских Perl-монгеров подумало: «почему бы не организовать YAPC в Париже?». Затем мы встретились с Кевином Лензо (из YAS) и амстердамскими организаторами, чтобы поговорить о следующей YAPC. К нашему удивлению, была еще одна команда, хотевшая провести следующую YAPC. Так случилось, что команда из Мюнхена была первой. И у нас было два года, чтобы подготовить свою YAPC.

В 2002 году аукционы была до сих пор популярны на YAPC-конференциях. В течение аукциона в конце мюнхенской конференции продавалась множество смешных вещей (опкод Perl 6, оптимизация Perl 5, штаны Шверна, полуголая борьба на руках между Шверном и Дэмианом Конвейем…). У меня были свежи воспоминания про «драку» внутри London.pm во время аукциона в Амстердаме по поводу даты проведения ежемесячных социальных встреч, и мне захотелось инициировать что-нибудь подобное и здесь. Я выставил в качестве лота цвет футболки организаторов на следующей YAPC в Париже (все знали, что это будем мы, не было других вариантов).

Моя идея была в том, что Леон Брокард выставит свой любимый цвет (оранжевый), а фракция London.pm будет отстивать какой-нибудь другой цвет и цена за лот будет расти. Увы, оказалось, что британцы любят прикалываться над французами больше, чем над собой… Грег МакКарол выставил розовый и очень быстро он дошел до €100. Некоторые из парижской команды очень быстро стали на меня злиться…

Я решил превратить шутку в маркетинговый ход и сделал розовый официальным цветом конференции. Сайт был розовым (см. http://conferences.mongueurs.net/ye2003/coming_soon.html и http://conferences.mongueurs.net/ye2003/), флаеры были розовыми, футболки организаторов (все двенадцать) были розовыми.

Через год на аукционе в Белфасте (тут есть и своя история), я понял, что розовый это «наш цвет» (фрацузская YAPC), и в дальнейшем стал использовать розовый как отличительный цвет (так как никто из французов больше не носил розовые футболки). И так я делаю уже более десяти лет. Таким образом обычно люди и узнают меня на Perl-мероприятиях.

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

Вообще мне нравится носить розовое, так как это в каком-то смысле способ противостоять гендерным стереотипам. Я рад, что мои дочери думают, что розовый это любимый цвет папы (на самом деле нет), вместо того, что это девчачий цвет (Цвета не должны быть принадлежать разным полам! Каждый может одевать то, что ему хочется!).

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


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

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