Зеев Сураски: «PHP 6 оказался чрезмерно амбициозным проектом». Фото: CC BY 3.0 Leo Lefebvre |
«Приходится признать, что PHP 6 оказался чрезмерно амбициозным проектом», — заявил Зеев Сураски, директор по технологиям и сооснователь компании Zend Technologies и одновременно разработчик, которому принадлежит один из наиболее весомых вкладов в создание PHP.
В начале декабря опубликован второй предварительный релиз PHP 5.4. Законченную версию планируется обнародовать в начале 2012 года.
Целью проекта PHP 6.0 было полностью переписать язык с использованием системы кодирования символов Unicode. Более ранние версии языка опирались на кодировку ASCII, которая изначально создавалась в расчете только на символы английского алфавита, в то время как Unicode описывает существенно большее количество алфавитов.
На первый взгляд, идея перехода на Unicode имеет для PHP прямой смысл. Это наиболее широко используемый в мире язык скриптов для серверных приложений. Язык PHP разработал в 1995 году Расмус Лердорф, для упрощения создания динамических веб-страниц дополнивший статический язык разметки HTML базовыми механизмами программирования. Само название PHP представляет собой рекурсивную аббревиатуру PHP: Hypertext Preprocessor.
Однако при работе над версией PHP на базе Unicode выяснилось, что разработанные на нем программы занимают в памяти компьютера вдвое больше места. Впрочем, этого и следовало ожидать, учитывая, что многие символы в Unicode кодируются более чем одним байтом. В итоге сайты на новой версии PHP оказались существенно более медленными. Повышенная потребность в памяти мало что значит для серверов, на которых развернут всего один веб-сайт, однако многие пользователи PHP поддерживают крупные веб-проекты, для чего требуется большое число серверов, работающих с полной загрузкой.
«На популярных сайтах все упирается в плотность: сколько запросов в секунду может поддерживать сервер», — пояснил Сураски. В этом случае большая потребность в памяти выливается напрямую в необходимость покупки большего числа серверов.
Столкнувшись с повышенными требованиями к памяти, разработчики временно остановили работу над проектом PHP 6.0 и сосредоточили усилия на PHP 5.4. Ряд усовершенствований, предложенных для PHP 6.0, вошли в очередную модернизацию языка.
Например, сама идея создания шестой версии и полной поддержки Unicode — возможность работать на многих языках — все же была частично реализована. В PHP 5.4 имеется «подключаемая поддержка» целого ряда языков, в том числе японского и ряда диалектов китайского. В предшествующих версиях пользователи, которым требовалось работать на том или ином языке, например, японском, должны были специально перекомпилировать версию PHP с данным языком. В результате возникали расхождения между полученными таким путем диалектами языка и основной версией. Сейчас требуется только изменить настройки конфигурации, в результате чего базовая версия конвертируется в Unicode для того или иного языка. Поддержка Unicode не активизируется без соответствующих действий системного администратора.
В PHP 5.4 вошли также и многие другие изменения, первоначально готовившиеся для PHP 6.
Так, проект, названный Traits (англ. «характерные черты», «особенности» — Прим. ред.), позволяет разработчику использовать определенный фрагмент функциональности в разных частях приложения. «В любом классе, где нужно поддерживать ведение журнала, можно использовать Trait журнала», — пояснил Сураски. В представлении Сураски, Traits подобен механизму множественного наследования (multiple inheritance) языка Java.
С другой стороны, многие функции, которые планировалось исключить из версии 6.0, сейчас удалены и из 5.4. Одним из примеров является Safe Mode в PHP — специальный режим для реализаций, поддерживающих несколько сайтов. Safe Mode пользовался дурной славой за большое количество ошибок, к тому же он создавал у пользователей «ложное ощущение безопасности».
PHP развивается усилиями около 500 разработчиков. Примерно десять человек трудятся над базовым механизмом PHP, другие подерживают те или иные конкретные расширения, и около 100 человек работают над документацией. Несколько месяцев назад коллективы, поддерживающие PHP, изменили порядок получения одобрения при добавлении новых функций — процесса, который позволяет участникам PHP-сообщества голосовать за или против добавления новых функций.