Меню
- Главная
- Скрипты
- Шаблоны сайта
- Книги
- Фон для сайта
- Анимированные картинки
- Лохотроны и кидалово в интернете
- Статьи
Партнерские программы:
- Заработок на соцсетях
- разные


Реклама




Информация
Обо всех новых добавлениях на сайт вы можете узнать подписавшись в
_________
Яндекс.Метрика


 
Переходим с PHP на Perl, как это ни печально...

Переходим с PHP на Perl, как это ни печально...


PHP, конечно, язык хороший... Во всяком случае, синтаксис у него на порядок проще и яснее, чем у 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] - только через промежуточный массив. Но, кстати, это не так уж и обременительно.
Пожалуй, все. Всего два крупных недостатка, но каких...
Совсем недавно я убедился, что все достоинства 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.


Назад
Автор: Котеров Дмитрий
Источник: woweb.ru