Выпуск 5. Июль 2013

Обзор CPAN за июнь 2013 г. | Содержание | Perl Quiz

Интервью с брайаном ди фоем про будущее. Часть 1

25 и 26 мая в Варшаве прошел первый польский перл-воркшоп. На него приехал и брайан ди фой (brian d foy), который, по его словам, всегда старается побывать на мероприятии в городе, где он еще не был. Брайан уделил нашему журналу час и ответил на вопросы о том, каким он видит будущее: будущее книг, перла, его синтаксиса и сообщества (публикуется с сокращениями).

Будущее книг

— Несколько дней назад в своем блоге вы упомянули о том, что издательство O’Reilly переходит на новую издательскую платформу. Что это такое?

— Да. Я пользуюсь этой новой платформой для книги Mastering Perl. Я не все еще там понимаю, я только учусь. Они отказались от Subversion в пользу Git, что очень хорошо, потому что я все равно пользуюсь гитом и мне надо было брать оттуда свои тексты и коммитить к ним в Subversion. Сейчас этот шаг уже не нужен. А еще теперь они могут без труда взять мои файлы и опубликовать их на сайте, чтобы люди видели, что сейчас происходит. Поскольку я делаю это уже довольно давно, вы прямо сейчас можете следить за развитием Mastering Perl. В случае с Mastering Perl нас спонсирует OSCON, поэтому ее можно читать бесплатно. Мне кажется, что возможность посмотреть книгу до публикации очень важна.

С книгой Learning Perl все просто, мы все более или менее знаем, что там должно быть. Никто не скажет мне: «О, а вот есть еще такая штука, вы знаете о ней?», то есть существуют массивы, скаляры и хеши, все просто. А вот для Mastering Perl кто-то может спросить, знаком ли я с каким-нибудь странным эзотерическим случаем в какой-то из тем. Например, что есть сериализатор Sereal, который может заменить Storable. Это действительно сложный момент, потому что поскольку я уже пользуюсь перлом так давно и привык делать что-то определенным способом, то мне не всегда интересно, что появилось нового: старое вроде работает и способно решить мои задачи.

Так вот, теперь, когда содержимое Mastering Perl находится в репозитории, то как только я в него коммичу, автоматически генерируются HTML-страницы, которые выглядят в стиле O’Reilly; люди могут их читать и комментировать, а я могу учесть замечания в книге, и уже на следующий день это будет доступно.

— Вы ожидаете, что люди сами захотят коммитить в ваш репозиторий с книгой?

— Да нет, наверное и нет такого доступа к гиту. Но даже если бы он был, я могу представить, что найдутся люди, да я и знаю нескольких таких, кто захочет сделать pull request, но это будет весьма забавно. Проблема с коммитами или попытками пропатчить книгу в том, что какие-то изменения просто не смогут сработать. Патчить код очень легко. А с книгой я могу решить, что мне не нравится что-то в таком-то разделе или я захочу полностью сместить фокус одной из глав и полностью изменю порядок изложения и допишу новый контент.

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

Я получаю большой объем обратной связи и могу сказать: лучше просто напишите мне письмо. Даже если и с патчем в итоге получится разобраться, то вряд ли O’Reilly дадут доступ к гиту.

— Недавно вы сообщили, что впервые подписали электронную книгу. Какие чувства это вызывает?

— Да. Это интересно, на прошлой неделе я сделал такое впервые. Кто-то попросил меня подписать PDF, и я ответил: «OK, подпишу». Приложение Preview на маке может сделать так, что можно оставить подпись на обычной бумаге, показать ее в камеру и разместить ее в нужном месте в PDF. Это замечательно и в итоге позволяет отказаться от бумаги. Знаете, банки, например, требуют все распечатать, потом подписать, отсканировать и отправить обратно по электронной почте или по факсу.

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

— А вообще, вы считаете продажу электронных книг вместо бумажных приемлемой ситуацией?

— Это интересный вопрос, «электронные книги против бумажных». Я не знаю, принадлежу ли я к тем, кто любит бумажные книги. У таких книг лучше разрешение. Их можно сложить стопкой или разложить на столе.

Самое интересное, если предлагать электронную и бумажную книги вместе, то это увеличивает продажи. То есть, если сказать, что можно купить, например, бумажный Mastering Perl — и O’Reilly это уже делало в качестве эксперимента, — и за дополнительный доллар получить и электронную версию, то мы получаем намного больше продаж. То есть люди не хотели конкретно электронную или бумажную версию. Им нужна была просто книга.

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

Вот что меня беспокоит: чем больше у нас технологий, тем хуже мы представляем контент. Возьмем фильм на пленке с хорошим разрешением. Из этого мы делаем несколько вариантов. Сейчас есть потоковое видео, но оно может идти с паузами, и удовольствие от просмотра теряется. А потом мы можем попытаться посмотреть то же на айфоне или еще где. Надеюсь, что с книгами этого не произойдет. Мы начали с того, что можно напечатать и с мелких-мелких точек на странице, 1200 точек на дюйм или даже больше. А сейчас мы читаем на устройствах с 72 точками на дюйм. Ну, на ретине побольше, но все равно это далеко от разрешения, доступного на бумаге.

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

— Вы стараетесь обновлять свои книги с выходом новых версий перла. Это для вас хобби, развлечение или тяжелая работа?

— Каждый раз, когда выходит новая версия перла, есть опасение, что предыдущие издания Learning Perl, Intermediate Perl и Programming Perl, которые мы написали, устареют. Сейчас, в компьютерном мире, книга, которая старше трех лет, совершенно неактуальна. Она больше ни для чего не годна.

С Learning Perl все хорошо, потому что по сути там в основном Perl 4. Ну то есть все эти скаляры, массивы и хеши и большая часть стандартной библиотеки. Но ведь добавляются и новые фичи. Последнее издание описывает Perl 5.14, а в Perl 5.16 или 5.18 на самом деле не так много того, без чего нельзя обойтись в этой книге. А вот с Intermediate Perl немного иначе, потому что там многое изменилось. Теперь, например, функции push, pop, shift, и unshift понимают ссылки на массивы и хеши. Операторы могут получить ссылку и выяснить сами: «О, а это ведь хеш, а с ним я умею работать». То же самое произошло с each, который теперь работает с массивом. Так что приходится править такие вещи.

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

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

Поэтому я думаю, что большинство из тех, кто покупает книги, не обращают внимания на конкретную версию перла. Они не смотрят на обложку и не думают, что книгу надо купить, потому что она про новую версию. До сих пор покупают третье, четвертое и пятое издания Learning Perl. Я не знаю, где люди берут эти книги, но они их покупают: я получаю с них пару долларов в квартал.

Книга Programming Perl — совершенно другая история. Эта книга последний раз издалась, вроде, в 2000 году. Десять лет назад, да больше десяти. Переписать последнее четвертое издание заняло около двух лет. Том (Tom Christiansen) проделал значительную работу по обновлению всего, что связано с юникодом. На обложке есть и мое имя, но я делал очень скучную несложную часть в конце книги. Том занимался первой большей частью, которая намного сложнее. И, разумеется, Ларри наблюдал за процессом и говорил, что хочет то-то так-то и так-то.

Было бы неплохо, чтобы эта книга была для каждой большой версии, но постойте, столько там страниц, около 1600? Мы не будем ее обновлять каждый год с каждой новой версией, иначе это превратится в непрекращающуюся работу над книгой, и никого не сделает богатым. При этом людям-то все равно. Я надеюсь, что каждый перл-программист купил Programming Perl. Просто, чтобы книга была на полке. Но, честно говоря, не будь я сам одним из авторов, я бы ее не купил. Я знаю перл, я могу читать документацию, могу посмотреть в онлайне, могу задавать вопросы. Мне не нужна эта огромная книга, разве что подпереть ею дверь или уронить кому-то на ногу.

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

Mastering Perl не обновлялся уже долгое время, но эта книга на самом деле не зависит от версии. Она больше про то, как думать о том, что возможно сделать на перле вообще, а не с конкретной его версией. Думаю, что и книга Effective Perl Programming такая же. Это отличная книга, которая привлекает заслуженное внимание. Когда Джозеф Хол (Joseph Hall) опубликовал эту книгу, мне она казалась лучшей, когда либо написанной про перл. И если сегодня мне потребуется составить список книг, я думаю, что она заняла бы одну из верхних позиций.

Другая книга, которую стоит обновлять, это Perl Cookbook. Было бы очень интересно увидеть, как можно применить к конкретным задачам все новые фичи, которые появились в 5.10.

Будущее smart match

— В 5.10 появился оператор smart match (\~\~), у которого непростая судьба. Что вы о нем думаете, и должен ли он вообще остаться в языке — как есть или измененный?

— Оператор smart match, появившийся в 5.10, — действительно интересный случай. Я думаю, надеюсь, что мы усвоили урок о том, что такие экспериментальные возможности надо помечать экспериментальными. Это и случилось в 5.18.

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

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

Это означает, что мне придется вернуться и обновить Learning Perl, удалив оттуда главу про smart matching. Она появилась с 5.10.1 и, вроде, до сих пор актуальна, но не думаю, что мы можем учить людей тому, что исчезнет через год в 5.20.

— Но в 15-й главе рассказывается еще и про given и when. Их тоже придется исключить?

— Да. (Я удивлен тому, что вы знаете номер главы.) Да, в 15-й главе книги Learning Perl (по крайней мере в 6-м издании, не знаю, поменяются ли главы в будущем) есть и smart match, и given, и when. Работа given была несколько проблематичной, потому что происходили странные вещи с лексической переменной $_, что вызывало много проблем, например, внутри map и grep или внутри given. Но мне кажется это уже исправлено в 5.18, думаю, что given отказался от этой магии с $_ и теперь делает то же, что делают for и foreach.

Так что в этой главе много всего, что придется убрать, если отказаться от оператора smart match. Но given и when без smart match окажутся не намного более мощными, чем просто набор нескольких if.

Во второй части интервью мы поговорим про PM-группы (а брайан в свое время создал первую такую группу) и о том, что он думает про Perl 7.

Андрей Шитов


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

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