Выпуск 15. Май 2014
← Обзор CPAN за апрель 2014 г. | СодержаниеИнтервью с Кристианом Вальде (Christian Walde)
Кристиан Вальде (mithaldu) — немецкий Perl-программист, автор модулей на CPAN, активный участник Perl-сообщества, автор http://perl-tutorial.org.
Когда и как начал программировать?
Вообще это началось очень рано, когда в возрасте восьми лет в 1991 г. мне дали Amiga, и я начал возиться с командным интерфейсом и ARexx. Ничего особенного, но в дальнейшем я многому научился, особенно благодаря игрушкам Clonk и Starsiege: Tribes, обе были написаны на Си-подобном скриптовом языке и были чрезвычайно настраиваемыми. (У Tribes выпускались аддоны, которые позволяли игрокам играть в Тетрис, сидя в это время на холме, ожидая целей.)
Позже в колледже я использовал PHP в своих проектах и также С++ и Bash на курсах. В феврале 2005 г. на случайном IRC-канале меня попросили помочь починить их форум (это было что-то вроде 4chan), потому что они умудрились завалить свою SQL-базу. К счастью, к тому времени я постиг искусство чтения ошибок и поиска их в Гугле. Короче говоря, я копался в своей первой перловой программе и быстро поднял сайт.
В результате этого мне выдали рутовый пароль к той машине, который у меня до сих пор есть, и у меня был под рукой сайт с двадцатью тысячами посетителей в сутки, полностью написанный на Perl и MySQL. Из-за этого сайта и помощи от nrr (http://twitter.com/nrr) на IRC я начал учить Perl. Где-то через три года я написал свою первую Perl-программу, за которую получил деньги (небольшую утилиту для переводов), и еще через год я был нанят на свою первую серьезную работу Perl-разработчиком (группа занималась биоинженерией по анализу и улучшению картофеля).
В кратце: я начал учиться программировать с момента, когда мне подарили первый компьютер и получил большинство знаний за короткий промежуток времени, когда часто пользовался IRC.
Какой редактор используешь?
В основном Komodo IDE. Это мой основной инструмент при работе с Perl, потому как в одном продукте объединены редактор, визуальный отладчик для Perl и других языков (как Visual Studio), PerlTidy, PerlCritic, проверка синтаксиса Perl, отладчик регулярных выражений, менеджер проектов, grep и самое важное, это настройки по умолчанию. Все это возможно и в других редакторах, я видел у многих людей редакторы с похожими возможностями, но для меня Komodo остается единственным выбором, потому что все эти возможности доступны из коробки и не нуждаются в глубокой настройке, только лишь небольшие изменения для удобства.
В дополнение я использую Notepad++, так как он не требует много памяти и процессорного времени, запоминает когда что было открыто, даже если вываливается, и просто предоставляет быструю возможность подправить текст. Между прочим, у него самая лучшая подсветка синтаксиса Perl, и я копирую настройки во все мои Komodo-инсталляции и подстраиваю подсветку для других языков.
С какими другими языками интересно работать?
Мне нравится работать с Javascript, потому как на нем можно написать несколько полезных вещей, и нет лучшего момента, когда я, закончив править очередной JS-файл, наконец могу выкинуть этот отвратительный язык из своей головы.
Кроме этого мне нравится играться с графическим программированием, что включает в себя возню с Си и GLSL. Не думаю, что стоит заострять внимание на Си, но GLSL заслуживает особого внимания, потому что этот язык слегка напоминает Си, но требует особого мышления при написании каждой программы, так как они запускаются на сотне микроядер, и не только параллельно, но и синхронно. Это означает, что ветвления if/else тратят время, вместо сохранения. Это меня радует.
Что, по-твоему, является самым сильным преимуществом Perl?
Если говорить о языке, то это CPAN. Из всех языков это самый высококачественный архив сторонних библиотек, все это благодаря своей экосистеме качественных утилит, которые нещадно выявляют и собирают проблемы модулей для авторов, делая библиотеки как можно лучше.
Если говорить о perl-интерпретаторе, то его самое большое преимущество, насколько я могу судить, это то, что все его возможности реализованы таким способом, что удобно писать простые вещи, когда есть только один интерпретатор, но все же они достаточно низкоуровневые, чтобы можно было с помощью CPAN-модулей делать язык удобным для использования. (Например, Moo, IO::All.)
Что, по-твоему, является наиболее важной особенностью языков будущего?
Человечность и параллелизм.
Perl уже достаточно хорош сам по себе. Это язык, а не калькулятор. Это язык, который можно читать, на котором можно говорить и думать. И не только это, многое приходит интуитивно, если вы знаете английский язык. Думаю, что у языков программирования должно быть больше таких свойств. Разработчики языков должны делать их более простыми для понимания людьми. Среднестатистическими людьми.
Параллелизм это второй момент. Технологии упираются в стену, когда идет речь о производительности процессоров. Стало довольно сложно делать процессоры на одном ядре быстрее. Это означает, что нам нужно научиться распределять задачи одной программы между несколькими ядрами, что означает, что языки должны позволять делать это просто. Я слышал, что это хорошо получается у Go, также и у Java. Однако такие скриптовые языки как Python и Perl сильно отстают и должны догонять.
Что не так с индексами популярности языков? Как это можно исправить?
На самом высоком уровне: они не отвечают на вопрос, который хоть сколько нибудь полезен для людей. Можно задать вопрос “Какой язык самый популярный?”, но почему возникает такой вопрос? Тот, кто его задает, хочет знать, какой язык позволит больше зарабатывать? Стабильно зарабатывать? Какой язык позволит быть на передовой технологического прогресса? Какой язык позволит им быть счастливыми в каждодневной работе? Это вещи, которые волнуют людей, но на эти вопросы не отвечают индексы популярности.
Даже больше того, многие люди не в состоянии правильно прочитать и понять данные индексов популярности. Чтобы смотреть на Google Trends и понимать, что линия, которая идет вниз, все еще может значить, что число пользователей этого языка растет, требует некоторого понимания статистики. Похожим образом, если смотреть на рейтинг TIOBE, нужно понимать, почему языки с названиями, похожими на другие вещи, выигрывают именно из-за метода, который TIOBE применяет для недопущения такого искажения (если говорить прямо: их метод создает другое искажение).
Как их можно исправить? Честно говоря, я не думаю, что это возможно. Люди, которые создают рейтинги, используют их для споров, и их вполне устраивает, что рейтинги неточные и позволяют им доказывать свою точку зрения, или более точно, заставляют людей кликать на их ссылки и увеличивать прибыль от рекламы. Чтобы исправить эти рейтинги, надо изменить сущности, которые используются для их составления, и на практике это будет похоже на борьбу с ветряными мельницами.
Лучшее, что я могу сказать, когда люди озабочены такими вещами, так это что и Getty сказал в своем выступлении (https://www.youtube.com/watch?v=VFJ672tpRG0): Тратьте свое время не на бессмысленные вещи, а на вещи, которые вы хотите использовать, и которые захотят использовать другие.
Почему до сих пор используешь Win32 и как последнее время Perl себя чувствует на этой платформе?
Как я уже говорил насчет редакторов: настройки по умолчанию. И — Amiga.
Еще ребенком я начал с компьютерной платформы, которая предоставляла практически все то же, что и современная Windows (http://www.gregdonner.org/workbench/images/wb_13.gif). В отличие от людей, которые начинали на *nix или DOS, у меня в качестве устройств ввода были и клавиатура, и мышь. И до сих пор я предпочитаю окружения, где все мои задачи можно выполнить с помощью и клавиатуры и мыши, позволяя мне делать работу наиболее удобным для меня способом.
Если говорить про настройки по умолчанию: Windows, начиная с Windows 2000, чрезвычайно мало изменилась в плане интерфейса. Если цвета и поменялись, и машины стали мощнее, очень мало изменилось в способах использования. Это означает, что многие разработчики ПО следуют тем же негласным соглашениям. В дополнение, благодаря некоторой извращенности человеческого ума, у закрытого ПО лучше настройки по умолчанию. *nix-разработчики обычно говорят: “Тебе это нужно? Пожалуйста, реализовывай”. Таким образом спасаясь от подгонки программы под нужды других, в то время как у разработчиков закрытого софта нет такой возможности.
Если говорить о том, как Perl чувствует себя на Windows: совершенно отлично. Есть множество людей, использующих *nix-платформы, у которых очень мало опыта работы с Windows или с Perl на Windows, но они с охотой распространяют свои предрассудки как факты. На практике, однако, почти все CPAN-модули работают на Windows, и часто поломки случаются, когда кто-то забывает открывать потоки данных в бинарном режиме. На сегодняшний день все дистрибутивы Perl для Windows поставляются со своим компилятором, существенно упрощая установку XS-модулей, и обычно имеют в своем наборе некоторые сложные в установке модули. С ActivePerl, Strawberry Perl и DWIMPerl есть возможность выбрать Perl для корпоративной среды, для базовой поставки Perl и для тех, кто хочет иметь практически все модули из коробки.
Почему ты начал сайт perl-tutorial.org? Какова его главная задача, для чего он создавался?
Летом 2011 года первой ссылкой в выдаче на запрос “perl tutorial” была ссылка на урок для Perl 4. Остальные результаты были подобного качества. Это означало, что люди, которые учили Perl, имели высокие шансы учить устаревший Perl и упускали из виду все те позитивные изменения, которые произошли с Perl с 2000 года.
Однако правильным решением не было написать новый урок. Мы оказались в такой ситуации потому, что Perl уже давно существует, и старые уроки принимались поисковиками лучше, чем современные. http://perl-tutorial.org решает эту проблему будучи публичной wiki-страничкой, которая следит за уроками и поднимает наиболее новые наверх. Таким образом, через десять лет кто-то кликнув на самую верхнюю ссылку не попадет на Perl 5.12.
Играешь ли ты какую-то роль в организации немецких Perl-воркшопов?
Очень несущественную. Здесь в Ганновере у нас очень активная локальная Perl-группа (которая организовалась путем поиска Perl-разработчиков из Ганновера на YAPC::EU 2012), и многие были воодушевлены всем тем, что было в Берлине в 2013 году и поэтому решили организовать следующий воркшоп в Ганновере. Другие люди из группы выполнили львиную долю работы как то поиск места и с помощью Frankfurt.pm организовали всю бумажную работу и составление расписания, в то время как я занимался мелочами, например, помощью уже на месте проведения, или спонсированием 102 плюшевых верблюдов для раздачи посетителям.
Где сейчас работаешь? Столько времени проводишь за написанием Perl-кода?
Последние два с половиной года я работаю в Profihost.com здесь в Ганновере, в основном пишу код для бэкенда их сайта и помогаю другим разработчикам в компании, пока они учат Perl. Недавно я начал заниматься фрилансом, все также работаю на Profihost, но и ищу другую работу для интереса.
Это описывает всю оплачиваемую работу. Все остальное время я трачу на открытые проекты или исправляю некоторые вещи на CPAN, который ломаются на моем тестовом сервере, или реализую новые модули, которые хочу использовать, как, например, недавние улучшения системы ввода-вывода в IO::All. Также я немного провожу времени за собствеными личными проектами, такими как 3d-визуализатор для Dwarf Fortress (https://github.com/wchristian/lifevis) ( https://dl.dropboxusercontent.com/u/10190786/DF/perl%202012-06-12%2003-07-39-88.jpg https://dl.dropboxusercontent.com/u/10190786/DF/perl%202012-06-12%2003-08-30-52.jpg ), OpenGL-шейдер (https://github.com/wchristian/perl_shader_toy) (который может создавать что-нибудь наподобие https://dl.dropboxusercontent.com/u/10190786/your_perl_on_drugs.avi) или новый проект https://github.com/wchristian/Microidium астероидный мультиплеер, похожий на Luftrausers; что позволяет мне поработать с SDL и написать фреймворк, который смогут использовать другие для написания игр.
Короче говоря, практически ВСЕ свое время я провожу с Perl.
Стоит ли советовать молодым программистам учить сейчас Perl?
Конечно. Даже если они не будут использовать Perl в своей дальнейшей жизни, будь-то по собственному желанию, или из-за обстоятельств, у них будет понимание принципов, которыми не обладает ни один язык программирования, особенно если они будут учить Modern Perl.
Интересно посещать Perl-воркшопы и конференции?
Очень. Даже если я ничего нового не узнаю из докладов (а я узнаю), даже если я не познакомлюсь с новым людьми (я знакомлюсь), даже если я не встречу новичков, которых я могу чему-то научить (и я учу), даже если вечера в пабах не слишком веселые (а они веселые), я всегда возвращаюсь домой с кучей заметок о том, что можно сделать, на что стоит посмотреть, и что особенно важно — с огромной мотивацией что либо делать. Нет ничего более мотивирующего для написания кода, чем проведение выходных на конференции или воркшопе.
Какое пиво наиболее подходит для сближения Perl-разработчиков?
Без всяких сомнений — бельгийское! Я из Германии, которая известна как страна пива, но, честно говоря, люди делают здесь скучную горькую воду. Я ненавидел пиво, пока не познакомился с бельгийским и понял впоследствии, что оно отлично подходит для социальных встреч, так как оно может удовлетворить любой вкус. Даже если в вашей группе есть кто-то, кто обычно не пьет, их скорее всего заинтересует практически безалкогольное фруктовое пиво; для финнов или других сильнопьющих, есть 10% Gulden Draak 9000. Между ними есть множество сортов на любой вкус, включая Gueuze, которое кислое, а не горькое.
Несмотря на все вышесказанное, если такого пива нет, британская палитра сидра тоже вполне подойдет.
← Обзор CPAN за апрель 2014 г. | Содержание