Сумрачный блог Кирилла Панфилова

Витязь на распутье: языки, фреймворки, «движки»

При создании структуры сайта с нуля можно избрать одну из трех дорог. Каждая по-своему привлекательна, и каждая таит свои недостатки.

Первый вариант наиболее сложен. Требуется очень хорошо знать один из серверных языков программирования (знание языков разметки предполагается как само собой разумеющееся), осознавать опасности от потенциальных злоумышленников, знать все типичные ошибки посетителей и тех, кто будет обновлять сайт, обрабатывать все случаи отказов сервера и прочие нештатные ситуации и, конечно, сделать так, чтобы сайтом было удобно пользоваться, самому программисту не потребовалось бы делать много рутинной работы, а при редизайне следующий разработчик смог бы легко разобраться в структуре сайта. Наиболее распространенные ныне серверные языки программирования — PHP, Perl, JSP (или Java Server Pages), ASP и ASP.NET (скорее технология, чем самостоятельный язык, как и простая технология SSI), менее распространены языки Parser, ColdFusion и некоторые другие.

Преимуществ такого подхода два. Во-первых, разработчик имеет полный контроль над собственным творением и знает, за что отвечает каждая строчка программного кода. Не приходится изначально изучать или разбираться в чужих программных решениях: требуется только знание возможностей языка, на котором пишется сайт. Во-вторых, с течением времени (а точнее, с каждым новым проектом) постепенно накапливаются собственные решения: специфическая файловая структура, библиотека кода для обращения к базам данных и для стандартной обработки пользовательских данных и т.п. Возникает желание стандартизировать такую структуру и использовать ее на всех последующих сайтах с минимальными изменениями. В этом случае практически стирается грань между первой и второй дорогами.

Второй путь, или использование фреймворков, удобен для тех, кто хорошо их знает. Фреймворк — это целостная библиотека кода на одном языке, которая позволяет не выполнять рутинную работу. Например, на языке PHP есть фреймворки Zend Framework, eZ Components, Symfony и некоторые другие; для Java (JSP) — Struts Framework и другие. Фреймворки обладают набором правил, которые позволяют использовать возможности серверных языков программирования, почти не работая с кодом на них: обращения к классам и функциям, переменным, циклам и массивам, запросы к БД берут на себя механизмы фреймворков, а разработчику нужно инициализировать эти действия по предусмотренным правилам. Плюс — увеличение скорости разработки. Минус — необходимость знания фреймворка. Кроме того, никто не мешает модифицировать код приложения и использовать дополнительные коды на любимом языке.

Наконец, третий путь предполагает либо отсутствие знания серверных языков программирования, либо отсутствие желания изобретать велосипед. То, что по-английски называется “engine”, в русском языке имеет пока только полужаргонное наименование «движок» (иначе — CMS, Content Management System). Это тоже набор сценариев, но, в отличие от фреймворка — конструктора и помощника по своей сути — движки представляют собой законченную среду. Движок можно установить на сервер (установка предполагает загрузку на сервер нескольких десятков файлов и запуск инсталляционной страницы), настроить по своему вкусу, выбрать один из готовых шаблонов дизайна или нарисовать свой (в этом случае обычно требуется значительная правка CSS-файлов) и начать пользоваться. Есть многоцелевые движки вроде Joomla или Typo3, а есть специально предназначенные для ведения блогов — WordPress, Textpattern или MovableType. Блоги в настоящее популярны до такой степени, что многие оформляют свои сайты в виде дневников или новостных лент, жертвуя при этом удобством традиционной иерархической структуры. Плюсы очевидны: языков серверного программирования можно вообще не знать (знание позволяет работать с движками более гибко), вся работа сводится к настройке средствами самого движка и наполнением сайта информацией. Минусы — разработчик ограничивает себя уже готовой структурой (впрочем, в ряде случаев достаточно гибкой) и вынужден устанавливать такое количество файлов, какое ему вряд ли понадобится для конкретного сайта.

Яндекс.Метрика