PHP

Материал из Циклопедии
Перейти к навигации Перейти к поиску
Сравнение PHP и Python

PHP (произносится как пи-эйч-пи, пэ-ха-пэ или пых-пых) — самый популярный на сегодняшний день язык программирования для Интернета, который используется на большинстве вебсерверов для создания сайтов. Именно на PHP написана «закулисная» часть большинства сайтов современного Веба[1]. Код на этом языке собирает те html-странички, которые получает из сети ваш браузер, когда вы нажимаете на гиперссылку или жмёте Enter после того, как ввели адрес сайта в адресную строку.

В числе прочего на PHP написан вики-движок MediaWiki, под управлением которого работает этот сайт.

Общественное мнение[править]

Противники PHP, коих немало, критикуют его, порой используя при этом такие слова, как «говнокод» и «быдлокодеры». В 2006 году некто Вадим Гончаров опубликовал в своём ЖЖ неплохую подборку подобных претензий, назвав её К вопросу об ублюдочности PHP (Статья написана с точки зрения Perl-программиста). Не всё, что там утверждается — верно, но это хороший свод претензий. Надо заметить, что с тех пор язык сильно изменился, и многое теперь не актуально. Но многое остаётся неизменным и в начале апреля 2012 года жаркие споры разгорелись вокруг современной статьи примерно аналогичного содержания с куда более изящным названием PHP: фрактал плохого дизайна[2] (тут автор уже Питонист).

Разумеется, как и а любой подобной критике, упоминаются возможности, отсутствующие в языке. Однако, если сравнить претензии образца 2006 и 2011 года, легко видеть, что язык в этом плане весьма быстро развивается и на сегодняшний день он в этом плане выглядит совсем не плохо. Гораздо хуже у PHP с отсутствием единства, если набор операций и функций «более других» языков представляет собой некую, имеющую внутреннюю логику, а потому запоминаемую систему, в PHP с такой системой куда хуже, и в справочник PHP-программисту приходится заглядывать чаще, чем разработчикам на других языках. Помимо этого в PHP имеется несколько унаследованных от первых версий особенностей, призванных облегчить программирование сайтов, но слишком уязвимых для хакеров. Хотя все такие не прошедшие проверку «упрощения» по умолчанию отключены и по мере обновления версий их постепенно убирают совсем, критики не забывают лишний раз показать пальцем на эти скелеты в шкафу. Ещё одна особенность PHP, порой ужасающая многих поклонников других языков — это «слишком универсальные» массивы. Если в большинстве языков программирования классические массивы с индексами-числами и ассоциативные массивы «хеши» со строковыми индексами — это разные типы данных, то в PHP эти, и ещё некоторые способы группировки данных объединены[3]. Это упрощает начальное изучение языка, хотя в более сложных случаях может потребовать от программиста понимания тонкостей работы с этим типом данных. К тому же он, вероятно, не слишком эффективен в плане используемой оперативной памяти[4].

На самом деле многие недостатки и достоинства языка — естественный результат его «биографии». Если почти за всеми остальными языками программирования ясно видны личности одного или нескольких создателей, это воплощение их представления о том, как должен выглядеть с их точки зрения идеальный (для какого-то класса задач) инструмент программиста, тут всё обстоит несколько по другому.

Создание PHP[править]

PHP, почти случайно, создал не слишком-то выдающийся программист Расмус Лердорф. Вначале он просто начал писать библиотеку html-шаблонов на Перлe для своего личного веб-сайта. Но компьютеры тогда были не слишком мощными[5], и производительность полученного продукта Лердофа не устроила. Он решил переписать всё это на Си. В результате в середине 90-х появился уже «почти настоящий» язык программирования PHP/FI[6] который позволял смешивать в одном и том же текстовом скрипте html-шаблон и программный код. Язык унаследовал многие особенности Perl’а. Он свободно распространялся под открытой лицензией, и начал постепенно завоёвывать популярность.

Затем это «побочное дитя программистской мысли»[7] подобрали два израильских разработчика: Энди Гутманс и Зив Сураски. Как вспоминает Зив, это снова произошло случайно. Столкнувшись с ошибкой в PHP-интерпретаторе Лердорфа, они заглянули в его исходный код, и он им «очень не понравился»[8]. Они взялись переписывать его, исправляя попутно ошибки, допущенные Расмусом в базовом дизайне языка. Спустя год после выпущенного Расмусом PHP/FI 2, Энди и Зив, при поддержки Лердорфа, опубликовали в 1998 году новую, третью версию PHP. А ещё спустя год они организовали компанию Zend Technologies Ltd. (название составлено из букв их имён: Zeev и Andу). Она занимается продажей коммерческих продуктов для хостинг-провайдеров и PHP-программистов, а так же сертификацией последних. При этом компания, во главе с Гутмансом и Сураски, продолжила разработку языка программирования PHP, как открытого программного продукта[9].

В выпущенный на момент открытия Zend Technologies 4-й версии языка (помимо зачаточной поддержки объектно-ориентированного программирования и целого ряда улучшений) появилась поддержка подключаемых модулей, написанных на Си, позволяющих расширять язык. Дальнейшее развитие языка нередко определялось тем, что один из разработчиков-волонтёров предлагал готовое к использованию решение, и нововведения в язык, фактически, вводились автором такого решения[10].

Таким образом, в языке PHP на практике воплотились концепции одного из идеологов open source — Эрика Рэймонда, который в своей книге «Собор и базар» противопоставлял разработке программного продукта по тщательно продуманному плану (строительству собора), базарный принцип — стихийную работу над ним заинтересованных добровольцев. В PHP мы видим базарный принцип почти в чистом виде. И несмотря на бросающееся в глаза отсутствие концептуального единства, заставляющее говорить критиков об «ублюдочности» и «фрактале плохого дизайна», именно этот язык стал самым популярным среди веб-программистов языков и по прежнему не сдаёт этих позиций, несмотря на конкуренцию более гармонично-сконструированных «собратьев», таких как Python или Ruby. Вероятно, именно благодаря «базарности», этому языку удаётся хорошо соответствовать ожиданиям множества веб-программистов.

Источники[править]

  1. В последнее время появились интересные альтернативы, но об этом — в конце
  2. Оригинал: PHP: a fractal of bad design, не законченный, но более тщательный перевод
  3. Впрочем, PHP в этом плане не уникален
  4. См. Насколько большие массивы (и значения) в PHP? (Подсказка: ОЧЕНЬ БОЛЬШИЕ)
  5. А идея компилирующего обработчика шаблонов, вроде Smarty ему в голову, видимо, не пришла
  6. Personal Home Page / Forms Interpreter — «Личная Домашняя Страница / Интерпретатор форм»
  7. В этом смысле в употреблении слова «ублюдочный» (если понимать его как перевод слова bastard) есть своя правда
  8. Т. Ратшиллер, Т. Геркен. PHP4: разработка Web-приложений, ИД «Питер» 2001, ISBN 5-318-00007-X. стр. 15-16, предисловие, написанное Зивом Сураски
  9. Позднее к списку открыто ПО от Zend добавился Zend Framework
  10. Именно так, к примеру, в языке появились пространства имён

Ссылки[править]

 
Используемые
в разработке

Ада A+ APL Atlast Forth AWL Язык ассемблера ActionScript ABAP/4 AutoIt AWK BeanShell Бейсик Си Кобол C++ C# Clarion Clojure ColdFusion Common Lisp D dBase Delphi DuAL Eiffel Erlang Euphoria F# Форт Фортран Gambas Go Groovy HAL/S Haskell IBM PL/S Icon IridiumJava JavaScript Limbo Lua Модула-3 Object Pascal Objective-C OCaml Oz Parser Паскаль Компонентный Паскаль Perl Pixilang PHP PowerBASIC Python ПЛ/1 Пролог Qi Ruby Scala Scheme Seed7 Smalltalk SQL PL/SQL Tcl TouchDesigner Vala Visual Basic (.NET) • X-Robot

Академические

Agda Clean Curry Idris Лого ML Оберон Planning C РЕФАЛ Симула

IEC 61131-3

Instruction List ST FBD Ladder Diagram (LD) • SFC

Прочие

Алгол Алгол 68 Модула-2 Миранда Hope НОРМИН Санда

Эзотерические

HQ9+/HQ9++ • INTERCAL Brainfuck Befunge Malbolge Piet Spoon Unlambda Whitespace FALSE LOLCODE Глагол

Визуальные

G (LabVIEW) • Microsoft VPL Sikuli VisSim Алиса ДРАКОН Скретч

Прочее

ДинамическиеКомпилируемыеС ключевыми словами не на английском языке С C-style синтаксисом СинтаксисYoptaScript

Категория Языки программирования