- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF122:Interview
Материал из Linuxformat.
Волшебник web
- Создатель PHP Расмус Лердорф рассказывает о том, как его язык столь стремительно обрел мировую славу, и о том, что он вынес из конкурентной борьбы...
Расмус Лердорф [Rasmus Lerdorf], несомненно, самый знаменитый из ныне живущих гренландских компьютерных гениев. Создав PHP в виде набора скриптов-хаков для поддержки своего же сайта в 1995 году, он превратил его в мощный и полнофункциональный язык, которым пользуются миллионы. Мы изловили его, чтобы узнать, какое место он занимает в лагере PHP сегодня, и о том, какие из принятых им ранее решений привели к столь потрясающему успеху.
Linux Format: Насколько активно вы сейчас занимаетесь разработкой PHP?
Расмус Лердорф: Намного менее активно, чем 10 или 15 лет назад, это точно. Но я по-прежнему ежедневно читаю списки рассылки и периодически обсуждаю функции и исправляю ошибки. Лично меня больше интересуют проблемы безопасности и производительности. Ими я занимаюсь так же активно, как и прежде.
LXF: А какова структура команды PHP? Как-то не очень она понятна...
РЛ: Нет никакой структуры!
LXF: Кто же принимает окончательные решения?
РЛ: Мы. У нас есть список рассылки под названием Internals [Внутренние дела], и он абсолютно открыт – любой может подписаться на него, прочитать его, поместить в него сообщение, и я всегда настаиваю на том, чтобы весь процесс постоянно был прозрачным. Любой может просмотреть архивы списка рассылки и узнать, как мы пришли к тому или иному результату.
Ну, а побеждает код. Если спорят две группы, но в одной есть реализация, а в другой нет, то побеждает реализация. И почти неважно, насколько она страшная: если нам нужна функция, но мы не можем прийти к согласию по ее реализации, то примем любого, кто бы ее ни выполнил.
LXF: Давит ли на вас необходимость быть окончательным арбитром?
РЛ: Еще как. Я всегда старался свести эту роль к минимуму, потому что мне не хочется, чтобы в большинстве случаев последнее слово было моим. Я хочу, чтобы проект был самодостаточным, и мне нужно, чтобы он двигался сам. Если мне приходится принимать каждое решение, структура становится немасштабируемой.
Честно говоря, о многих вещах я знаю недостаточно. Возьмем, например, Sybase. Я в жизни им не пользовался. И как я могу принять разумное решение за использование одного и против использования другого с расширением Sybase? И для многих вещей в PHP дело именно так и обстоит. Есть группы людей, которые справятся с принятием таких решений намного лучше меня.
LXF: Это и затормозило разработку PHP 6? Она продолжается уже два с половиной года...
РЛ: Разработку 6 тормозит отнюдь не принятие решений, а поиск способных людей, интересующихся Unicode-ориентированным программированием. Это трудно – Unicode штука непростая. Там много всяких тонкостей, а множеству людей на них плевать. С точки зрения крупного бизнеса, Unicode нужен всем, но с сиюминутной точки зрения, есть много людей, которые без него обойдутся, поскольку выполняют разработки для своей языковой локали.
Теоретически, все хотят в итоге перейти на UTF-8. Но это план из разряда «как-нибудь потом надо этим заняться». В нем нет такой срочности, как во многих других функциях PHP. Как только кто-то скажет: «Мне она нужна немедленно», тогда и пойдут сдвиги. Разработчики отвечают за это в своих действиях, на своих рабочих местах, в своих компаниях. Но в РНР 6 этого практически нет. По большей части продвижение происходит в крупных компаниях, ведь именно они заинтересованы в интернационализации.
LXF: Какие языки вдохновили вас на разработку PHP?
РЛ: C и Perl. Именно эти языки я тогда использовал. Изначально я не пытался создать новый язык, мне просто нужен был способ использовать то, что я знал, для решения проблемы в рамках web-сервера.. Мне не нужно было многое из того, что было в Perl, и не нужна была вся эта суета с управлением памятью в С, а была нужна урезанная версия С, но не вполне Perl, которую я мог взять и нацелить на мою задачу.
Позднее языками, к которым мы обратились в поисках того, что нужно сделать в нашем объектно-ориентированном коде, стали C++ и Java. Но это были уже другие люди. Я никогда не был большим фанатом ООП – просто использовал его по мере надобности. Есть у меня объект, содержащий данные, и есть методы для манипуляции ими – ну и отлично. Но я никогда не был сторонником сплошного ООП. Меня вполне устраивает процедурный код, и web – это проблема нисходящего типа. Для меня имеет смысл, что вот есть HTML, и вы вкидываете пачку HTML, потом вызываете функцию, чтобы что-то сделать, а потом вызываете другую функцию. Да, можно иметь объект базы данных где-то за сценой, но я терпеть не могу такие вещи, как объект HTML с применением метода BR.
LXF: Что бы вы посоветовали другим разработчикам по части создания чего-то значительного?
РЛ: Сейчас все намного сложнее. Я занимался этим в 1993–95 годах, и тогда даже не существовало термина «открытый код». Это была совершенно новая область, и все, кто делал что-то интересное, уже выделялись. А сейчас так много людей, и все они выкатывают что-то новое; поразительно, что они способны подняться и возвыситься над всей шумихой и над всякими крутыми вещами.
Думаю, главное, что я могу сказать – выпустите из рук контроль. Если вы хотите создать проект с открытым кодом, нельзя позволять вашему эго преграждать проекту путь. Вы не можете переписывать заплатки за всеми, вы не можете за всеми угадывать, и вам надо предоставить всем контроль в равной степени.
LXF: А у вас был подобный момент?
РЛ: Определенно был – в 1997: практически дошло до того, что я чуть не убил весь проект, потому что он стремительно развивался, и мой почтовый ящик лопался от предложений, жалоб, заплаток. До этого я всем занимался сам. Кто-то присылал мне предложения, заплатки, и я переписывал их так, как считал правильным. Я не соглашался с людьми, обо всем спорил, и просто уже не справлялся.
Я был на грани срыва, и меня уже тошнило от всего этого [, я думал]: «Почему они воображают, что я буду исправлять их код? Они мне за это не платят. Какого черта я вкалываю за этих типов? Я их даже не знаю. Что вообще происходит?»
Вот тут и настал момент, когда я сказал: «Пора это менять. Надо дать тем, кто присылал замечания несколько лет, доступ к коду. Ты, парень, годами жаловался на расширение Oracle, плешь мне проел, вот и займиська им сам, приятель. Все жалобы, связанные с Oracle, прямиком будут отправляться тебе».
И это реально воодушевило народ. Когда они ощутили, что теперь кусочек PHP стал их собственностью, они изменили тактику – принялись его защищать, вместо того, чтобы жаловаться мне на проблемы. Оказавшись владельцами, получив власть, они сменили всю атмосферу. И вообще все стало куда веселее: я больше не один против всего мира; теперь у нас есть объединенные усилия всей команды.
LXF: Вы следите за другими языками, например, за Ruby?
РЛ: Я думаю, в последнее время [Ruby on] Rails немного затух. Новая версия, которую они предлагают – ну, та, которая действительно быстрая [смеется] – возможно, она будет интересна. Однако у них есть проблемы с производительностью, со скаффолдингом [scaffolding] и прочим, и они осознали это, и новая компоновка будет лучше.
Но я никогда не был сторонником генерирования кода – честно говоря, это просто пересоздание уже созданных приложений. Ну, а скаффолдинг – да, на экране неплохо смотрится, но по жизни я в нем не заинтересован. И по-моему, многие пришли к тому же выводу: «Да, скаффолдинг – это круто, но нам нужно нечто реальное».
Ruby как язык – отличная штука, я считаю его по-настоящему понятным и хорошим инструментом. И не так уж много людей, которые хорошо его знают. Многие пришли к Ruby on Rails, потому что их заворожил демо-ролик и вот это «эй, вы сможете создать приложение всего за 10 секунд». Но как только им понадобилось сделать что-то настоящее, они и спохватились: «О черт, я не слишком-то хорошо знаю Ruby!»