Выпуск 3. Май 2013
← Обзор CPAN за апрель 2013 г. | Содержание | Perl Quiz →Интервью с Sawyer X
Sawyer X — израильский Perl-программист, один из разработчиков Dancer, активный участник Perl-сообщества и TelAviv.pm. Известен своими харизматичными докладами на технических конференциях.
Как и когда начал изучать программирование?
Ближе к старшим классам у нас был внеклассный кружок программирования. Я присоединился и выучил некоторые основы. В действительности я не очень учился вместе с кружком, просто развлекался. Затем в 10 классе я пошел на компьютерные уроки в школе. Мы изучали ассемблер, C и Pascal. На самом деле мне не нравилось учиться и я отставал. Однажды я взял и купил “A Book on C” и вместо класса сам взялся изучать. Когда все начинали школьные проекты, свой я уже закончил. Пока все писали “змейку” (нам предоставили базовую библиотеку для работы с DOS-графикой), я имплементировал алгоритм шифрования, который был кроссплатформенным для Windows, и GNU/Linux с командным интерфейсом (именно для GNU/Linux пришлось использовать ncurses).
Какой редактор используешь?
На текущий момент я использую Vim без плагинов или специальных настроек, кроме отличной подсветки синтаксиса и нескольких маленьких удобств. Я попробовал несколько плагинов, но в конце концов все их удалил. Для меня конфигурация IDE очень запутанна и хрупка. Когда мне приходится писать на Perl для Windows, я использую Padre, Perl IDE. Мне в действительности плевать на войны редакторов. Используйте что для вас комфортно, и, желательно, время от времени пробовать новые вещи.
Как и когда познакомился с Perl?
Еще будучи в школе на хардкор концерте я встретил хакера, который программировал на Perl. Чувак был действительно крут и посоветовал дать шанс этому языку, я попробовал и взорвался. С тех пор и использую!
С какими другими языками программирования приятно работать?
В течение лет я пользовался многими языками (особенно ассемблер, C, C++, Ruby и Python) но, если честно, единственным языком с которым было приятно работать был Perl. С С было тоже весело, но по другим причинам, наверное. Perl несомненно отхватил большую части пирога.. э-э-э.. или лука.
Какое, по-твоему, самое большое преимущество Perl?
Технически? Эластичность. Perl не просто гибок, он эластичен. Можно двигать стены, гнуть их, это как чертова матрица! Devel::Declare
всего лишь один пример того, что с Perl можно делать буквально все. Лимитом может быть только ваша фантазия.
Думаю, что меня и других разработчиков Perl привлекает простотой решения задач, так как он просто искривляет пространство вокруг вашей точки зрения, какой бы она ни была. Если вы можете произнести это, это можно написать на Perl!
Какая, по-твоему, характеристика наиболее важна для языков будущего?
Параллелизм и сообщество, и точка. Во всяком случае для меня.
Скорость выполнения, конечно, важна, но правильные параллельные вычисления, как по мне, становятся все более и более важными. Я считаю, что поэтому Perl 6 и поставил на это.
Вместе с тем, что параллельные вычисления и скорость важны, есть лимит вовлеченности, если все, что у вас есть, это синтаксис. Я имею в виду, что хороший язык это… хорошо, но сообщество вокруг него дает чувство принадлежности, как одному из основных инстинктов и желаний, который у нас есть как у животных. Мы хотим принадлежности, быть частью чего-нибудь, создавать для себя, для других, с другими, и видеть как это расцветает и принимает форму. Мы хотим существовать и создавать существование. Именно это и есть сообщество. Если мы хотим язык, который устойчив за пределами своих технических возможностей, у нас должно быть хорошее сообщество, чтобы это было нечто большее, чем упорядоченный ассортимент людей.
Что мотивирует тебя на такую активность в Perl-сообществе и open source в целом?
Несколько вещей:
- Я люблю создавать. Когда я первый раз взял в руки гитару, я не начал учить песню, я попытался написать свою. Я хотел создать что-то новое. Открытый код и свободное ПО продвигают эту идею. Они говорят “давайте что-то сделаем!” — Perl как бы центр этого. Perl всегда говорит “не бойся пробовать, не бойся ошибиться”.
- Я люблю жаловаться на вещи и чинить их. У меня уже хорошо получается показывать и говорить “это фигня”, и я стараюсь научиться чинить проблемы. Открытый и свободной код позволяют делать именно это. Он подталкивает к участию. Perl потрясающий пример вовлечения людей. Сильно впечатляет, когда вы наблюдаете насколько много Perl-программистов работают над одним, двумя или десятью проектами одновременно. Можно вовлечь людей в десятки проектов в течение одного года. Это сумасшествие какое-то. Посмотрите на rafl (Florian Ragwitz — прим. перев.)! Он везде!
- Я люблю взаимодействовать с людьми. Если и есть что либо более мотивирующее, то это возможность работать с другими. Мне удается работать с самыми умными людьми, которых я когда либо встречал. У Perl есть много ярких умов. Большая их часть это охрененно крутые люди и я чрезвычайно рад, что встретил их и могу считать себя другом хотя бы некоторых из них. Есть нечто волнительное в работе с другими над одной целью. Это заполняет тебя значимостью и удовлетворением.
Кажется ты пишешь много асинхронного кода. Почему выбрал AnyEvent, в то время как многие наговаривают на этот модуль?
Вообще я начал с POE. Давным-давно, когда я пытался понять что к чему, я зашел на IRC канал и задал вопрос. Мне советовали написать свой мультиплексор, чтобы лучше понять как они работают. Один собеседник после моих попыток что-то собрать в течение часа, спросил “что конкретно тебе непонятно?”. Затем в течение получаса он объяснил мне POE и помог лучше понять этот модуль. Позже я узнал, что это был Rocco Caputo, автор POE.
Я решил попробовать AnyEvent из-за более удобного интерфейса и лучшей скорости. Я до сих пор люблю POE (и Reflex выглядит впечатляюще), но он слишком многословен для меня. Мне скорее всего придется работать с Reflex в будущем, и я очень рад этому.
Я не сильно замечал, что люди наговаривают на AnyEvent, это больше как высказывание пренебрежения к тому как автор (Marc) иногда выражает свои мысли и как минимум к одному случаю, когда он сломал модуль, который неправильно использовать API у AnyEvent. Я бы предпочел не углубляться в это, более того я согласен с некоторыми вещами, и не согласен с другими. Кроме того, есть много того, чего я не знаю.
Единственная вещь, которая меня беспокоит, это что у AnyEvent нет сообщества. Надеюсь, что это изменится в будущем.
Ты присоединился к проекту Dancer довольно рано. Почему думаешь он привлек тебя?
Несколько вещей: он был небольшим, был легкий интерфейс с DSL, и была теплая атмосфера на IRC-канале. Когда я начал участвовать было три или четыре человека на канале, если я правильно помню.
Когда я написал свою первую программу на Dancer, я думал, что он не поддерживает CGI (я еще тогда не знал про PSGI) и написал пост в свой блог что-то вроде “плохо, что нет такой поддержки, фреймворк выглядит круто”. В тот вечер я пошел есть хумус со своей девушкой и на пару минут решил выйти онлайн и проверить, пробовал ли кто-то Dancer и CGI. Я увидел чей-то пост “Sawyer написал про Dancer, и что он не поддерживает CGI, но это не так. Вот такие настройки нужно использовать!” — это был Alexis Sukrieh, автор Dancer. Я был сильно поражен тем, что он увидел мой пост и в ответ написал свой. Это было круто. Поэтому я и зашел на IRC-канал.
Очень манила простота помощи в Dancer и работа с другими. Ты становился частью только лишь переступив порог, и я чувствовал себя прекрасно, работая над фреймворком. Люди в сообществе приятные и вдумчивые, ты чувствуешь, что вложение своего времени в Dancer полезно для пользователей и Perl-сообщества вообще.
Расскажи о своей роли в TelAviv.pm и группе вообще. Важны ли встречи сообщества?
В Israel.pm было несколько организаторов, в основном Shlomi Fish и Gabor Szabo. После того как Shlomi перестал заниматься встречами, я решил попробовать что-нибудь организовать и увеличить посещаемость. Я назвал это TelAviv.pm, потому что мы встречались в университете Тель-Авива. Хотя довольно скоро мы переместились в Рамат-Ган, который находится в 20 минутах от Тель-Авива, но там также свой муниципалитет. Я все равно оставил имя, потому что это все еще часть большого района Тель-Авива (что само по себе странно, потому что Тель-Авив очень небольшой). Я сделал плохенький вебсайт (позже обновил на хороший) и связался с людьми, чтобы они подготовили доклады, и подготовил несколько своих. В течение нескольких последних лет я организовывал встречи, иногда с помощью Shlomi или Gabor, которые все еще активные участники сообщества. В последние месяцы мы решили, чтобы каждую встречу организовывал кто-то другой. Это было довольно успешно. Мы также успешно организовали два израильских воркшопа.
Я думаю, что встречи сообщество чрезвычайно важны! Посетив встречу вы можете:
- Улучшить свои знания языка и сторонних модулей
- Научиться разным трюкам
- Встретить потенциальных коллег и работодателей
- Получить практику выступлений
- Завести друзей и возможных соавторов
- Получить помощь с работой или идеей
- Хорошо провести время.
Иногда кажется, что это бессмысленно, но когда вы начинаете посещать такие мероприятия, открываетесь и встречаете новых людей, вы начинаете понимать как это потрясающе. Это как бесплатный наркотик, который дарит хорошее настроение, делает вас умнее и лучше на своей работе без побочных эффектов кроме траты некоторого времени :)
Ты часто пишешь в твиттер об опыте работы с git. Чем особенная эта система контроля версий?
Git один из лучших инструментов для любого автора, будь-то писателя, программиста или графика. Конечно, есть и другие инструменты, но все они фиговые при сравнении. Git небольшой, быстрый и мощный. В своем роде это Perl систем контроля версий.
Недавно ты был в Румынии. Что делал?
Для меня было честью посетить юбилейную встречу Cluj.pm. Я сделал несколько докладов и провел время с отличными людьми. Я написал детальный отчет у себя в блоге. Покороче? Съездите туда! Повстречайте этих людей! Посетите их конференции! Мы так многому можем от них научиться!
Твои выступления на технических мероприятиях очень позитивны и энергичны. В чем твой секрет?
Спасибо :)
Я просто думаю, что то, что есть в Perl-сообществе, техническом и социальном, это так круто, что я не могу сдержаться.
Есть много захватывающих и забавных вещей в Perl. Когда вы смотрите на другие сообщества, вокруг других языков, не складывается впечатление, что у них есть яркие преимущества (у многих вообще никаких преимуществ нет), но они знают как увлечься тем, что у них есть. Они представляют какой-то модуль, который вы знаете есть уже лет 7 в Perl, но это их сильно волнует! В Perl вы можете написать что-нибудь крутое и люди просто ответят холодным “круто” и все. Мы должны увлекаться, возбуждаться и должны понять насколько фантастически то, что у нас есть и восторгаться этим!
Также я учитываю когда выступаю, что если доклад не веселый, то тяжело чему-то научиться. Тяжело сосредотачиваться когда материал сухой. Он может быть интересен с технической точки зрения, но нужно представить его в интересной и увлекательной манере. Посмотрите на Paul Fenwick и его выступления. Можно ли представить кого-нибудь кто бы его не слушал и не научился чему-нибудь? Конечно, не все могут быть как Paul (даже Paul трудно быть собой), но мы может сделать гораздо больше, чем показать кусок кода. Это наши конференции и встречи, не так ли? Пусть же нам будет весело!
Где ты сейчас работаешь? Сколько твоего времени проводить за программирование на Perl? Ты где-то упоминал, что занимаешься также администрированием, это до сих пор так?
Сейчас я работаю в двух компаниях: электронная коммерция и VoIP стартап. Мне повезло с моим начальником, который позволяет мне работать с Perl. Я начал с 50% времени программирования на Perl и 50% администрирования. Когда я стабилизировал инфраструктуру, я смог запрограммировать некоторые части на Perl, вместо бегания за своим хвостом (что администраторы часто делают). Таким образом у меня была стабильная основа и я начал писать большие компоненты инфраструктуры на Perl. Сейчас около 80% моего времени я пишу на современном Perl, как части инфраструктуры, так и сервисов, окружающих ее.
Таким образом я занимался администрированием до недавнего времени, потому что в июне я переезжаю в Европу на другую работу. Возможно, я скоро напишу об этом в своем блоге.
Стоит ли сейчас советовать молодым программистам учить Perl?
Определенно! Нам только нужно научиться радоваться этому. Нужно время, чтобы понять, что решение элегантное, почему кусок кода не сильно отличается от произведения искусства. Черт возьми, нам всем требуется время, чтобы это понять. Молодые программисты, у которых еще меньше опыта, не всегда просто понимают почему Moose захватывающий. Мы должны иметь возможность объяснить это. Мы должны научиться привлекать их не в силу нашего опыта, а в силу их неопытности. Мы должны говорить на их языке и подключать их. Шаг за шагом они научатся ценить вещи с более изысканного аспекта, поэтому не стоит об этом волноваться. Сейчас мы должны их заинтриговать и заинтересовать.
Вопросы от читателей
Saywer это твое настоящее имя?
Вообще-то нет. Это прозвище, которое очень давно мне дали мои близкие друзья. Оно происходит от художественного героя Тома Сойера. Есть история почему так произошло, но я сохраню ее для следующего интервью :)
Если вы не уверены стоит ли меня называть Sawyer, подумайте над следующим: я люблю заводить друзей, поэтому без проблем зовите меня как это делают мои друзья!
Почему ты нецензурно выражаешься как пятилетний?
Это фраза соскочила у меня с языка (на одной из Perl-конференций Sawyer рассказывал как он ходил с товарищем по городу и матерился как пятилетний – прим. перев.). Я хотел сказать “тринадцатилетний”. Наверное ругань для меня один из инструментов акцентирования, когда я говорю. В смысле, это сразу заметно! Также я вырос, окруженный американскими экшн-фильмами и ругательства в Израиле очень распространены, так что моя речь подстроилась под это. Ужасно, не правда ли?
Удалось выпить с Sebastian Riedel?
Еще нет. Но я на это надеюсь!
Мне удалось встретиться с Glen Hintle (активный участник Mojolicious-сообщества — прим. перев.), очень обаятельный человек. Надеюсь, что в следующий раз когда его встречу будет больше времени поболтать.
Приедешь в Киев на YAPC::Europe в этом году?
Я должен был ехать, потом не смог, и теперь есть вероятность, что у меня будет такая возможность. Я не могу обещать, потому что люди будут злиться на меня, если я не приеду, но в конце концов очень может быть я смогу принять участие. Вопрос в том, насколько поздно можно подать заявку на доклад :)
← Обзор CPAN за апрель 2013 г. | Содержание | Perl Quiz →