О стиле программирования
В последнее время все чаще можно услышать такие мнения: «PHP — это язык для домохозяек» или «PHP и веб-программирование не имеют ничего общего». Собственно причиной, которая побудила меня написать этот топик, как раз является ссылка на ЖЖ, промелькнувшая на хабре, где сравнивается Perl и PHP. Сравнение, естественно, не в пользу последнего.
Я решил разобраться откуда растут ноги у стереотипа: «PHP — недоязык, который нельзя воспринимать всерьез». Я считаю, что, во-первых, ПХП обязан этому мнению своим синтаксисом, который очень легок и прост в освоении. Это, в свою очередь, побуждает новичков, изучающих его, писать и публиковать свои первые скрипты, едва познав основные конструкции языка и не вникнув в общую философию программирования. Многочисленные статьи, которые в огромном изобилии присутствуют на просторах рунета, также диктуют несерезный подход к программированию. Итак, мы определили две главные проблемы.
Как же избавиться от этого? Как доказать (хотя бы самому себе), что PHP — это отличный язык программирования, позволяющий создавать настоящие, высоконагруженные, серьезные веб-приложения?
Начинать нужно с основ. Все статьи, типа «освой ПХП за 2 часа и напиши свою первую гостевую книгу» — зло. Зло, которое нужно искоренять. Проблема в том, что действительно полезных материалов, которые научат реальной методолологии программирования, а не тупому скриптингу, нету в природе. Многочисленные учебники (за редкими исключениями) также не дают этих знаний. Откуда новичок, начинающий изучение нового для себя языка, узнает, что хорошо, а что плохо? Откуда он узнает, что такое паттерны программирования, что такое MVC, фреймворки, грамотное проектирвоание и многое другое…
Слудуя статьям, публикуемых на сайтах про PHP, он узнает возможности языка, но не научится на нем писать. Повторюсь, что, наверное, во многом виноват синтаксис, который позволяет и прощает написание так называемого «быдлокода». Что же делать с этим? Посмотрим в сторону других языков, например, C++. Это, конечно, не очень уместное сравнение, но некоторые тенденции, присутствующие в этом языке, мы сможем перенять.
C++ не позволит нам написать сколько-нибудь сложную программу без предварительного проектирования. Библиотеки, заголовочные файлы, пространства имён — все это заставляет дисциплинированно и ответственно подходить к написанию кода.
А что же с нашим любимым PHP? Тут все очень просто: есть задача, которую можно выполнить разными способами, и зачастую выбирается самый простой и очевидный — задача решается «сходу». Т.е. кодер тупо садится и сразу начинает писать код, «как бог на душу положит». Никакого проектирования. Ничего. Разумеется это неправильно.
Итак, я предлагаю хабрасообществу поразмыслить на темы:
- Как сделать, чтобы PHP приобрел репутацию здорового, серьезного языка, чтоб его уважали также, как и Ruby или Python?
- Как недопустить деградацию новичков, которые начинают знакомство с PHP?