30 октября 2009 г.

Хороший, плохой, отвратительный

Эрик Рэймонд писал в своем блоге о проблемах форджей — системах хостинга программных проектов, вроде SourceForge, Gna!/Savane, GForge/FusionForge и прочих. Писал он про их проблемы, но я отвлекусь на другое.

В очередном своём посте, Эрик посмотрел на все эти системы чуть глубже. Что же он там увидел? А увидел он там PHP с SQL'ем и отвратительнейшей архитектурой. Казалось бы, уважаемые крупные проекты, у SourceForge даже деньги водятся, а такую фигню ляпают. Как так? Ведь известно, что хороший программист может писать хорошо на любом языке. Да и языки, вроде как, не бывают хорошими или плохими.

Считается, что PHP хорошо подходит для веб-разработки. Но так ли это? Возможно, лет 15 назад он хорошо подходил для этой цели, во всяком случае, гораздо лучше, чем что-то другое, имевшееся в то время. Но каков был веб в то время? Сайты состояли, в основном, из статических страничек, изредка попадались странички типа «простой отчет», сгенерированные по выборке из БД, да простенькие веб-формочки. Даже когда появился JavaScript, поначалу ситуация изменилась не слишком: ну присутствует в страничках еще какой-то текст (код JavaScript), ну выполняется он на стороне клиента — серверную часть это колыхало мало.

Тут пришел набивший уже всем оскомину AJAX. На самом деле, изменения произошли чуть раньше, но AJAX подлил немало маслица в огонь. Теперь серверная часть веб-приложения обрабатывает не один запрос на страничку, а десятки. API, выставляемый «наружу», стал на порядок больше и сложнее. Теперь веб-приложение — это довольно громоздкая штуковина, которую, как правило, нахрапом не наколбасишь. Веб-приложения стали более полноценными приложениями и требуют к себе не меньшего внимания, чем обычные клиент-серверные приложения, которые родились несколько раньше своей вебовской ипостаси. А вот тут уже выясняется, что есть языки, мало пригодные для создания приложений. Для небольших скриптов — пожалуйста, даже удобно, никаких лишних телодвижений, что надо, то сразу же и написал, но вот для чего-то большего… Можно, конечно, но слишком большой оверхед в самом процессе разработки. Без каких-либо плюсов, ибо все плюсы скриптовых языков кончаются на 5 000-й строке кода, а плюсы языков, предназначенных для больших проектов, тут только начинаются.

Так что, начать проект можно и на PHP/Perl/Python — быстрый старт и всё такое, но на 5 000–10 000 строк стоит задуматься о том, чтобы переделать проект с нуля, воспользовавшись инструментом, более соответствующим ситуации. Ибо дальше будет только хуже.