Добро пожаловать!

 

Главная

 

Games
cheats
Patch
Тренеры

Создание Map

Downloads
Windows
Soft
тестеры
Разгон

Web-design
JavaScript
PHP
ASP

Программирование
Delphi
C++
Java
 

 

1. Сухой осадок           Многие в это не верят (я сам не верил), но Perl действительно лучше, чем PHP. Вот одна из лучших книг по Perl: "Стивен Холзнер. Perl: специальный справочник. Санкт-Петербург, издательство "Питер", 2000". Яснее, чем там, нигде не напишут...

2. Несколько слов о PHP

          PHP3, конечно, язык хороший... Во всяком случае, синтаксис у него на порядок проще и яснее, чем у Perl. И конструкций/инструкций меньше. Это достоинство. Например, в Паскале конструкций еще меньше, но это не мешает ему называться почти что одним из самых алгоритмизируемых языков.
          С чем очень неприятным сталкивается каждый программист, который переходит на Perl? Конечно, с тем, что ошибки скрипта выводятся в log-и сервера, на не прямо в браузер. И нельзя это никак переключить (есть, правда, один стандартный модуль с громким параметром fatalsToBrowser, но в browser он выводит только эти самые fatals, а предупреждения - по-прежнему в логи). В PHP ошибки по умолчанию выводятся туда же, куда и обычные данные.
          Следующее мерзкое свойство Perl - постоянно выдавать 500-ю ошибку. За подробностями, якобы, обращайтесь к логам сервера. Ага, сейчас... Причем эта самая 500-я ошибка выдается из-за того, что какой-то print проскочил раньше вывода заголовка "Content-type". В PHP никто не проскочит раньше его. Потому что там отслеживается: если что-то печатается, а заголовка нет, то вначале передается именно заголовок "Content-type".
          Теперь насчет управления переменными. В PHP любая переменная начинается с "$". Никаких там мерзких "@", "%", "&" и других символов для переменных разных типов. Они - пережитки Юниксовского shell-а (кто не прочувствовал, посмотрите установочный файл Apache, написанный на csh - он занимает около 100 Кб). Зачем они интерпретатору? Он ведь и так знает, кто есть кто.
          Обработка форм. Пожалуй, в PHP она работает почти идеально. И быстро. И с поддержкой массивов (правда, только одномерных). А также с поддержкой закачки - теперь для организации upload-а не нужно делать вообще ничего - сиди и жди, пока файл не придет, а потом забирай его из временной директории.
          Базы данных. Чтобы обращаться к базам данных, нужно использовать модули, многие из которых имеют просто феноменально большой размер, что, конечно, сказывается на быстродействии. А в PHP поддержка БД встроена. Имеется практически полный набор функций для работы с почти всеми известными человечеству базами данных. На все случаи жизни.
          Если душе хочется универсальности, то очень быстро отказываешься от того, чтобы выводить страницы при помощи скриптов через оператор print. Например
, так:

print "Content-type: text/htmlnn";
print "<html><body>n";
print "<h1>Hello!</h1>nHere is the numbers: ";
for(my $i=0; $i<10; $i++) { print $i; }
print "</body></html>";

          Этот вариант, конечно, не лезет ни в какие ворота. А что если нужно сделать редизайн? Лучше сразу повеситься. В то же время, в PHP можно комбинировать обычный html-такст с кодом скрипта. Например:

<html><body>
<h1>Hello!</h1>
Here is the numbers:
<?for(my $i=0; $i<10; $i++) { print $i; }?>
</body></html>

          Я думаю, достаточно перечислять, чем PHP лучше Perl-а. Интереснее будет посмотреть, где он хуже. Итак...
          Удивительная медлительность. Так, пустой цикл в PHP выполняется в 70 раз медленнее, чем в Perl. Регулярные выражения работают в 10 раз медленнее. Строковые операции - примерно в 5 раз медленнее. И как только они умудрились так написать?..
          Вообще никакой поддержки модульности. Правда, ее можно все-таки организовать вручную, и потом работать с "модулями", почти как в Perl. Но получается очень медленно. Основное время выполнения скрипта оказывается затраченным на подключение модулей.
          Немного недоделанный интерпретатор. Так, если функция возвращает массив, мы не можем обратиться к его, скажем, пятому элементу при помощи
Func(10,20)[5] - только через промежуточный массив. Но, кстати, это не так уж и обременительно.
          Пожалуй, все. Всего два крупных недостатка, но каких...
3. О Perl           Совсем недавно я убедился, что все достоинства PHP вполне можно реализовать на Perl (разве что ясного синтаксиса мы никогда не получим). Похоже, не осталось ничего такого, в чем PHP был бы незаменим. Вкратце перечислю основные реализованные возможности (полностью они, а также многое другое, можно найти здесь):

·                               Перенаправление ошибок в браузер - 100% как в PHP

·                               500-я ошибка побеждена. Теперь все работает в точности так же, как в PHP.

·                               Обработка форм - можно добиться возможностей, которые PHP и не снились. Причем относительно простыми средствами. Кстати, насчет стандартного CGI.pm - ужасный слон. Я поковырялся в нем, хотел понять, как там устроена обработка закачки. Лучше бы я этого не видел... И потом, вам не кажется, что 130 Кб кода на Perl (размер CGI.pm) - несколько чересчур?..

·                               Сериализация реализуется довольно несложно, причем можно даже сделать ее совместимой с PHP-шной. Можно также воспользоваться модулем Storable, который работает очень быстро.

·                               Вставки Perl-кода прямо в html-документ. Эта возможность, являющаяся ключевой в PHP, на Perl реализуется несколько сложнее, чем все вышеперечисленные. Но реализуется, причем, опять же, с большими возможностями, чем имеет сам PHP.

          Итак, вывод: Perl по всем параметрам (ну почти) лучше, чем PHP. Он в несколько раз сложнее, это точно. Неоправданно сложнее, вот что обидно. Но привыкнуть, я думаю, можно. Поэтому, как только PHP-шная горячка несколько спала, впереди забрезжил свет. Свет языка Perl.


Дмитрий Котеров
Лаборатория dk, ©2000

 

 

Новости

 

SpyLOG Рейтинг@Mail.ru HotLog Rambler's Top100

-AdRiver-

Design by:

Lord

Point_3d

Hosted by uCoz