Сен 28 2008

Эссе о движках и фреймворках

Раздел: ВсякоеМета @ 21:13

Я уже писал заметку для новичков в CakePHP, но понимания отличий работы платформы (framework) от обычного движка у неофитов все равно не хватает. Поэтому я решил написать несколько небольших заметок именно по особенностям и отличиям движков от фреймворка.

С чего начинают новички изучение языка PHP в приложении к веб-сайтам? Как правило, с написания маленьких блоков, реализующих динамику в их страничках. Например, можно сделать на сайте гостевую книгу или простенький скрипт новостей. Обычно это все реализуется в виде спагетти-кода, где логика языка php перемешана в одном файле с html-разметкой. Чем больше разрастается сайт, чем больше на нем динамики, тем сложнее становится все это поддерживать.

Тут на выручку приходят движки. Хочешь гостевую книгу? Просто поставь здесь галочку. Хочешь новости? Еще одну галочку. Хорошие движки включают огромное количество стандартных модулей и еще больше — дополнительных, разработанных сообществом. Для большинства движков можно выбирать из тысяч тем оформления, и кажется что можно создать сайт на любой вкус. Продвинутый новичок начинает копаться в любимом движке, удивляясь продуманности структуры, универсальности и удобству. Особо мощные движки и вовсе избавляют от необходимости смотреть код — здесь все настраивается тысячами галочек, прямо как в Windows. А некоторые даже предлагают для изучения свой собственный мета-язык. Плодятся сущности, возрастает сложность, а сайты все как братья-близнецы. Уже опытный php-программист с одного взгляда опознает на каком движке тот или иной сайт сделан.

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

И тут на сцене появляются фреймворки — платформы для быстрой разработки. Родоначальником принято считать Ruby On Rails, хотя это и не совсем верно. CakePHP, которому посвящен весь этот блог, во многом копирует функционал Ruby On Rails. Суть идеи платформы заключается в том, что она не предоставляет готовых приложений как движки, а содержит набор функций, классов и генераторов кода для быстрой разработки под собственные нужды. Нужна форма из 35 полей — две команды и работает. На другой сайт нужна форма из 15 полей — ничуть не сложнее.

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

CakePHP — один из отличных примеров платформы для быстрой разработки, и изучение ее возможностей будет отличным вкладом в собственное будущее как хорошего программиста.

Теги: , ,

2 Responses to “Эссе о движках и фреймворках”

  1. Мамончик Александр says:

    Скажите, а не будет ли создание движка(ну или связного набора блоков, например блока меню, авторизации статистики и так далее)на ,к примеру CakePHP, изобретением велосипеда? Есть ли смысл создавать свои наработки и соединять их в движок?

  2. Мета says:

    Наборы блоков - это хлеб и масло любого веб-разработчика. Надо обязательно содержать, дополнять и регулярно обновлять коллекцию наработок. Но имхо на CakePHP движок изобретать - нет смысла. В интернете уже есть несколько подобных проектов, ни один не “живет”. Кейк применяется не для типовых сайтов - для этого есть как раз готовые движки, а для индивидуальных, специфических разработок. Не надо загонять самого себя в рамки.

Напиши комментарий!