Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB5.docx
Скачиваний:
5
Добавлен:
22.11.2018
Размер:
478.15 Кб
Скачать

2.4. Критика языка.

Несогласованный синтаксис функций и неортогональность

PHP предоставляет разработчикам большое количество самых разнообразных функций, которые попали в язык из расширений, создаваемых разными группами программистов. В результате синтаксис языка не согласован, например, часть функций для работы с массивами начинается с префикс array_, другая часть этим префиксом не обладает. Названия части строковых функций начинается с префикса str, другие функции таким префиксом не обладают. В тех же строковых функциях обрабатываемая строка может передаваться как в качестве первого, так и в качестве последнего аргумента, что вызывает путаницу у программистов, и, следовательно, требует постоянного обращения к документации. Некоторые задачи, например, разбиение строки на массив или подстроки, решаются несколькими функциями.

Другая причина отсутствия ортогональности в PHP заключается в особенностях появления этого языка на свет. В отличие от подавляющего большинства остальных языков программирования, PHP не был изначально задуман как полноценный язык программирования, а постепенно вырос изшаблонизатора для Perl. Это привело как к появлению в первоначальном варианте языка некоторых спорных решений (от которых планируется избавиться в 6-й версии), так и к отсутствию контроля со стороны создателя языка, который бы следил за стройностью его архитектуры.

Отсутствие обратной совместимости между версиями языка

Код, созданный для более ранних версий языка, зачастую не работает или работает некорректно с более поздними версиями языка[37]. В более поздних версиях исключаются конструкции, методики, функции, применявшиеся ранее. В результате, приложения, созданные несколько лет назад, практически теряют работоспособность для современных версий языка и требуют значительной модификации. Такие изменения обусловлены двумя факторами: устранением несогласованного синтаксиса и устранением конструкций, поощряющих создание небезопасного кода.

В новых версиях линейки 5.3.x большое количество функций было признано устаревшими, их поддержка не планируется в новых версиях языка[38], что вызывает несовместимость со скриптами, которые используют устаревшие функции. Также для версии 5.3 на данный момент отсутствует программное обеспечение Zend Optimizer. Однако разработчики планировали выпустить его в 2010 году [

Надо отметить, что противоречие между обратной совместимостью и процессом развития — одна из ключевых проблем в разработке программного и аппаратного обеспечения. При работе над скриптовыми языками время от времени происходит резкая смена его архитектуры (а порой и парадигмы), обычно сопровождающаяся сменной первой цифры в номере версии. Так, в настоящее время идёт постепенный переход на новую ветвь языка Python — 3.x, в стадии тестирования находится Perl 6, являющийся, по сути, новым perl-подобным языком. При этом принято выпускать переходные версии, в которых постепенно вводятся новые конструкции, а использование устаревших вызывает вывод предупреждений. К таким переходным версиям относится и PHP 5.3.

Отсутствие поддержки многобайтовых кодировок в ядре языка

Таблица 2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]