Информационные технологии / Программное обеспечение

Крючин О.В.

Тамбовский государственный университет им. Г.Р. Державина, Россия

Достоинства и недостатки языка 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/