Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Тут такое панимашь...   Alexey Glotov   28 Feb 2001 04:47:55 
 Re: Тут такое панимашь...   Michael Poliakov   01 Mar 2001 01:09:09 
Архивное /ru.cgi.perl/28423a9c4abb.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional