|
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
|