Быстрая CMS
Обратная связь Карта сайта
Главная Создание сайтов Практика Строим CMS Наивное О проекте Блог

О «правильном» программировании

Наверное, по количеству догм и мифов программирование стоит на третьем месте после религии и SEO. :-) Еще одна общая черта: и в том и в другом избыток веры исключает сомнения и оттесняет разум в дальний угол. Для религии просто необходимо, чтобы верили и не сомневались, без этого ей никак. А для программирования? Можно ли считать полезным догматизм и отсутствие сомнений?

Да, я вновь о том же. Не раз и не два внимательные читатели задавали вопрос: «А почему не база данных, а файлы?». Наверное, пора ответить более развернуто на этот вопрос, да и на другие похожие.

Во-первых, совершенно незачем придираться к демонстрационной модели движка. Она показывает логику работы некой почти абстрактной системы. И те особенности ее работы, на которые нужно обратить внимание, чтобы движок был надежным и хорошо взаимодействовал с поисковиками. А это, сами понимаете, нисколько не зависит от места хранения данных. Если хочется, можете в центральном скрипте (и в новостной ленте) заменить чтение из файла на запрос к таблице в БД с той же структурой данных. И выгрузить результат запроса в массив. Все остальное будет работать так же, как работало. Изменений на три-четыре строчки кода, которые абсолютно не меняют логику работы движка.

Во-вторых, как вы думаете, почему я не езжу на автомобиле в магазин за хлебом? А потому, что магазин в этом же здании, за углом, быстрее пешком сходить, а парковку придется искать долго – в результате я только потеряю время и протопаю пешком еще больше. Намек понятен?

А теперь от намеков перейдем к открытому разговору на тему «каким должно быть правильное программирование». Ответы в изобилии встретятся в Паутине:

И только очень редко в отдельных местах, где логика еще не задавлена догмой, можно увидеть совсем простой ответ: «Рациональным». Вот этот ответ – наверное, моя единственная догма. Я не приверженец хранения данных в файлах во что бы то ни стало. Как и не сторонник базы данных везде и повсюду. Я вообще не играю в священные войны, поэтому на вопрос, за то я или за это, могу ответить только встречным вопросом: «дружище, а кто ты такой, чтобы лишать меня права выбора?». Согласитесь, заставляя меня выбирать между тем и этим, человек расчитывает, что выбор будет однозначным и окончательным. А мне такая позиция совсем неинтересна, я хочу делать свой выбор в каждой конкретной ситуации, а не абстрактно раз и навсегда.

Все хорошо на своем месте. Впрочем, это я уже, кажется, написал. А теперь немного разверну эту мысль.

Объектно-ориентированное программирование – хороший инструмент для группы разработчиков, делающих большой проект. Дает возможность распределить отдельные части задачи и потом состыковать результаты. Слона, как известно, нужно есть коллективно и мелкими частями, иначе легко подавиться. Но что пригодно для слона, не всегда годится для чего-нибудь другого. Там, где нужна высокая скорость и малая ресурсоемкость, ООП можно расшифровать как «Особо Опасное Преступление»: результат такой разработки всегда требователен к ресурсам и выполняет слишком много лишних «телодвижений», поэтому никогда не будет быстрым.

То же касается любимых фреймворков. Они страдают избыточной универсальностью, разработчики очень хотят, чтобы их детище подошло для всех целей сразу. И вот программист применил «прогрессивное» решение и запустил выполняться мегабайт кода для решения пустяковой задачи. Решить эту задачу часто можно коротким и быстрым скриптом, но его надо еще написать, а истинный «крестоносец» не ищет легких путей для сервера. Он ищет их для себя. Подобный подход очень напоминает сборку велосипеда из готовых паровозов. Чтобы не изобретать велосипед.

Позиция «все уже написано до нас» тоже широко известна и хорошо знакома. Недавно я применил для вполне приличного объема данных движок, аналогичный описанному здесь (он уже существует во множестве улучшенных вариантов). Эта конструкция ворочает 5 мегабайт только чистого текста, страниц на сайте сейчас 800, своими руками выставил лимит выделенной памяти для php в 2 мегабайта. Работает. Причем, работает быстро. И сидит это чудо на хостинг-аккаунте, где в дисковый лимит 300 мегабайт позволено втиснуть 5 сайтов, заплатив за всю эту роскошь 50 рублей в месяц. И разумеется, все 5 сайтов втиснуты. Ну, вы уже поняли – такие хостинги отнюдь не относятся к мощным. :-) Остается спросить, как будет себя чувствовать в этих условиях что-нибудь «уже написанное до нас», вроде Joomla. Или Drupal. О коммерческих монстрах лучше вовсе не говорить – под них некоторые хостеры делают специальные тарифные планы, время исполнения скриптов увеличивают до минуты, памяти выделяют немыслимое количество... В результате то и дело видим, как во всей этой роскоши десятки мегабайт скриптов медленно и вяло ворочают две дюжины страниц, содержание которых будет меняться раз в два года, так что лучше бы их попросту сверстать в статике.

Вообще тема сайта-визитки коммерческой фирмы – вопрос очень болезненный. Для фирмы, прежде всего. Согласитесь, можно только пожалеть людей, которым нахально впаривают ненужные возможности под видом необходимого. Вы со мной не согласны? – Тогда покажите мне форум на таком сайте, который был бы действительно кому-то нужен. Или блог. Или фотогалерею. Сколько сайтов создано на «потрясающе универсальных» движках, которые имеют все эти возможности? И на скольких сайтах эти возможности задействованы и востребованы?

Легкость в управлении сайтом. Да-да, именно тот самый рекламный миф «вам больше не нужен вебмастер, работать с нашей системой сможет кто угодно». В итоге люди сначала платят за тяжеленного монстра, потом за дорогой хостинг для него, далее за услуги квалифицированного программиста по установке и настройке... А потом никакого чуда не происходит, им приходится нанимать хорошего вебмастера, который ко всему еще и умел бы правильно обращаться с этой штуковиной. Потому что сами они просто не в состоянии разобраться, что к чему в этой мешанине настроек и опций с непонятными названиями. Результат зачастую обошелся бы в цену на порядок меньше и работал бы точно так же, только намного быстрее. Но реклама сделала свое дело – гора родила очередную мышь.

 

Ладно, заканчиваю брюзжать, на сегодня у меня намечена пересадка движка еще одной визитке. Очередной экземпляр широко разрекламированной «системы управления всем подряд» отправится в dev/null. А в сети вскоре появится еще один быстро и корректно работающий сайт. Это будет далеко не первый случай. И уверяю вас, не последний.