|
rl!". Да, это распространенная точка зрения. Однако у Perl,
на-
ряду с его неоспоримыми достоинствами, существуют и недостатки. Причем недос-
татки весьма серьезные. Вот один из них: Perl не приспособлен непосредственно
для
программирования сценариев. Это в некотором роде универсальный язык, поэтому он
не поддерживает напрямую того, чего бы нам хотелось. А вот и второй: у Perl
синтак-
сис не способствует читабельности программы. Он не похож ни на Си, ни на
Паскаль
(а эти языки замечательно зарекомендовали себя как самодокументирующиеся). Во-
обще, я сам принадлежу к той категории людей, которые очень болезненно воспри-
нимают непродуманный синтаксис языка программирования, отсюда и мое отноше-
ние к Perl...
PHP — язык, специально нацеленный на работу в Интернете, язык с универсальным
(правда, за некоторыми оговорками) и ясным синтаксисом, удивительно похожим на
Си, сочетающий достоинства Perl и Си. И хотя этот язык еще довольно молодой, он
(точнее, его интерпретатор) установлен уже на порядка миллиона серверов по
всему
миру, и цифра продолжает расти. Новое поколение PHP — четвертое — должно во-
обще стереть все преимущества Perl перед PHP, как с точки зрения быстродействия
обработки программ (а третья версия PHP сильно отставала от Perl при обработке
больших циклов), так и с точки зрения синтаксиса. Наконец, большинство PHP-
сценариев (особенно не очень больших размеров) работают быстрее аналогичных им
программ, написанных на Perl (конечно, если сравнивать с обычными Perl-
сценариями, а не программами, запускаемыми под управлением mod_perl).
Думаю, у PHP есть лишь один серьезный недостаток, который менее выражен у Perl:
это — его медлительность при работе с большими и сложными сценариями. Однако
работы по преодолению этой трудности давно ведутся и, если верить разработчикам
PHP, версия 4 является уже компилятором, построенным примерно на том же прин-
ципе, что и компилятор Perl. Давайте поговорим на последнюю тему чуть подробнее.
Часть III. Основы языка PHP 106
Интерпретатор или компилятор?
Возможно, вы уже слышали, что PHP версии 4, в отличие от своего предшественника,
является компилятором. Так вот, это не совсем так. Во избежание разногласий в
тер-
минах давайте определимся, что мы будем называть компилятором, а что — интер-
претатором. Если быть до конца откровенными, компиляторами очень часто и неза-
служенно называют программы, которые на самом-то деле являются
интерпретирующими трансляторами, т. е., по своей главной функции — интерпре-
таторами. Так обстоит дело и с PHP версии 4.
Транслятор — программа, которая переводит код с одного "языка" на другой.
Например, утилита, преобразующая исходный Паскаль-код на Си, — трансля-
тор. В общем понимании компилятор — ни что иное, как транслятор, конверти-
рующий код программы на языке высокого уровня в машинный код. Интерпре-
татор же — это утилита, которая просматривает код некоторой программы и
выполняет одну ее инструкцию за другой, т. е. полностью контролирует про-
цесс исполнения.
Давайте посмотрим, как работает PHP версии 4. Получая на свой вход исходный код
программы, он в первую очередь анализирует его (в частности, проверяет
синтаксис)
и транслирует в специальное внутреннее представление. Оно представляет собой
специальный байт-код, который, конечно, невозможно прочитать глазами, но с
кото-
рым в дальнейшем проще всего будет оперировать PHP. Вот эту-то фазу чаще всего
и
называют ошибочно компиляцией. Далее, PHP исполняет (интерпретирует) получен-
ный байт-код.
В этот момент он представляет собой классический интерпретатор.
Итак, мы видим, что PHP составлен из дву
|
|