Выпуск 23. Январь 2015

Обзор CPAN за декабрь 2014 г. | Содержание

Интервью с Рикардо Сигнесом (Ricardo Signes)

Рикардо Сигнес (Ricardo Signes) — американский Perl-программист, в настоящее время pumpking, ответственный за выпуск релизов perl

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

В детстве у меня в семье был TI-99/4A, современник Commodore 64. Мне было четыре или пять, когда я научился писать программы на BASIC по отгадыванию чисел или по подсчету возраста, если ввести день рождения. В то время я только учился писать, и компьютер тоже был особым пишущим устройством, где пишешь и что-то происходит. Я до сих пор думаю о компьютерах в этом ключе.

Программировал лишь изредка, пока не закончил университет. Мне просто нравилось решать небольшие задачки. Я писал для BBS-серверов на Pascal и C, писал небольшие утилиты для фильтрации USENET и интернета. Оно работало, но кое-как. Я не изучал, как писать качественный профессиональный код, — если согласиться, что этим я занимаюсь сейчас — пока не закончил университет и не получил работу.

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

Первым на памяти редактором был KEDIT, клон XEDIT. Мой отец работал с 3270, часто пользовался XEDIT, а дома был KEDIT. Редактор был странным, но конечно лучше, чем EDIT.COM, поэтому я его и использовал. Позже я переехал на elvis, потому что сидел на Slackware, затем JED, о котором остались самые нежные воспоминания. Помню, что в 1995 году весь софт, написанный на библиотеке S-Lang, выглядел впечатляюще. Все мои сегодняшние схемы подстветки наследуются из JED и slrn.

Сейчас я использую Vim. Я не Vim-фанатик или даже не эксперт, но я кое-что знаю и написал достаточно Vim-скриптов, чтобы больше не хотеть этого делать. Мне нравится пробовать новые редакторы, но сомневаюсь, что я его сменю когда-нибудь снова.

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

Когда я только пересел на Slackware в 1995 году, мне нужно было написать несколько небольших программ для автоматизации таких задач как объединение USENET-постов и их декодирования. Я написал (ужасный) Си-код, и, наверное, смог бы закончить утилиты, но подозревал, что это будет мучительно. В Slackware было полно Perl-кода, и я решил выучить Perl.

Но это был Perl 4. Slackware, насколько я помню, очень медленно переходило на Perl 5. В конце концов он был доступен, но нужно было ставить отдельный пакет, указывающий на /usr/bin/perl5. Меня это не сильно волновало. Perl 4 мог делать все! И мне было тогда невдомек, зачем нужны модули и ссылки.

Я не начинал учить Perl 5 до 2001 года. У меня была первая полноценная работа, и я самостоятельно писал на PHP 4. Все отлично работало, но мне было понятно, что язык не помогает мне писать софт, который я смогу поддерживать длительное время. Мне нужно было что-то дисциплинирующее, и мне досталась в наследство книга Camelbook. Я ее прочел, переписал все на Perl 5 и никогда об этом не пожалел.

Наверное, я единственный человек, который начал использовать Perl потому, что он дисциплинирует.

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

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

Есть много языков, похожих на Perl: PHP, Python, Ruby, JavaScript. Конечно, больше всего мне нравится Perl. Люди переоценивают разницу между ними.

В прошлом году я серьезно занялся Forth. В прошлом я пытался учить ассемблер и всегда его ненавидел. Forth мне показался ассемблером, который я всегда хотел. Он был простой, прямой, близкий к машине и укладывался у меня в голове. На конференциях я, бывает, убеждаю людей больше писать на Forth.

Мне действительно нравится Smalltalk (язык, не его странно работающее окружение), и мне нравится решать небольшие задачки на Prolog для разминки. Хотелось бы найти причины, чтобы больше писать на языке Io.

Я с удовольствием вспоминаю все языки, на которых по разным причинам когда-либо доводилось писать. Кроме Visual Basic 5.

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

Есть объектно-ориентированные языки, функциональные языки, логические языки и языки других парадигм. Парадигма же Perl — ориентированность на результат. Perl это рабочий язык. Если работа будет выполнена один раз, можно набросать нечто монстроподобное и никогда об этом не говорить. Если работа должна выполняться каждый день в течение десяти лет, можно написать красивый надежный код и быть уверенным, что программа будет работать на будущих версиях Perl. Это не свойство языка, но это принцип по которому он эволюционирует с течением времени. Мы стараемся помочь вам сделать работу, никак не влияя на то, что уже работает.

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

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

Многозадачность. Действительно, это одна из самых важных особенностей языков настоящего. Очевидно, что множество программ, которые мы пишем, могут быть гибче и производительней, если бы были спроектированы с акцентом на многозадачность. Perl 5 не ужасен в многозадачности. Есть множество фреймворков для разных видов многозадачности. Это частая практика у современных языков.

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

Почему так много модулей? Когда это все закончится?

Разве это уже не закончилось? Мне страшно посмотреть на график своей активности!

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

Уже некоторое время я чувствую, что у меня достаточно утилит. Пока я не столкнусь с какими-то странными задачами, я буду выкладывать модули небыстро и стабильно. Но опять же, у меня есть список идей, которые бы хотелось реализовать: замена URI.pm, Mason-подобный шаблонизатор, zasm-компилятор…

Какая твоя текущая роль в разработке perl?

Я «pumpking», что-то вроде «временный великодушный диктатор». Эта должность переходит от человека к человеку. Со своей стороны я стараюсь, чтобы список рассылки perl5-porters не стагнировал и пинаю тогда, когда нужно запустить остановившийся процесс. Так же я пытался укрепить цивилизованное поведение в perl5-porters. Не хочу работать в условиях грубости; предполагаю, что и другие люди тоже.

Что ожидать от 5.22?

На данный момент 5.22 сильно отличается от 5.20. В 5.20 мы добавили множество захватывающих фишек, на которые можно показать пальцем и сказать: «Круто, я хочу это использовать!». 5.22 в основном это улучшение производительности — и их очень много! Вызовы методов стали быстрее, глубокое разыменование стало быстрее, есть несколько других оптимизаций. Конечно, есть также исправленные ошибки и другие хорошие небольшие фишки.

Если бы мне нужно было выбрать самое интересное, я бы выбрал новые экспериментальные псевдонимы ссылок:

\$x = \$y

…и обе будут одинаковые переменные, будучи псевдонимами друг друга. Это можно использовать и в циклах:

my @input = ( [ 1, 2, 3 ], [ 8, 9, 10 ] );
for \my $x (\ (@input) ) {
  $x++;
}

…и получить список ([2,3],[9,10]). Другими словами, можно получить такое же поведение, как и при использовании $_ без использования этой переменной.

Какое сейчас направление в разработке perl самое главное?

Не думаю, что было бы правильным утверждать, что таковое есть. Есть несколько людей, который работают над perl в зависимости от своих собственных интересов. Я пытаюсь поддерживать то, что будет полезно и отговаривать от редких изменений, которые, по-моему, никогда не будут внедрены.

Безусловно, есть определенное количество людей, работающих над увеличением производительности, но есть также и много других областей разработки: улучшение генерации кода, чисел с плавающей запятой, оптимизация памяти и даже возобновление совместимости с EBCDIC (кодировка — прим. перев.). Мое видение в том, что если больше людей работают и делятся своей работой и планами, то все будет идти хорошо. Пытаться направлять людей туда, где им не нравится, никак не поможет ни Perl, ни тому как сейчас обстоят дела.

Есть некоторые, которые говорят, что обратная совместимость уже не в приоритете. Что можешь ответить на это?

Это явно не наш случай. Когда вопросы по изменению языка обсуждаются в perl5-porters, всегда поднимается вопрос об обратной совместимости, и это весомый фактор при принятии решения о том, что будет хорошо для Perl. Да и как я уже упоминал, мы не хотим ломать ваш существующий код, который работает.

Разные люди хотят разного размера изменений, и они хотят поменять разные части языка, поэтому часто возникают споры. Но тем не менее, и это должно быть явно видно из наблюдений за процессом в perl5-porters, обратная совместимость в приоритете. В прошлом году мы решили явно указывать причины некоторых редких нарушений обратной совместимости, которые войдут в документ «направление perl» до 5.22.

Есть ли что-нибудь из внутренней разработки perl, о чем ты хотел бы, чтобы узнали пользователя языка?

Это очень интересно! Еще задолго до того, как я начал принимать участие в разработке perl, я читал рассылку p5p для удовольствия. Много я удалял не читая, так как мне не было интересно, но очень многое было захватывающим. Я познакомился с различными странными хитростями языка, некоторые из которых были намеренными. У меня появилось понимание причин разных приоритетов, назначенных разных частям языка разными людьми. Я узнал много об операционных системах, обмене данными, алгоритмах, структурах данных и динамике социальных групп. Кроме того, просто круто наблюдать, как умные люди работают вместе.

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

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

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

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

Я работаю в Pobox.com уже около десяти лет. Мы предоставляем сервисы по использованию вашего email-адреса, и мы занимаемся этим уже двадцать лет, что меня сильно потрясает, учитывая продолжительность жизни других сервисов, которые я пытался использовать.

Наш внутренний код практически полностью написан на Perl. Есть немного Ruby, Python, C и PHP, и, конечно же, JavaScript, но где-то 95% своего времени я пишу на Perl. Мы пытаемся выкладывать на GitHub или CPAN наиболее полезный для общих задач код, поэтому большая часть моего кода на CPAN была написана для работы.

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

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

Для меня Perl идеален. Мне кажется, что таким он будет и для многих других людей. С другой стороны, если бы я увидел ребенка, решающего задачи тем способом, которым он научился в «JavaScript для детей», я не буду ему говорить: «Тебе стоило написать это на Perl».

Для тех, кто хочет стать серьезным программистом, я хочу порекомендовать Forth! Дайте-ка я немного расскажу вам о нем…

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

Поедешь на FOSDEM?

Конечно! Я слышал много позитивного о FOSDEM, и всегда хотел поехать. В этом году я достаточно продвинулся с реализацией своей идеи и купил билет! Я буду в Perl-аудитории, но также и в других местах, надеюсь. Также предвкушаю дегустацию всего, что может предложить Брюссель, а также встречу со многими людьми, которые никогда не были на конференциях в Штатах.

Чем увлекаешься?

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

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

Удалось ли тебе наконец восстановить все резервные копии?

Ух! Это до сих пор кусается! Наверное это о моей миграции музыки в июне. Самой большой проблемой было то, что я удалил копии, которые думал, что восстановил. В итоге я потерял огромное количество файлов. Мне удалось восстановить большинство, но теперь у меня нет треков всех моих любимых альбомов. Альбомы у меня не пропали целиком, поэтому мне тяжело заставить себя спуститься в подвал, распаковать CD-диски и снова их «рипнуть». На сегодняшний день отсутствуют 1598 файлов. Я должен что-то сделать. В большинстве случаев это «что-то» значит «слушать больше Spotify».

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


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

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