Выпуск 34. Декабрь 2015
← Обзор CPAN за ноябрь 2015 г. | СодержаниеИнтервью с Дмитрием Шаматриным
Дмитрий Шаматрин — программист, с недавнего времени организатор Perl-конференций
Как и когда научился программировать?
Во всей этой кухне я относительно недавно. Первые попытки были в школе, это был 2005-2006 год, и даже что-то получалось.
Хорошо помню, что Паскаль мне тогда очень не понравился. Но серьезно пригодилось программирование в процессе написания диплома в универе. Если кто не в курсе, по образованию я химик.
Так вот, есть такой большой и страшный аппарат — масс-спектрометр. Он определяет состав вещества, разбивая молекулу на фрагментарные ионы, количество которых в единицу времени регистрируется масс-анализатором. По ним определяется состав. И вот если молекула большая, ионов будет много, и они будут разные. Их надо опознать и посчитать. Руками это делать долго и не интересно, особенно, если таких спектров несколько. Вот пришлось писать скрипт. Выбрал Perl, так как уже имел минимальный опыт с ним и примерно понимал, что да как.
Какой редактор используешь?
Emacs. Если/когда нет emacs, могу использовать vim. Тут уже дело привычки. Так сложилось, в основном, исторически. Долгое время под языки, с которыми я работаю, не было вменяемых IDE. А потом уже просто привык, и еще раз переучиваться ради сиюминутного профита смысла для себя не вижу.
Как и когда познакомился с Perl?
Тут хочу сказать, что винда мне особо никогда не нравилась, да и сейчас не нравится. В 2006-2013 году моей основной системой был линукс, потом мак. Так вот.
С Perl я познакомился примерно в 2007 году. У нас в городе была локальная сеть, подключение ВПН в которой было не самой тривиальной задачей. Провайдеры тогда особо не заморачивались с поддержкой пользователей на линуксе. Пришлось всю автоматизацию подключения сделать на Perl.
С какими другими языками интересно работать?
Erlang, Haskell, Lua.
Что, по-твоему, является самым большим преимуществом Perl?
Не могу выделить одно преимущество, поэтому вот тот список, благодаря которому я еще пишу на Perl.
- Нечеловеческая гибкость.
- Возможность решать проблемы, как правило, малой кровью.
- Быстрая разработка.
- Вменяемое событийное программирование.
- Ссылочная механика.
- Здравая и продуманная система модулей/библиотек.
- Простота создания своих модулей (привет
ExtUtils::MakeMaker
).
Что, по-твоему, является самой важной особенностью языков будущего?
Перестать опускать планку порога вхождения в язык. Я прекрасно понимаю, что рынку не хватает программистов. Также я понимаю, что всем хочется программировать. Однако, это не повод упрощать инструменты до уровня, понятного и дебилу. Сложность перла практически оптимальная. По моему мнению, самое последнее скотство это жертвовать функциональностью во имя снижения порога вхождения. Целевая аудитория, как правило, не воспользуется, а вот урезанная функциональность печалит.
Что думаешь о Perl 6?
Отличный язык. Жаль, что невовремя.
Было бы приятно, если бы взлетело, но я не понимаю двух вещей. Зачем это назвали Perl и сколько надо затратить сил и средств, чтобы вывести его сообщество хотя-бы на уровень Perl 5. Я думаю, что использовав другое имя для языка шансов взлететь было бы сильно больше.
Что лучше: работать на аутсорс или на продукт?
Тут нет однозначного ответа. Мне интереснее продукт, например, хотя, вроде как, по статистике, аутсорс стабильнее. Короче. Аутсорс — меньше рисков, низкая вероятность большого профита в будущем. Продукт — риски, которые, в основном, от тебя не зависят. Ну, например, бабло закончилось. В случае успеха можно получить некислую материальную выгоду.
Как жить программисту, если кажется, что вокруг одни дураки?
Понять и простить. Правило 95% непобедимо.
Если же вопрос стоит о том, что делать с коллегами по цеху, которые по тем или иным причинам сейчас знают меньше тебя, то ответ прост и он единственно верный: обучать других и обучаться самому. Я, например, если ко мне обращаются с вопросами, стараюсь по мере сил помогать всем. Если люди учиться не хотят, то все плохо, и надо что-то менять. Вообще, чем выше суммарный уровень квалификации в хорошо слаженной команде, тем проще жить всем.
Лучше специализация или везде по чуть-чуть?
А это смотря что хочется делать и что делаешь. Если ты занимаешь позицию техлида и решаешь проблемы в определенном и ограниченном спектре задач (например, в телекоме), то тут сильно лучше иметь узкую специализацию. Если же твоя задача рулить разработкой большого проекта, то специализация ок, но куда важнее быстро разобраться в текущей задаче, а это требует везде по чуть-чуть. Особенно, это касается тех случаев, когда необходимо принимать серьезные технические решения, от которых много чего зависит или будет зависеть.
Так все-таки Erlang или Haskell?
Они решают примерно подобные задачи.
Эрланг позволяет довольно быстро построить приложение, которое будет устойчиво к рантайм-ошибкам, которых, как все мы знаем, предостаточно всегда. Причем, 90% этих ошибок случается хрен пойми почему. К тому же, будучи функциональным языком, он позволяет делегировать некоторые сложные вещи виртуальной машине и сосредоточиться на реализации. Иммутабельные переменные, хорошая многопоточность. Ну и OTP. Все вместе это дает реально хороший, но при этом несложный язык, который очень хорошо работает под нагрузкой, редко падает и довольно неплохо масштабируется. Ну, если просто и на чистоту, то эрланг правильно использует раззвиздяйство программиста, культивируя три основные добродетели. Да и очень идеологически близок к перлу.
Хаскель позволяет делать практически то же самое, но при этом сильно сложнее и дороже, что требует больше ресурсов. Ну и сложная система типов поначалу будет сильно взрывать мозг. Мой совет — учите оба :D Потому как понимание хаскеля, как чистого функционального языка, в конечном итоге, позволяет намного лучше писать на эрланге.
Сколько времени проводишь за написанием Perl-кода?
Когда как. Обычно несколько часов в день.
Стоит ли советовать молодым программистам учить сейчас Perl?
Стоит. То, что перл сейчас каждый год закапывают, а код на нем нечитаем и плох, есть следствие следующего забавного парадокса: в то время, когда появился перл, не было ничего, с чем бы он серьезно конкурировал в нише, например, сайтостроения. К тому же, культуры программирования, как таковой, тоже, в широких массах, особо не было. Соответственно, весь тот код, за которые клеймят Perl, это не вина языка. Если бы в то же время появился, например, питон или руби, сейчас бы слава worn-языка была бы у одного из них. Просто не в то время. Почему стоит учить? Да потому, что он достаточно низкоуровневый, чтобы разобраться, как работают файловые дескрипторы, сокеты, счетчик ссылок. И он достаточно высокоуровневый, чтобы разобраться с концепциями в мире современного программирования. Ну и имеет очень большую базу библиотек, да.
Вопросы от читателей
Будут еще хакатоны и конференции?
Будут и много. Скорее всего что-то проведем летом. Есть в планах одесская конференция по функциональному программированию.
Какой веб-фреймворк сейчас стоит использовать и почему?
Мне в последнее время очень нравится перловый Catalyst. Почему? Удобный, много умеет, под него написано очень много модулей. Ну и еще очень немаловажный момент — адекватный мейнтейнер. Минусы — громоздкий.
← Обзор CPAN за ноябрь 2015 г. | Содержание