Информационные
технологии / Программное обеспечение
Крючин О.В.
Тамбовский государственный
университет им. Г.Р. Державина, Россия
Достоинства и недостатки языка PHP а также перспективы
виртуальной машины HIPHOP с языком HACK в качестве преемника PHP
Как известно, PHP является преемником продукта под названием PHP/FI.
Созданное в 1994 году Расмусом Лердорфом, самое первое воплощение этого языка
было простым набором CGI-скриптов, написанных на С для отслеживания посещений своего
веб-резюме. В настоящее время PHP является самым популярным языком
веб-программирования [1], однако, содержит множество недостатков, среди которых
можно отметить следующие:
·
слабая типизация (автоматическая конверсия между строками числами
и т. д.); пользователь лишен возможности задавать тип переменной;
·
необходимость проверки флагов компиляции PHP в программе при
использовании различных вызовов (например,
@fopen('http://example.com/not-existing-file', 'r'););
·
отсутствие потоков;
·
автоматическая неявная конвертация false в 0;
·
нет никакого способа объявить переменную (переменные, которые не
существуют создаются со значением null при первом использовании;
глобальные переменные должны быть объявлены с ключевым словом global перед использованием,
глобальная переменная даже не может быть прочитана
без явного объявления — вместо этого PHP просто создаёт
локальную переменную с таким же именем);
·
возможность получить ссылку на несуществующий ключ внутри
неопределённой переменной (которая становится массивом);
·
непоследовательная работа с регистром (имена переменных
чувствительны к регистру, а имена функций, методов и классов нет);
·
отсутствие четкого отделения статических методов (метод может быть
вызван как (Class::method)).
Для преодоления описанных выше недостатков компанией Facebook
был разработан транслятор исходного кода, который программно превращает
исходный код, написанный на языке PHP, в высоко оптимизированный код на C++,
а затем использует компилятор g++ для его компиляции. Данный транслятор,
названный HipHop, включает в себя собственно транслятор кода,
альтернативную реализацию среды выполнения PHP, а также множество
наиболее распространённых расширений PHP, переписанных на C с
целью повышения производительности [1].
Разработчики Facebook создали HipHop для экономии
ресурсов их серверов. Ими же был разработан HPHPi, представляющий собой
экспериментальный интерпретатор PHP, предназначенный для отладки и
быстрого прототипирования кода, а затем HHVM — экспериментальная
виртуальная машина для исполнения и JIT оптимизации PHP кода.
Таким образом, язык Hack близок к PHP и реализованный поверх HHVM,
в котором дополнительно введена статическая типизация [2].
Можно выделить следующие достоинства
HipHop: бесплатный, открытый исходный код, который уже используется в Facebook,
работа по схеме PHP →С++ → GCC →
исполняемый файл (происходит каждый раз при развёртывании кода), исполняемый
файл может работать как сервер (а также запускаться из командной строки), веб
сервер = один процесс и много потоков, не использует Zend Engine (использует
написанный на C++ почти совместимый с PHP 5.2 фреймворк), используются
расширения на C++ (стандартные написаны C).
Среди недостатков можно отметить отсутствие поддержки некоторых функций
и технологий: Windows, PHP 5.3 (поддержка
планируется), eval(), create_function(),
preg_replace с модификатором /e, function_exists() до объявления функции. Технология
поддерживает следующий динамический
функционал: вызов функций, в том числе call_user_func(),
методы и свойства объектов, переменные, extract(), include(), toString(),
__get(), __set(), __call(), а также переопределение функций, классов,
констант.
Таким образом, можно сделать вывод, что Hack и HipHop являются
весьма перспективной, но в настоящее время недостаточно проработанной
технологией.
Используемая литература
1. Самый
востребованный язык программирования это….. //[Электронный ресурс] Режим
доступа:
http://mariupol.itstep.org/novosti-na-glavnoy/samiy-vostrebovanniy-yazik-programmirovaniya-eto%E2%80%A6.html
2.
Programming productivity
without breaking things // [Электронный ресурс] Режим доступа: http://hacklang.org/