Perl vs php perl проти php

Основна різниця між Perl і PHP
Сама природа Perl і PHP різна. Perl - це мова програмування - універсальний інструмент для вирішення дуже широкого кола завдань. Perl не розроблявся спеціально для Web-програмування.

PHP спочатку призначався для розробки Web-додатків. Він намагається поєднувати міць повноцінного мови і переваги вузькоспеціального кошти. У пошуках компромісу, PHP набуває цілий ряд спірних якостей.
ядро мови

Perl, як і будь-який повноцінна мова, має деякий ядро ​​- набір функцій і правил, що не залежать від платформи, операційної системи і інших обставин. PHP такого ядра практично не має. Звідси виникає цілий ряд особливостей PHP.

переносимість
Набір функцій PHP, який виявляється в розпорядженні програміста, практично повністю залежить від провайдера. ( «Правильні» провайдери завжди пишуть, з якими опціями був зібраний їх PHP.)

Ця різниця дуже відчутна. Наприклад, якщо сайт розроблений з використанням Smarty, то він заробить далеко не на всякому хостингу. І відбувається це тільки тому, що апарат Smarty використовує POSIX-розширення механізму регулярних виразів.

Якщо ваше PHP-додаток написано з використанням функцій, яких хостер не надає, або ви використовували бібліотеки, які залежать від таких функцій, то розширити набір функцій PHP самостійно найчастіше можна.

Perl в цьому сенсі більш стабільний. Він скрізь однаковий і Perl-код набагато більш переносимо.

кількість функцій
PHP надає (потенційно) безліч функцій. На даний момент їх більше 3000. На реальному хостингу ви виявите близько 1000 з них. Такий широкий набір засобів вираження не йде на користь мови. Різні програмісти знають різні набори операторів. Це ускладнює читання чужого коду, обмін кодом і спільну розробку.

Perl ж надає програмісту обмежений набір стандартних інструментів. Це дисциплінує програміста і полегшує обмін кодом і досвідом. При цьому, програміст зовсім скутий і завжди може отримати необхідні можливості, підключивши відповідний модуль.

синтаксис
Так вже вийшло, що зовні програми на Perl і PHP чимось схожі. Можна сказати, що якщо людина трохи знає Perl, то він трохи знає і PHP, але якщо людина добре знає Perl, то PHP він знає як і раніше лише трохи. Зворотне теж вірно.

Перерахую деякі особливо виразні відмінності.

Звичайно, забезпечити немислиму кількість функцій PHP можна було тільки ціною подовження їх імен. Це не могло не позначитися на синтаксисі мови. Те, що в Perl називається pop, в PHP array_pop. Те що в Perl - join, в PHP - implode. Рішення однієї і тієї ж задачі на PHP зазвичай більш громіздко.

Напишемо функцію, яка повертає три значення (1, 2, 3).
Perl

У PHP конструкція виходить більш тяжеловесна.

Крім того, в PHP і не пахне Perl-скоромовкою.

Замінимо всі шістнадцяткові числа в тексті на їх десяткові подання.
Perl

$ Text = preg_replace_callback ( '/ [0-9A-F] + / i',
create_function ( '$ t', 'return hexdec ($ t [0]);'),
$ Text);
# або
$ Text = preg_replace ( '/ [0-9A-F] + / ie', "hexdec ( '$ 0')", $ text);

Одне і те ж дію, але навіть короткий PHP-код в два рази довше, ніж Perl-аналог.

зрілість мови
Безумовно Perl є набагато більш зрілим мовою, ніж PHP. Він набагато менше схильний до змін при переході від версії до версії і забезпечений більш розвиненими засобів розробки.

Досить сказати, що в PHP механізм покажчиків знаходиться в зародковому стані. Perl минув цей етап розвитку років десять тому. У PHP не передбачена така структура даних, як масив. (Те, що в PHP називається «масив», в Perl називається «хеш».) У цьому сенсі PHP знаходиться на рівні awk.

Одним словом, PHP ще довго буде змінюватися, створюючи безліч проблем розробникам.

Адаптованість для Web-розробок
При веденні саме Web-розробок, PHP виявляє ряд істотних переваг.

По-перше, інтерпретатор PHP інтегрується в Web-сервер, що в рази збільшує продуктивність. Perl здатний наздогнати PHP по продуктивності, тільки якщо використовувати не CGI-підхід, а mod_perl. Більшість провайдерів не нададуть вам таку можливість.

По-друге, Web-додатки на PHP простіше налагоджувати. Повідомлення про помилки часто видаються клієнту, а не пишуться в error_log.

По-третє, PHP має широкий набір вбудованих функцій, для роботи по протоколу HTTP. Perl-програмісти теж можуть отримати в своє розпорядження всі ці функції, підключивши відповідний модуль, але в PHP ці функції вбудовані.

Однак, майже всі ці переваги обертаються серйозними проблемами з точки зору безпеки ресурсу.

Те, що PHP вбудований в сервер, ускладнює діагностику джерела атак. Крім того, PHP-код, потенційно, може нести набагато більші загрози, ніж Perl-код.

PHP дає велику свободу розробнику - PHP-скрипт може бути розміщений в будь-якій директорії сервера. Але це теж створює додаткові ризики. У багатьох випадках, через неуважність розробників, відвідувач сервера отримує можливість «залити» на сервер не тільки картинки і інші нешкідливі файли, але PHP-скрипти, а це вже дуже серйозна небезпека.

Те, що PHP видає повідомлення про помилки у відповідь на HTTP-запит, зручно для розробника. Але з точки зору безпеки це рішення мені завжди здавалося спірним, адже будь-який відвідувач вашого сайту може дізнатися про помилки в ваших програмах. А зловмисникові може виявитися досить дізнатися версію вашого PHP, щоб «зламати» ваш ресурс.

Одним словом, PHP «заточений» під Web-розробки краще, ніж Perl, але про це лезо дуже легко порізатися самому.

документація
Perl має власну систему документування та забезпечений прекрасної документацією англійською мовою.

PHP теж прекрасно документований. Перевагою документації PHP є те, що вона переведена на російську мову. До недоліків я б відніс її неосяжність.

якість коду
Звичайно, якість коду багато в чому Завіт від програміста, але і мова може диктувати розробнику певний стиль, або розхолоджувати.

Я не буду тут вдаватися в філософію, але людство вже десятки років назад усвідомило, що код і дані слід розділяти. Для цього знайдено безліч витончених рішень, від хедерів і конфігураційних файлів, до шаблонів і відокремлених сховищ даних. У цьому сенсі PHP представляється кроком назад; якимось старорождённим.

Але якщо відкласти філософію і подивитися на це з прикладної точки зору, то нічого хорошого ми теж не побачимо. Об'єднання HTML- і PHP-коду не покращує читабельність ні того, ні іншого. Відповідно, супровід, модернізація і модифікація програм теж не можуть.

Звичайно, цей мінус (на мій погляд) PHP починає відігравати суттєву роль, тільки якщо web-додаток досить розвинене, коду багато і розробники не винесли HTML-код в шаблони або НЕ відособили його якось інакше.

Але існують недоліки, «вбудовані» в саму мову.

Так само йде справа і з функціями, які повертають покажчики.

На мій погляд, це найбільший з тих недоліків PHP, які ніяк не можна обійти.

Разом
Універсального правильного рішення, що краще Perl або PHP, не існує. У кожному конкретному випадку вирішувати вам. Відповідь залежить і від масштабу ресурсу, і від амбіцій, планів і перспектив, і від конкретного хостера.

Я б радив вступати так:

• якщо ресурс не передбачає великого навантаження (особиста сторінка, сторінка невеликої фірми), то надійніше спертися на Perl і протокол CGI;
• якщо ресурс передбачає велику відвідуваність, але його бюджет сильно обмежений, то можна скористатися недорогим віртуальним хостингом і PHP-движком;
• якщо ресурс великий і ви плануєте підтримувати і розвивати його довгий час, то краще скористатися дорогим хостингом (власним північчю) і Perl під mod_perl. У цьому випадку ваш код буде працювати багато років. Ресурс буде рости, ви поставите більш потужний сервер, більш свіже ПО, а Perl-код не зажадає великих змін і буде продовжувати служити вам.

Це, природно, досить грубі рекомендації. Якщо ви сумніваєтеся - проконсультуйтеся з фахівцем.

Крім того, не треба забувати, що крім Perl і PHP є й інші засоби розробки.

Схожі статті