Журнал LinuxFormat - перейти на главную

LXF74-75:В ожидании Ларри

Материал из Linuxformat
Перейти к: навигация, поиск
Файл:LXF74-75-Larry-1.jpg
Пол демонстрирует смертельный захват, который он собирается применить, если Perl 6 не будет готов в ближайшее время.
Файл:LXF74-75-Larry-2.jpg
Программа номер 6: Пол ни на минуту не прекращает сурово допрашивать Ларри…
Файл:LXF74-75-Larry-3.jpg
Эти Уоллы просто без ума от своих узорчиков… (Слева направо) Льюис, Арон, Женева, Глория и Ларри.

Perl 6 разрабатывается уже несколько лет, и кажется, выпуска мы дождемся еще не скоро. Пол Хадсон (Paul Hudson) загнал Ларри Уолла (Larry Wall) в угол и спросил его, сколько это может продолжаться…

Что требуется для разработки языка программирования? Прежде всего, умение писать программы. Быть может, понимание лингвистики. Или хорошее владение «подстрекативностью» и «манипулячеством»?

Столь экзотические термины фигурируют в лексиконе нашего сегодняшнего героя, Ларри Уолла. Который, кстати, разрабатывал программы с открытыми исходными кодами еще до того, как появилось само понятие «Open Source». Однако работа над его последним проектом (речь, конечно, идет о Perl 6), кажется, никогда не завершится. Гвидо ван Россум (Guido van Rossum), создатель языка Python, уже нарек релиз Perl 6 «тяжким крестом Perl». И правда, команда Уолла планирует серьезные перемены в языке. Мы встретились с Ларри и его семьей, чтобы разобраться в причинах задержки и понять, чего можно ожидать от Perl 6. И в конце концов он все-таки открыл нам дату выпуска шестой версии Perl…

LXF: Организация Perl Foundation финансировала некоторых разработчиков Perl, выделяя им гранты на годовую или полугодовую работу, а кое-кто — включая Вас — написал несколько отличных книг о Perl для издательства O’Reilly. Как Вы считаете, это достаточный вклад в развитие Perl?
ЛУ: Проблема в том, что разработка Perl 6 — это в первую очередь большая исследовательская работа, а финансовый климат в последние несколько лет не шибко способствовал подобным исследованиям. Никто не хочет выкраивать на них деньги из достаточно жесткого бюджета. Я сам фактически был безработным около пяти лет. Денег никогда не бывает достаточно.

LXF: Я так понимаю, что когда Вы занимаетесь консультированием, Вы не занимаетесь разработкой Perl 6, так же как и основной разработчик, Демиан Конвей (Damian Conway). Эта работа ведь отдаляет нас от долгожданного релиза?
ЛУ: Да, и я, и Демиан занимаемся консультациями, чтобы хоть как-то сводить концы с концами. И это действительно мешает разработке Perl 6. Мой участок работы — эмуляция Perl 5 на Perl 6, но последнее время мне некогда было этим заниматься. Солидную помощь по развитию инфраструктуры мы получили от Perl Foundation и издательства O’Reilly. O’Reilly, например, обеспечивает наши еженедельные телеконференции.

LXF: Вы покинули O’Reilly после краха дот-комов, когда люди перестали покупать ваши книги?
ЛУ: Да, у O’Reilly тогда были серьезные проблемы, продажи падали - еще до теракта 11 сентября, но теракт здорово ухудшил ситуацию. Я понимал, что был тогда одним из самых бесполезных сотрудников O’Reilly, поэтому ничуть не удивился своему увольнению. Иногда люди спрашивают у меня: «Вы не держите зла на Тима О’Рейли за то, что он уволил вас?», на что я отвечаю «Нет, вы не понимаете». Работая в издательстве, я получал зарплату и занимался тем, что мне нравится. По существу, он представил мне на эти годы возможность обучения, я ему очень благодарен, и как я могу сердиться на него? Мы с Тимом в очень хороших отношениях.

LXF: Все эти события происходили около пяти лет назад, как раз когда Вы начали работу над Perl 6?
ЛУ: Я принялся за Perl 6 за несколько месяцев до того, но мое расставание с O’Reilly тут ни при чем.

LXF: Тем не менее работа над Perl 6 замедлилась?
ЛУ: Да, но мы были терпеливы — проектирование требовало много времени. В индустрии программного обеспечения есть хорошее высказывание: «Хороший. Быстрый. Дешевый. Любой продукт может обладать только двумя из этих трех качеств». Наш проект — с открытым исходным кодом, он «дешевый» по определению. Высказывание, значит, упростилось до «Либо хороший, либо быстрый. Выбирайте». Мы выбрали «хороший», поэтому быстрая разработка исключалась. Наш неофициальный девиз - «Perl 6: синдром второй версии в хорошем смысле». ["Синдром второй версии" — это ситуация, когда разработчики программного продукта из кожи вон лезут, чтоб версия 2.0 намного превзошла версию 1.0, а в итоге просто нашпиговывают ее избыточными функциями, которые почти никому не нужны.] Единственный способ преодолеть этот синдром — потратить больше времени на обдумывание и учесть эффекты второго и третьего порядков. Еще одно правило — «хорошо сделать времени нет, есть время только угробить» — мы тоже решили побороть: сознательно потратили время на плохую работу, а потом угробили ее, чтобы сделать все правильно с самого начала, все тщательно продумать, и только после этого выпустить Perl 6 на рынок. Наша цель — оставить все существующие скриптовые языки далеко позади. Вот какие у нас планы. Вроде они работают, хотя мы, признаться, не ожидали, что начальная фаза разработки займет целых 5 лет.

LXF: Так это только начальная фаза?!
ЛУ: Да, на данный момент мы завершили 80 % проектирования. Сейчас работаем над остальными 80 %!

LXF: Касательно «синдрома второй версии»: мудрые люди утверждают, что при разработке крупного программного продукта одна из версий обязательно отправляется в мусорную корзину. Вы уверены, что Perl 6 не окажется неудачной версией?
ЛУ: Ну, вообще-то мы надеемся, что «неудачной версией» был Perl 5; потому что я проектировал и разрабатывал его практически в одиночку. То есть эта версия ограничена моим видением того, каким должен быть язык программирования. Конечно, привлечение большего числа разработчиков способствует появлению «разбухшей версии», но зато помогает более широкому видению предмета. Чтобы не потерять это преимущество, мы решились реструктурировать переработку Perl 6, но не бросать на проект дополнительных программистов просто потому, что время поджимает. Мы в этом смысле никогда не опоздаем: продукт будет выпущен только при полной готовности. Мы просто стараемся все делать правильно, а когда видим место, где чтото идет не так — сразу его переделываем. Наша политика опирается на простой принцип: «Давайте будем здоровыми консерваторами и не будем хвататься за такие вещи, в будущем которых мы не уверены, однако предусмотрим возможность развития в другом направлении». В общем, мы не намерены сожалеть о потраченном зря времени.

LXF: Тогда Вы должны быть жестким…
ЛУ: На данном этапе, наш проект охлаждается. Не замораживается, а охлаждается, чтобы стать прочнее. То есть иногда наши исполнители останавливаются и говорят: «Работает отлично, нам нравится эта часть, но мы не знаем, как ее грамотно реализовать». И мы им отвечаем: «Ладно, тогда упростим там-то и тамто». А в других случаях мы, наоборот, что-то усложняем, чтобы в конечном итоге все стало проще. Множество подобных обсуждений проходит прямо сейчас. Создается ощущение, что вся интересная работа закончена, и осталась только нудная рутина, однако мы пригласили людей, которым такая рутина, похоже, доставляет удовольствие. Я думаю, это хороший признак.

LXF: Один человек недавно сказал мне — по-моему, это был Ваш исполнительный секретарь: «У Ларри не все хорошо со временем и датами, это легко видеть на примере Perl 6». Думали ли Вы пять лет назад, что до сих пор будете разрабатывать эту версию Perl? Может быть, Вы надеялись управиться к 2003-му году?
ЛУ: Выпуская Perl 5, мы думали о том, что получим штук 20 запросов с советами, как исправить Perl 5. Оказалось, что их в 15 раз больше. Через пару месяцев стало ясно, что переделок будет либо гораздо меньше, либо гораздо больше, чем мы рассчитывали, и мы приняли решение заняться большой перестройкой. Я просто на ушах стоял, пытаясь переварить полученные 361 замечание. ГЛОРИЯ УОЛЛ (Gloria Wall): Ты на несколько месяцев был буквально парализован.
ЛУ: Но я метался в поисках решения. Причем каждый из авторов подобных запросов предлагал исправить что-то свое, а некоторые предложения были противоречивы или несовместимы. Никто не мог представить Perl 6 в целом, все сфокусировались на каких-то частностях. Мне пришлось изобретать способы разгрести все эти запросы. В конечном итоге я их классифицировал по принципу, изложенному в моей [ставшей классической] книге о Perl: от мелкого к крупному. Я осознал, что описание языка и его перестройка требуют одинакового порядка действий. Пришлось немало потрудиться, но проект в общих чертах следовал данному принципу. ГУ: К тому же Ларри не ожидал, что заболеет. Год был из проекта вынут.
ЛУ: Да, несколько лет назад мне сделали две операции на желудке. Две, потому что первая не удалась. То есть опухоль-то мне удалили, но я не мог ни пить, ни есть почти шесть недель. Меня кормили через вену. Спустя два месяца после второй операции, я вернулся к работе, но не сказал бы, что чувствовал себя здоровым. По-моему, весь период болезни занял около года. С другой стороны, в это время люди занимались реализацией идей, которые успели придумать. Таким образом, время не прошло зря. Можно считать его частью рабочего плана…

LXF: Вы сказали, что ожидали снижения доли Perl на рынке скриптовых языков, учитывая промежуток времени между Perl 5 и Perl 6. Но лично я никакого снижения не вижу, Perl сейчас популярен как никогда. Вас это ободряет?
ЛУ: Да, ободряет. Продажа книг о Perl немного уменьшилась, хотя я не знаю, насколько это показательно. Сейчас начинается новый раунд выпуска книг о Perl 5, и пока неизвестно, как их примут.

LXF: По-моему, Тим говорил, что продажи книг о Perl увеличились за последние месяцы на 19 %, благодаря новой книге «Learning Perl» («Изучаем Perl»). ГУ: Вы знаете, проценты как раз снизились, зато абсолютные числа продолжают расти.
ЛУ: Даже если продажи книг падают, причиной может быть просто хорошая документация. Это ведь open source, и многое не поддается учету. Если вы занимаетесь маркетингом и фиксируете каждую продажу, то можно посчитать, сколько народу приобрело ваш продукт — кроме пиратов, конечно… В open source никого не назовешь «пиратом», разве что в опереточнолитературном смысле этого слова, но здесь гораздо сложнее проследить, кто чем пользуется. Я вижу намного больше поддержки, особенно когда мы стали работать над компилятором Perl 6 (написанном, кстати, на Haskell). Я вижу нарастающее волнение. Год назад многим казалось: наши планы никогда не материализуются, поскольку мы разрабатывали виртуальную машину буквально с нуля. Сейчас прогресс резко ускорился — у нас уже есть виртуальная машина на функциональном языке высокого уровня, и тестовая версия компилятора, все это легко переводится на Perl 6, короче, ждать осталось недолго.

LXF: Звучит неплохо…
ЛУ: Не могу предсказать, что через год мы получим окончательную реализацию, но точно будем запускаться на множестве платформ, одна из которых — Parrot (та самая виртуальная машина). Уже можно работать поверх JavaScript, Parrot, и есть даже реализация Perl 6 на движке от Perl 5. Выглядит это, конечно, безумно, и я не думаю, что это очень эффективное решение, но оно имеет право на существование, хотя бы для разнообразия.

LXF: Мне нравятся многие вещи в Perl 6. Мне нравится суммарная суперпозиция, мне нравятся операторы свертки — это просто чудо.
ЛУ: Эти вещи взяты из языка APL, но в отличие APL, мы попытались оптимизировать их для удобного чтения. Посмотрите на APL, и вы поймете, что если надо разобраться в чужой программе, вы должны четко представлять себе, что делает каждый отдельно взятый оператор. Посмотрите на Perl 6, и вы удивитесь, насколько он проще и логичнее. Сразу понятно, зачем нужны квадратные скобки, и что они делают со списками, и куда прилагается оператор посередке, утверждение глотается запросто, как пилюля. Я — сторонник читаемого кода, потому что даже если он выполняет сложные вещи, но описывает их наглядно, программистам это нравится. Мы гордимся синтаксисом нашего продукта.

LXF: Чем Вас особенно радует Perl 6? Кроме мысли, что он почти готов, конечно.
ЛУ: Я думаю, что в нем будут части, развивающиеся быстрее, чем Perl 5. Язык Perl всегда был расширяемым. По этой причине мы добавили символы-префиксы для обозначения переменных. Perl 5 тоже предусматривает расширяемость, и он все еще развивается, благодаря архиву исходных текстов и модулей CPAN, которым мы можем гордиться до сих пор. Однако есть множество причин, по которым пятая версия Perl уже изжила себя. У нас есть способы изменения синтаксиса языка, но они очень примитивны. У нас есть механизм, называемый source-фильтром, но с ним тоже далеко не все благополучно. В Perl 6 мы фактически даем программисту полный контроль над синтаксисом, так что вы сможете варьировать «грамматику» языка, как угодно изменять язык и экспериментировать, подчиняя язык новой семантике. Тогда путем «естественного отбора» мы сможем определить, в каком направлении развивать Perl 6.

LXF: Наверное, в ориентации на обычного пользователя?
ЛУ: Отчасти развитие состоит в обеспечении взаимодействия независимых версий, например, если вы используете какие-нибудь два модуля, которые требуют разные версии другого модуля — мы должны позволить им сосуществовать. Если, конечно, эти два модуля не потребуют доступа к каким-нибудь закрытым ресурсам.

LXF: Вы сказали, что разработка шестой версии — Ваш единственный шанс разрушить обратную совместимость. Не думаете ли Вы, что совместимость нарушит, скажем, Perl 9? ГУ: Никакой девятой версии не будет.
ЛУ: Я надеюсь, что мы сделаем достаточно гибкий язык, чтобы все последующие версии использовали эту гибкость. Может быть, его переименуют в Perl 7, 8 или 9, но разве что по соображениям маркетинга, а не в связи с новой идеологией. Быть может, появится модуль, который видоизменит сам язык, и кто знает, может быть, он станет настолько популярным, что мы включим его в стандартную поставку. Конечно, тогда придется изменить номер версии, поскольку этот модуль может разрушить обратную совместимость.

LXF: Вы ведь можете оставить людей, использующих Perl 5.8, ни с чем.
ЛУ: Не совсем так. Perl 5 — это open source, и он никуда не денется. Пока он кому-нибудь нужен, его будут поддерживать. Это одна из причин, по которым мы затеяли столь масштабную переработку. Поскольку Perl 5 является довольно стабильной базой, многие им пользуются. В нем нелегко отыскать ошибки, поэтому он не подвержен быстрым изменениям. На примере тех, кто до сих пор работает на Perl 4, мы можем с уверенностью утверждать, что Perl 5 будет актуален еще лет пять после выхода Perl 6. Нам не особо интересно сообщать людям, чего они не могут сделать.

LXF: Вас не беспокоит, что могут найтись люди, которые отпочкуют версию Perl 5.8, добавив в него парутройку новых функций, и в конце концов превратят его в реального конкурента Perl 6?
ЛУ: Я бы не рассматривал это как почкование. Нет проблем, пусть делают. Perl 6 как раз и пытается облегчить создание индивидуальных версий по личному вкусу. Не думаю, что кому-то сильно захочется страдать над расширением Perl 5.

LXF: И последнее: когда же мы увидим финальную версию Perl 6? Назовите точную дату!
ЛУ: Посмотрим… 30-го июля.

LXF: Какого года?
ЛУ: Не скажу! LXF

Персональные инструменты
купить
подписаться
Яндекс.Метрика