PHP и все-все-все

Ответ на полный off-topic в ветке по CakePHP.

При разработке сколько-нибудь серьезного сайта (как и при написании любой софтины) выбор языка и фреймворка является очень важным. От этого зависит скорость создания и работы сайта, сложность сопровождения, стабильность, переносимость и прочее-прочее. Желательно, чтобы язык был мощным, лаконичным и непротиворечивым. От фреймворка, в принципе требуется то же, плюс хорошая заточка под спец-нужды (в нашем случае работа с http/html/db, удобное развертывание). При этом зачастую, но не всегда, «хороший» язык позволяет писать «хороший» фреймворк, отчего выгоды при разработке еще больше увеличиваются.


Если с этими критериями подойти к PHP, то хорошее в нем только одно — так исторически сложилось, что PHP есть везде, причем либо в виде mod_php, либо через FastCGI. То есть купив говнохостинг за $1/month можно ожидать, что твоя поделка на PHP худо-бедно, но заработает.

По всем остальным параметрам PHP можно характеризовать в широком диапазоне от «ужас» до «ужас-ужас». Язык убог, толком не поддерживает ни объектную, ни функциональную парадигму, работа с типами сделана из рук вон плохо, идиотские области видимости переменных, рантайм в виде помойки из мильона разнобойных функций в едином namespace, php.ini-dist + php.ini-paranoid + php.ini-recommended и т.д. и т.п.

PHP родился, как продвинутый SSI и в этом режиме использования очень даже хорош, но, к сожалению, разработчику этого показалось мало и он начал бессистемно развивать свое детище путем проб и ошибок. Я пишу на PHP с 1997 года (еще с версии PHP/FI 2.0), наблюдал это все своими глазами и прочувствовал на собственной шкуре :-(

Теперь о фреймворках. PHP часто преподносится как «заточенный под веб». Да, это так, но заточка, как и всё в PHP, сделана криво, вкось и совсем не та, которая нужна при разработке чего-то отличного от трехстраничного сайта. Что говорить, если правильная возможность сделать http redirect появилась только в PHP5. Неудивительно, что разработчики стали лабать веб-фреймворки для «веб-ориентированного языка» (масло масляное, да?)

Сначала народ просто писал отдельные компоненты типа ORM и шаблонных движков (что тоже странно — шаблонный движок для языка, который сам по себе шаблонный), фреймворки появлялись внутри каких-то больших проектов (как в Drupal'е), но потом выскочил черт из табакерки в виде Ruby-on-Rails и самостоятельные PHP-фрейморки стали появляться как грибы после дождя.

Все захотели уйти от убогого рантайма, да не тут-то было. RoR, Django, Catalist и прочие не-PHP фреймворки основаны на удобных особенностях используемых языков (в ruby, python и perl таких особенностей много). А вот в языке PHP ничего интересного и удобного нет. В итоге фреймворки получились средненькими, я бы даже сказал, унылыми.

На текущий момент мое мнение такое — если очень надо, то на PHP можно делать небольшие сайты. Самописный front controller, голый SQL для базы и ob_get_contents для шаблонов. Получается старомодно, аскетично, но вполне работоспособно. Нервы, потраченные в процессе, можно восстанавливать в туалете чтением «Похождений бравого солдата Швейка».

Фигассе меня прорвало :-)

Все вышенаписанное — мое личное нескромное мнение, высосанное из пальца. Возможно я где-то и в чем-то (везде и во всем) заблуждаюсь. Опровергайте.

P.S. Если оторваться от технических вопросов, то у PHP есть еще одна огромная проблема — люди. Куча плохих книжек про PHP родила море программистов-неофитов, которые пишут очень-очень-очень плохой код. И такого кода на PHP — 99% :-(

Ну и пара реплик по поводу исходного поста:

— google/amazon/livejournal/yandex — это большие компании с кучей проектов разной связности. Когда я писал, что google использует c++/java/python, то это не значит, что все эти языки нужны для показа страницы www.google.com.

— Морду сайта amazon, наверное, можно написать на PHP. Но это ведь 1% от того, что задействовано при продаже книги.

— Тема Лебедев не делал yandex. Он только рисовал дизайн.

— Java в вебе сейчас используется не для applets, а для работы на серверах. То есть если ты зайдешь на www.sun.com, то браузер у тебя ничего не спросит про жабу, но страница будет отрендерена именно ей.

— Я не знаю, что будет с perl'ом. Возможно, что perl6 все-таки выйдет и на что-то повлияет. Кстати, я не уверен, что он ушел. В любом случае, если с perl'а добровольно и уходят, то не на php, а на ruby/python. С мерседесов на запорожцы не пересаживаются. Про «вебовский язык» см. выше.

— «Заостряться» на выборе инструмента надо. Это один из ключевых моментов в процессе разработки. Это большая тема и, если хочется, то можно об этом поговорить отдельно.

— Не-PHP языки/фреймворки — это тоже большая тема для отдельного большого поста :-)

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.