|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexey Glotov 2:5093/55.8 28 Feb 2001 04:47:55 To : All Subject : Тут такое панимашь... --------------------------------------------------------------------------------
http://webscript.ru/
Переходим с PHP на Perl, как это ни печально...
Оглавление
1. Сухой осадок
2. есколько слов о PHP
3. О Perl
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.
13 июня 2000, 16:52
Дмитрий Котеров
Лаборатория dk, c2000
_______________________________________________________________________
*Email:djnicky@nm.ru* [Team DJ-Club]
...Take it Easy... All [Moderator of CHELNY.SGI] ICQ:106642304
--- F.I.P.S./32 v1.0r W95/NT [M]
* Origin: Я гвоздь, торчащий в Вашей преступной заднице!... (2:5093/55.8)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/28423a9c4abb.html, оценка из 5, голосов 10
|