Расмус Лердорф: «Вы думаете, что 11 лет назад я решил разработать язык сценариев, которым будут пользоваться во всем мире!?»
В этом году Расмус Лердорф, изобретатель одного из самых популярных языков веб-сценариев, приехал в Москву вместе с разработчиком ядра PHP Андреем Змиевским, чтобы принять участие в V Международной конференции «Современные технологии эффективной разработки веб-приложений с использованием PHP».
Признаюсь, я с некоторым трепетом ждал этой встречи: человек, который одиннадцать лет назад изобрел язык, на котором сейчас пишут миллионы людей во всем мире, – это живая легенда. Но вместо этакого умудренного опытом и преисполненного сознанием собственной значимости мэтра мне посчастливилось побеседовать с очень общительным и открытым человеком.
Господин Лердорф, вы впервые в нашей стране, с чем это связано, почему именно сейчас вы приехали к нам?
Да, это мой первый визит, хотя я давно интересуюсь вашей страной. Я много читал и много знаю о России и хотел побывать здесь. Почему именно сейчас? Даже не знаю. Никакой особой причины тут нет. Я стараюсь посещать конференции, на которые меня приглашают, если есть время и возможность. Меня пригласили, была возможность приехать, и я приехал.
Вы автор-разработчик языка PHP, и в то же время один из сотрудников Yahoo!. Есть ли здесь связь? Как вы совмещаете одно с другим?
Да, несомненно, это связано. Yahoo! очень широко использует PHP, а я был его изобретателем и продолжаю много работать над его развитием. Они просто наняли меня для того, чтобы я помог им с PHP.
Господин Лердорф , вы многократно говорили, что PHP – это труд очень многих разработчиков и вы всего лишь один из первых. Какова ваша роль в развитии языка, в принятии ключевых решений сейчас?
Действительно, PHP – это коллективный труд, и продукт сотрудничества многих и многих людей. И хотя кто-то, как я, работает в проекте с самого начала, имеет больший опыт, написал больше кода, чем новые люди, такого человека, который говорит всем «да» или «нет» по поводу тех или иных решений, просто не существует. И уж, конечно, я не тот человек. Люди, которые пишут код, выполняют основную работу, именно они в конечном итоге вырабатывают и принимают коллективное решение о том, что включать в конечный продукт. Подчас это бывает очень нелегко. Мы помногу раз возвращаемся к обсуждению одного и того же. Спорим, убеждаем друг друга. Это очень живой процесс. Но я не говорю решающего слова. Я не был таким человеком все эти годы и не являюсь им теперь. Я часть группы, часть сообщества, которое принимает решение. PHP – это большой коллективный проект, который я не смог бы сделать в одиночку, без помощи других людей.
С момента выхода PHP-3 до PHP-4 прошло довольно много времени, и визуальная разница между этими версиями языка для пользователя весьма ощутима. Так же много времени и различий отделяют друг от друга PHP-4 и PHP5. На первый взгляд основное отличие будущей версии – исключительно во встроенной поддержке Unicode. С точки зрения конечного пользователя, эта смена версий может показаться не настолько очевидной. Что вы можете сказать об этом?
Смена версии происходит всякий раз, когда у нас накапливаются достаточно серьезные изменения в коде. И внедрение поддержки Unicode относится именно к таким.
Кроме того, номер версии – это не только цифра для конечного пользователя. Это завершение некоторого этапа для людей, которые создают код PHP. И мы должны это четко обозначить.
Да, различия между третьей и четвертой или четвертой и пятой версиями на первый взгляд более наглядны, чем те которые мы планируем для PHP?6. Но в действительности они грандиозны. Мы проделали очень большую и качественную работу для всех тех, кто использует PHP.
Дело в том, что проблеме Unicode посвящено множество внешних расширений и частных решений. Теперь же мы, наконец, смогли встроить непосредственно в PHP, и внутренние различия между 5-й и 6-й версиями очень велики. Эти изменения могут отразиться на разрабатываемых программах. В рамках одной версии мы стараемся соблюсти преемственность в поведении программ. Если что-то работает у вас в версии 5.1, то оно будет работать и в версии 5.2 и в версии 5.3. Таким образом, мы добавляем новые модификации и исправления. Но все это допустимо только до тех пор, пока не происходит качественный скачок. И этот скачок – PHP-6.
PHP все время сравнивают с другими языками и технологиями – ASP, JSP, Python или Ruby On Rails. А кого вы сами видите в качестве главного конкурента? На что ориентируетесь при выборе стратегии развития языка?
Наша основная цель – решение повседневных проблем, возникающих в Web. И мы создаем средство для решения таких проблем и всегда фокусируемся на том, чтобы решить возникшую проблему, а не на том, как это будет укладываться в какую-нибудь концепцию развития языка. Конечно, есть другие подходы, и другие инструментальные средства строятся совершенно иначе. Там люди могут проделывать массу работы для того, чтобы ответить, например, на вопрос: «Как мне решить эту задачу с помощью Python?» Поскольку Python – универсальный язык и с его помощью можно делать массу различных вещей, в нем зачастую не так просто найти односложный ответ на конкретную задачу.
Это общая проблема универсальных языков. Поэтому я не вижу с их стороны прямой конкуренции. Есть люди, которые любят PHP и которые любят путь понятных и простых PHP-решений для веб-задач. И они вряд ли получат его в других языках. Я люблю PHP именно за понятность.
То есть наше внимание всегда сосредоточено собственно на Web и возникающих в нем типовых задачах. Конечно, вы можете делать с помощью PHP и другие вещи, но для нас, как разработчиков, первоочередной целью остается именно эта. И такой подход несомненно привлекает к нам нашего пользователя. Не думаю, что мы его потеряем. Так что в действительности я не очень забочусь о сравнении нашего развития с другими языками и инструментальными средствами. Не думаю, что они могут предложить что-то существенно проще и эффективнее, чем то, что мы делаем в PHP.
PHP-5 – это объектная ориентация. Это поддержка классов, использование шаблонов программирования, внедрение статистических методов и т. п. Вместе с тем довольно долгое время PHP был скорее процедурным языком. К чему больше тяготеете вы сами? К процедурному или объектно-ориентированному подходу?
Я использую смесь обоих подходов. Мне нравится смешивать процедуры с объектами. Когда я думаю о чем-то как о целом объекте, я и делаю это объектом. Разумеется, есть люди, которые стремятся сделать свой код полностью объектно-ориентированным. Но ко мне это не относится. Для меня это примерно 50 на 50. В публичных выступлениях я часто использую процедуры, чтобы сохранить простоту и наглядность. Для того чтобы продемонстрировать какое-то действие, мне не нужен объектный код, к тому же он будет более длинным. Объектно-ориентированный слой может лежать где-то глубоко внутри, а поверх него будет существовать простой и понятный сценарий с процедурным кодом. Скажем так, в PHP никогда не было объектов ради самой идеи объектов. И это действительно отражает мой собственный подход. Можно даже назвать PHP процедурным языком с объектами.
Самая распространенная для веб-проектов платформа – это UNIX + Apache. Однако в последнее время очень много разговоров о том, что такое сочетание уже не удовлетворяет запросам веб-проектов с большим трафиком и высокой пользовательской посещаемостью. Возникают решения, построенные на основе других веб-серверов с использованием FastCGI. Что вы можете сказать по этому поводу?
У нас есть поддержка FastCGI, и, действительно, не так давно мы проделали большой объем работ в этом направлении. Кроме того, нашим основным принципом остается открытость. Если кто-то заинтересован в том или ином новом решении, он может присоединиться к проекту и реализовывать свою идею. Но, в любом случае, мы ориентируемся на большинство наших пользователей. В конечном итоге большинство использует PHP под UNIX-подобными системами и веб-сервером Apache, и первоочередные изменения и исправления делаются именно для этой платформы. В качестве примера можно рассмотреть СУБД Informix. Она может работать, скажем, под управлением ОС Novell. Но людей, использующих в такой связке PHP, будет, наверное, трое во всем мире. Да, их сообщения об ошибках будут учитываться, но рассматривать их будут в последнюю очередь.
Поэтому приоритетной для нас по-прежнему остается платформа UNIX-Apache-PHP.
То есть у себя в Yahoo! вы остаетесь верными связке с Apache, и, несмотря на большую популярность и посещаемость, вы не ощущаете проблем ресурсоемкости и т. п.?
Я не думаю, что тут вообще есть какая-либо проблема. Это работает уже много-много лет. FreeBSD и веб-сервер Apache – это очень простое, эффективное решение. И оно действительно хорошо работает.
Если не секрет, какова доля PHP-разработок в Yahoo!?
Сейчас в Yahoo! PHP используется, примерно в 80-90% процентах задач. Конечно, мы используем и C/C++ код. PHP – это верхний слой, уровень представления, уровень веб-сервера, а большая часть «тяжелой» бизнес-логики написана на С++.
Вместе с тем нельзя говорить, что Yahoo! везде и всюду использует исключительно PHP. Скорее так – почти в каждой задаче мы используем PHP на верхнем уровне, на входе и большое количество внутренних процессов, написанных на С++ под этим слоем.
Вы приехали к нам вместе с одним из активных разработчиков ядра Андреем Змиевским, и вы автор языка и по-прежнему остаетесь одним из вдохновителей проекта PHP. Что мы можем ожидать в будущем? Есть ли уже сейчас какие-то планы дальнейшего развития, новой версии?
В PHP-5 мы решали проблемы разработки веб-сервисов, переработали поддержку XML и т. п. Слишком много людей были недовольны тем, как это было решено в PHP-4, так что нам пришлось бросить все силы на то, чтобы это улучшить. И сейчас аналогичная ситуация породила необходимость PHP-6: очень многие пользователи испытывают проблемы с использованием функций mb_string и вынуждены искать обходные пути решения этих проблем. Сейчас все большее количество разработчиков стремятся сделать свои веб-проекты в полной мере интернациональными, с полноценной многоязычной поддержкой. В рамках PHP-5 это не так просто, как нам бы хотелось. И решение этой проблемы – главный мотив, главная цель PHP-6.
Вы спрашиваете меня, что будет в PHP-7? Какова следующая цель? Это все равно, как если бы вы спросили меня: «А каким будет Web? Что произойдет в Web в следующие три года?» Если бы я только знал! А вот, например: мы все заработаем кучу денег!
Я не знаю точно, в каком направлении будет развиваться Web. Думаю, он станет более интерактивным, но какая именно технология будет при этом доминирующей? Этого я не знаю. Но какой бы она ни была, PHP будет поддерживать эту технологию, потому что двигается и развивается вместе со своим сообществом и это сообщество – тысячи и тысячи людей. И каждый из них – это, маленькая лаборатория по изучению насущных проблем. И то, в чем будут заинтересованы эти люди, на то и будет нацелен PHP. Потому что само PHP и есть сообщество. Не я, не Андрей Змиевский – никто отдельно! Да, мы многое делаем в проекте, и, возможно, поэтому наш голос звучит более авторитетно, чем голос других участников. Но если завтра мы с ним сойдем с ума и начнем нести полную чушь, мы услышим в свой адрес крепкое ругательство. Точно так же, как и любой другой член сообщества. Мы должны находить взаимопонимание со всеми остальными участниками. Именно сообщество в целом и возникающие перед его членами задачи решают, куда и каким путем пойдет PHP дальше. В каком направлении пойдет Web, туда вслед за ним пойдет и PHP.
Я не провидец. Конечно, я хотел бы знать, что будет интересовать людей хотя бы в ближайшие три года, но я не знаю. Я могу только догадываться.
Вопрос, который наверняка задают вам постоянно: что автор языка вкладывал в аббревиатуру PHP?
В самом начале я назвал это Personal HomePage Tools. Постепенно люди сократили это название до PHP. В следующей версии, когда я добавил обработку форм, добавилось «FI» (прим.: от англ. form interpreter). Это было что-то вроде маленькой шутки, перефразом для TCP/IP. Чувствуете? TCP/IP и PHP/FI. Затем, когда появился PHP?3, который уже не был просто набором инструментов для домашних страничек и который можно было использовать для множества различных веб-задач, мы стали подумывать о смене названия. Но ничего удачного нам в голову не приходило. Кроме того, уже были люди, которые привыкли пользоваться сокращением PHP, и нам не хотелось их расстраивать. Так что мы просто сменили название на аббревиатуру. Больше не было Personal HomePage Tools, было просто PHP. Все эти выдумки по поводу «protected» или «preprocessed» – это глупость. Мы так и сказали людям: «Это просто PHP».
Расмус, в интервью в 2002 году вы сказали, что никогда не думали разрабатывать язык сценариев, вы делали свой маленький инструментарий, который постепенно вырос в какую-то библиотеку, которая была открытой для всех, и вот так, постепенно, все это наросло как снежный ком. Прошло уже 11 лет. Что вы можете сказать сейчас, оглядываясь назад? Не жалеете ни о чем?
Сожалею ли я о чем-нибудь? Нет, это было здорово! Конечно, никаких планов о том, чтобы создавать целый язык у меня не было. Самый-самый первый скрипт, который я написал, был очень простым и решал простые задачи. Когда меня спрашивали: «Как ты это делаешь?» – я объяснял, что написал некий простой инструмент. И я просто давал его всем тем, кто ко мне обращался. Вот так это просто распространялось, прямо с моей домашней странички. Неужели вы думаете, что одиннадцать лет назад я сел и начал обдумывать план, вроде такого: «Так, я собираюсь разработать язык сценариев, которым будут пользоваться во всем мире…»? Разумеется нет! Я просто-напросто решал те проблемы, которые передо мной возникали. Другие люди говорили, что это хорошее решение и также начинали его использовать. И вот так-то все постепенно разрасталось и разрасталось.
Перефразируя слова Линуса Торвальда, можно ли сказать, что все это было ради удовольствия?
Я бы не стал говорить, что все это было «просто ради удовольствия». Люди нанимали меня для того, чтобы решать вполне конкретные задачи. При этом я видел, что довольно часто они обращаются ко мне с одними и теми же проблемами. Постепенно у меня накопился свой, готовый инструментарий для их решения. Это получается, как песенка для рекламы: «У меня есть мое чудесное средство, детка. Бац-бац! И я решу им все твои проблемы!» – что-то типа такого.
Конечно, это было и моим увлечением. Мне все это очень нравилось. Но это также было и моей работой. Я был и разработчиком, и консультантом. То, что я делал – решал возникающие у людей проблемы. Это было не только ради удовольствия, это были реальные проблемы, которые нужно было решать. Именно так все и было!
Дмитрий Горяинов