ИНТЕРВЬЮ

    

     Ван Россум Дает Google сценарную точку опоры

Язык Python, который все шире используется для разработки утилит и приложений, несет на себе отпечаток личности своего создателя - Гидо ван Россума. Накануне очередной ежегодной конференции по этому языку редактор eWeek Питер Коффи встретился с Гидо ван Россумом, чтобы обсудить текущее состояние Python и перспективы дальнейшего его развития.

Работая в Google, половину

своего времени Гидо ван Россум

уделяет развитию Python

eWeek: Спасибо за встречу. Как нам стало известно, в прошлом году вы стали сотрудником Google, где половину своего времени уделяете развитию Python. Как вас там называют?

Гидо ван Россум: Они зовут меня просто Гидо. У меня нет никакого особого титула - я просто сотрудник технического аппарата этой компании. А вот когда говорят о Python неофициально, меня могут назвать ГВР или ДДРЖ - мой шуточный ник в сообществе этого языка, который расшифровывается как "добрый диктатор ради жизни".

eWeek: Как вы оказались в Google? Что общего у этой компании с Python?

Г. Р.: Google никогда не делала тайны из того, что использует Python в своих внутренних проектах. Но даже зная это, я был просто потрясен, узнав, сколько кодов Python вошло в исходники Google.

Не нужно только думать, что когда ищешь что-то в Интернете или подключаешься к новостям Google News, то имеешь дело с программами на этом языке. Но при обслуживании систем, поддержке разработчиков, создании серверных приложений (в том числе и рекламных) Python используется очень активно. Внутри Google он уже стал стандартным сценарным языком.

eWeek: Как вы относитесь к термину "сценарный язык"? Многие связывают его популярность со все более широким распространением методов инкрементной компиляции и других динамических технологий.

Г. Р.: В Google можно смело говорить о сценариях как о категории, поскольку большинство приложений написано на С++ и Java. В целом же сценарные языки повышают производительность труда программиста, так как делают программы более эффективными. И все же если мыслить категориями, то лучше оперировать языками очень высокого уровня, выходящими далеко за рамки C++ или Java.

eWeek: Что позволяет отнести Python к языкам очень высокого уровня?

Г. Р.: Этот язык во многом избавлен от бесконечного подсчета системных ресурсов, с которым постоянно приходится иметь дело в C++ и Java. Я бы сказал, он уменьшен на порядок по сравнению с моделью, где переменная представляет собой список целых чисел. В Python встроено больше типов данных с бoльшим числом операций. В результате вы получаете более выразительную и точную систему обозначений, которая помогает справляться со всем этим.

eWeek: Не чувствуете ли вы сейчас, что на создание Python влияли какие-то допущения и предубеждения? И если да, то чего бы вы не стали делать, будь у вас машина времени?

Г. Р.: Очень долго мы зацикливались на различиях между машинными целыми числами и целыми числами произвольной точности. Постепенно это уходит в прошлое, хотя такой процесс идет довольно болезненно. Дело в том, что со временем стала различаться сама семантика коротких и длинных целых чисел. Когда складываются два числа, результат довольно очевиден, однако порой возникают проблемы даже с такими побитовыми операциями.

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

eWeek: Нельзя ли наметить какие-то вехи развития Python, на которые разработчики могли бы ориентироваться в ближайшем будущем?

Г. Р.: Текущая версия - 2.4, точнее, 2.4.2, но последняя цифра используется только для слежения за устранением ошибок. Сейчас мы работаем над версией 2.5, куда будет заложен целый ряд новых языковых функций. Их набор уже определен, но реализованы они не все. На предстоящей конференции PyCon, которая пройдет в Далласе, мы сообща наметим пути разработки недостающих функций и начнем цикл подготовки альфа-версии. Затем будет пара бета-версий и версия-кандидат. Окончательный вариант должен появиться в сентябре - октябре нынешнего года.

eWeek: Когда мы попытались познакомиться с тезисами PyCon, нам сказали, что их вообще не будет. Это что, неофициальное мероприятие?

Г. Р.: PyCon - конференция для простых разработчиков. В 1999 и 2000 гг. мы пытались сделать ее чуть более официальной, но это оказалось слишком дорого для нашего сообщества. Поэтому мероприятие снова стало общественным и с тех пор работает весьма успешно.

eWeek: Какие главные новшества нас ожидают в версии 2.5?

Г. Р.: Они изложены в документе под названием PEP 356. Познакомиться с этими предложениями по развитию Python можно по адресу www.python.org/peps.

eWeek: А что вы сами отнесли бы к ключевым функциям?

Г. Р.: Если кто-то торопится вынести собственный вердикт или готов отказаться от языка из-за отсутствия одной-единственной функции, то таких пользователей не удовлетворишь никогда. Они всегда хоть что-нибудь, да отыщут. Но если вас тревожило отсутствие в Python условных выражений, то в версии 2.5 такая поддержка появится, как описано в PEP 308. Она пригодится в тех случаях, когда разработчику не хочется прерывать ход своих мыслей. Но особых преимуществ, на мой взгляд, это не дает.

Для программистов, давно работающих с Python, более интересным станет появление оператора WITH. Он должен намного упростить блокировку, открытие и закрытие файлов, даже транзакции баз данных, которые должны быть выполнены наверняка. Над этой функцией мы работали очень долго, и то, что получилось, меня радует. Результат полностью соответствует PEP 343.

eWeek: Почему этот процесс шел с таким трудом?

Г. Р.: Мы искали четкий баланс. С одной стороны, подобная функция должна быть довольно общей, а с другой - не усложнять и не запутывать код. Так, одно из нереализованных предложений предусматривало, что любой объект поверх оператора WITH может выполнять тело этого оператора несколько раз. На первый взгляд это выглядит невероятно здорово, открывает колоссальные перспективы. Однако в большинстве реальных случаев вполне можно обойтись и без организации циклов, поэтому мы сочли, что при анализе кода такая функция может показаться слишком запутанной и непонятной.

Исправление ошибок молодости

Архитектор Python Гидо ван Россум вынашивает планы создания Python 3000:

- в версии 3.0, которую называют Python 3000, будут устранены архитектурные погрешности, даже если для этого придется нарушить обратную совместимость с версиями 2.х;

- унифицируется обработка целых чисел конечной и бесконечной точности;

- будет введена единая семантика операции деления для всех типов данных;

- устранятся ненужные дублирования, так что для каждой операции будет оставлен единственный способ выполнения.

Источник: документ "Python Enhancement Proposal (PEP) 3000", ред. 19 (февраль 2006 г.).

        

eWeek: Каким бы вы хотели видеть будущее Python году, скажем, в 2010-м?

Г. Р.: Следующим крупным обновлением языка станет Python 3000. Пока что, правда, эта перспектива выглядит довольно расплывчато. Во-первых, в силу успеха Python 2.x, а во-вторых, потому, что я работал в основном на пользователей этого языка, а не уделял все свое время его развитию. Возможность по-настоящему заняться Python 3000 у меня появилась только после перехода в Google.

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

eWeek: Есть ли надежда увидеть Python 3000 в ближайшие два-три года?

Г. Р.: Я буду очень разочарован, если за это время не появится хотя бы близкая аппроксимация Python 3000.

eWeek: Что еще поможет распространению Python?

Г. Р.: Скоро должны появиться трансляторы, намного ускоряющие выполнение кодов Python по сравнению с тем, что мы имеем сейчас. Сегодня все больше людей начинает учиться работать с этим языком.