Интервью с Вячеславом Тихановским

Темы:

Вячеслав Тихановский aka @vti — известный Perl-хакер, редактор журнала «Pragmatic Perl» дал эксклюзивное интервью PerlNews.Ru.

Программирование/Perl

Почему ты выбрал программирование как профессиональную стезю? Что оказало влияние на этот выбор?

Программировать я вообще не собирался. Пытался как-то писать игры, но у меня ничего не получалось. Никак не мог понять как составлять алгоритмы. Особенно тяжко давалось понимание массива. В университете чуть ли не на первом практическом занятии по программированию нужно было решить задачу нахождения наибольшего числа. Я даже и придумать не мог как это запрограммировать. После того как я увидел на доске решение, меня наконец осенило. Именно этот момент сделал понятным все, с чем я сталкивался до сих пор. Так вот иногда даже одно небольшое наглядное объяснение может сделать из нормального человека программиста.

Почему Perl? Не Ruby/PHP/Python?

Вначале я очень увлекался Си. Это где-то было на втором курсе университета. Пока все писали на Pascal, я читал Кернигана и Ричи. В это же время начал пользоваться линуксом в качестве основной системы. Прочитав книгу про построение компиляторов, начал писать свой шаблонизатор. Затем стал писать нечто подобное веб-фреймворку на Си. О Перле я слышал еще до этого, но мне он казался слишком простым и не тру :D Через некоторое время намучившись со строками, решил все-таки попробовал Перл. Что и говорить, дело пошло гораздо быстрее.

Питон никогда не хотелось учить, а вот Руби пытался несколько раз. Но из-за похожести языков всегда возникала путаница в голове. Мне гораздо интереснее пробовать языки из других областей, которые сильно отличаются от Перла.

Активно вносишь свой вклад в мир свободного программного обеспечения. Почему ты считаешь важным делиться кодом?

Не знаю вношу ли я какой-то вклад. Мне неизвестно сколько людей пользуется моими модулями. GitHub в основном использую как резервную копию, а CPAN как удобное хранилище модулей для установки. Один раз я только участвовал в открытом проекте, над которым работали несколько человек. Если кому-то пригодится — хорошо, если нет — я все равно не перестану выкладывать :)

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

Расскажи о своём рабочем окружении. Лаптоп/десктоп, ОС, редактор? Есть ли годами отточенные до совершенства dot-файлы?

Последнее время пользуюсь ноутбуками. Несколько лет назад у меня даже был MacBook Pro. Теперь ультрабук Toshiba, который с переменным желанием хочется выбросить на помойку, но пока не нашел достойной замены.

Из операционных систем — последнее время Debian GNU/Linux, до этого были Slackware, Gentoo и ArchLinux. Немножко MacOS.

Редактор — vim. Отлично чувствую себя в vi древних версий на оригинальных настройках. Вообще последнее время устал настраивать какой-либо софт. Если настройки по умолчанию меня не устраивают, пытаюсь найти аналоги, который ближе моим привычкам. А если аналогов нет, то стараюсь привыкнуть, особенно ничего не меняя.

Так было и с шеллом. Долгое время пользовался настроенным zsh, но из-за многих серверов, по которым приходится периодически лазить, теперь использую девственный bash. Привык к комбинациям клавиш и чувствую себя комфортно.

Ты настоящий фанат тестирования и выпустил серию статей, посвящённые тонкостям этой задачи. Почему это так важно?

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

С течением времени появляются свои практики и подходы. Знаешь что работает, а что нет. Этим и хотелось поделиться.

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

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

Из моих любимых модулей общего назначения: strict, warnings, List::Util, List::MoreUtils, Capture::Tiny, всевозможные Test::*. Часто использую V для проверки версии и путей установленного модуля, cpanm для установки и local::lib для подключения модулей из изощренных источников.

Какие фичи ты больше всего хотел бы увидеть в будущих версиях Perl 5?

Хотелось бы, конечно, уже начать пользоваться сигнатурами. Неплохо было бы иметь конструктор с описанием полей с проверкой на обязательность. Но без излишеств. Я даже написал подобный модуль attrs. Еще бы что-нибудь сделать с исключениями. Try::Tiny никуда не годится. То ли дело Error::Tiny ;)

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

Я думаю, что он уже используется. Остается только пожелать успехов.

Как твои эксперименты с Perl 6 и веб-фреймворком Wee6, какие планы на будущее?

Планы довольно туманны. Сам процесс разработки был довольно мучительным, и мне не очень хочется к нему возвращаться :) Но Wee в Perl 5 продолжаю дописывать. Интересно попробовать все реализовать минимальными затратами и количеством строк.

Pragmatic Perl

В марте исполнилось 2 года журналу «Pragmatic Perl». Как появилась идея создания журнала? Какие итоги можно подвести сейчас?

Идея появилась спонтанно. В русскоязычном интернете очень мало пишется про Перл. Мне показалось, что было бы неплохо организовать журнал, который бы заполнил пустующую нишу. Я спросил нескольких людей, они высказались положительно и где-то в тот же день я начал писать LaTeX-стиль. Затем по-быстрому слепил сайт и через пару недель был первый выпуск.

Если говорить про итоги, то все оказалось не так плохо как ожидалось, но и не сильно хорошо как хотелось. Конечно, все еще есть те, кому интересно читать про Перл, но их сравнительно мало. Несмотря на оригинальные статьи и эксклюзивные интервью подписчиков не так много как хотелось бы. Авторов же пригодится брать за горло, чтобы они писали статьи. Надеюсь, что по чуть-чуть это будет исправляться.

Почему, по-твоему, журнал оказался так востребован? Многие специализированные журналы угасали уже после нескольких выпусков, в чём секрет долголетия Pragmatic Perl?

Как я уже писал, ниша была пустой. Практически все площадки, на которых кое-как обсуждался Перл практически вымерли. Хорошо, что теперь есть и perlnews.ru.

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

Что касается угасания, то пока будут читатели, журнал будет только развиваться. Так что подписывайтесь, если еще этого не сделали!

Тяжёло ли брать интервью, легко ли соглашаются люди на такие откровения?

Соглашаются почти все. Хотя некоторые даже не отвечают. Интервью проходят в email-формате, поэтому у интервьюируемого есть время подумать, сформулировать мысль и отправить ответы. К сожалению, не у всех есть достаточно времени и часто ответы задерживаются. Было несколько случаев, когда я думал выпускать журнал без интервью, настолько все затягивалось.

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

Что ждать читателям в новых выпусках, есть ли какие-то планы, идеи?

Пока только один план — это постоянные авторы. Как этого добиться пока не ясно. Если у читателей есть идеи, пожалуйста, поделитесь.

Веб

Регулярно придумываешь и выпускаешь интересные веб-проекты, такие как perlresume, perltuts, sendy? Как появляются идеи и что мотивирует над ними работать? Если ли ещё какие-то замыслы на примете?

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

Из самого свежего хочется закончить сервис по загрузке gps-координат, фотографий и видео с gps-метками с Android-телефона в реальном времени, что-то вроде live-слежения, только кроме трека и текущей позиции на карте показываются комментарии, фотки и прочее. Затем гораздо проще писать отчет о последнем приключении. Плюс возможность работы в оффлайн режиме и загрузки пачки координат когда доезжаешь до кафе с wifi.

Boogie-woogie, Wee, Turnaround и наконец Tu. Каким, по-твоему, должен быть идеальный веб-фреймворк?

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

Ты активно участвовал в разработке Mojolicious. Как ты оказался вовлечён в проект и почему разошлись пути с Себастьяном Риделем? Скучаешь ли по коллегам на канале #mojo?

Это было уже довольно давно. Вначале все казалось возможным, потому что многие идеи рассматривались, реализации принимались. Было довольно весело. Я мог за пару часов слепить что-то прикольное из только что добавленных фич.

К сожалению со временем, мое видение каким должен быть удобный фреймворк стало сильно различаться с мнением Себастьяна. Потом была небольшая драма. Но это все в далеком прошлом.

Какой самый большой недостаток Mojolicious?

Монолитность и "только так и никак иначе". Вообще недостатков, по-моему, довольно много, я о них даже написал статью (статья «Why I chose to build a Plack framework instead of using Mojolicious»прим. ред.). А уж сейчас еще наберется. Очень сильно удивляет его популярность. К счастью, не часто пересекаюсь с его пользователями.

Конференции

Активно посещаешь Perl конференции, выступаешь с докладами и даже организуешь их. В чём драйв от участия в подобных мероприятиях? Можешь вспомнить какой-нибудь интересный или курьёзный случай?

Да, действительно, некоторое время назад я был довольно активен в организации и участии. Есть какой-то драйв, когда собираются люди с общими интересами. Такая себе секта XXI века. Интересно встретиться и пообщаться с людьми, модули которых используешь.

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

Работа

Где сейчас работаешь? Является ли Perl основным инструментом в рабочем процессе?

Работаю сейчас в компании, которая занимается автоматизацией разработки и деплоймента. Perl является главным языком, на нем написано основное приложение. Также есть несколько сайд-проектов. Кроме того, на данный момент много пишу и на Си. Моя первая любовь вернулась :)

Хобби

Известно, что у тебя есть хобби — это велосипеды и участие в велопробегах. Есть ли в планах побить свой рекорд 1000 км за 69 часов?

Да, в этом году в августе проехал 1240 км с лимитом в 90 часов в старейшем веломарафоне Париж-Брест-Париж. Он проводится каждые четыре года уже более ста лет! Что и говорить, люблю я скопления людей, объединенных какой-то одной целью. Когда долго сидишь в помещении за компьютером, хочется выбраться на природу. Плюс, еще отличная физическая и моральная нагрузка. Есть о чем подумать, мозг хорошо разгружается. Это как средство медитации.