Библиотеки vs. Framework

Bermuda

Новичок
Библиотеки vs. Framework

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

Framework диктует определенную архитектуру приложения и обязывает писать код под себя. Он определяет общую структуру, ее разделение на классы и объекты, основные функции тех и других, методы взаимодействия объектов и классов. Все это обеспечивается фрэймворком, что позволяет разработчику сконцентрироваться на самом приложении. Акцент делается на повторном использовании дизайна, а не кода.

Минус фрэймворка виден сразу -- для работы с ним, требуется предварительно изучить его. Т. е. незнакомый с фрэймворком человек при отстутсвии документации будет долго и мрачно его дебажить, чтобы поправить детскую ошибку в приложении.

Плюс фрэймворка чувствуется на "конвеерных" производствах. Делается некоторое стандартное приложение, потом "обрабатывается напильником" под клиента. Дальнейшее сопровождение нескольких разных проектов облегчается благодаря схожей структуре.

Какие еще плюсы и минусы?
 

Rammstein

PHPClub::News
Вопрос на засыпку: Zend Framework - это Framework?

Минус фрэймворка виден сразу -- для работы с ним, требуется предварительно изучить его.
Интересно было бы попробовать Smarty без документации. Или (гениально!) Smarty - это Framework?
 

andry

Новичок
Все зависит от задач. На некоторых задачах использование фреймворков неоправдано, на других must be!
 

Bermuda

Новичок
Автор оригинала: Rammstein
Вопрос на засыпку: Zend Framework - это Framework?
В том-то и дело, что не тянет он на Framework. Так, набор классов.

Интересно было бы попробовать Smarty без документации
А в чем проблема?
Делая допущение, что синтаксис шаблонов это некий документированный стандарт, не вижу проблем посмотреть какие свойства имеет класс и какие методы предоставляет.
т. е. можно рассматривать Smarty как библиотеку предоставляющую средства для работы с шаблонами.
 

Rammstein

PHPClub::News
Bermuda
Как не фреймворк? Но он же структурирует MVC?

Я бы долго смеялся, как ты без документации будешь использовать САМ КЛАСС. Я тебе о шаблонах ещё не говорил :)
 

Bermuda

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

Solid

Drosera anglica
Framework на то и есть, что б быть достаточно гибким. Это не CMS, где всё запутанно и зависит друг от друга, как человеческие части тела. Framework - это структурная наработка, для дальнейшей более быстрой разработки ПО.
 

whirlwind

TDD infected, paranoid
Framework диктует определенную архитектуру приложения и обязывает писать код под себя.
Это неправильный фреймворк. Это CMS. Нормальный фрейморк сводится до набора классов, совокупность которых позволяет решать задачи определенного рода. Если разложить фреймворк по специфическим функциям, то получится набор библиотек. Грубо говоря, в MVC-ФВ можно реализовать свое M, V или C, при том, что среди классов ФВ есть готовые их реализации.
 

Alexandre

PHPПенсионер
Нормальный фрейморк сводится до набора классов, совокупность которых позволяет решать задачи определенного рода.
+1
Framework — программный каркас. Отличается от библиотеки (library) тем, что выполняет код написанный для него, а не исполняется сам. Пример программного каркаса CMF (Content Management Framework), а пример библиотеки модуль email. Также в отличие от библиотеки, которая объединяет в себе набор близкой функциональности, framework содержит в себе большое число разных по тематике библиотек.
Получается, что фрейморк сводится до набора библиотек.
А если подстраиваться под структуру - это уже CMS.
 

zerkms

TDD infected
Команда форума
хм... к чему такие придирки к терминологии то? статус набора файлов что-то изменит. будь то фреймворк, библиотека или просто никак не организованный, сваленные в кучу файлы
важно что? правильно - чтобы удобно было работать
 

atv

Новичок
важно что? правильно - чтобы удобно было работать
Удобство - это субъективная оценка, на основе которой возникает куча споров. Поэтому и нужны "придирки к терминологии", которые позволяют выделить объективные различия, на основе которых можно уже вести дискуссию.
 

Alexandre

PHPПенсионер
atv ну ты - филосов, но я согласен, нужны четкие определения в терминогогии.
 

Bermuda

Новичок
Solid, atv, whirlwind
Я не спрашивал что такое фрэймворк.
Автор оригинала: whirlwind
Это неправильный фреймворк. Это CMS. Нормальный фрейморк сводится до набора классов, совокупность которых позволяет решать задачи определенного рода.
Вы сказали полную чушь. Далеко за определениями фрэймворка ходить не будем. Также можете поупражняться сами.
Если разложить фрэймворк по специфическим функциям, то получится набор библиотек.
Ага, а если в свою очередь разложить библиотеки, то получим язык программирования, который в свою очередь расскладывается..., ну вы поняли, да?
Следую вашей логике панельный дом представляет собой не более чем химическую реакцию воды с цементом, куда подмешаны песок, камни и арматура. И вообще, никакой это не дом, в случае землятресения он расскладывается на простые панели.
whirlwind
Есть фрэймворки которые предоставляют настолько полный набор средств, что от php остается только синтаксис. Именно это и имеется в виду, когда говорится, что фрэймворк обязывает писать код удовлетворяющий его структуре.
 

zerkms

TDD infected
Команда форума
Удобство - это субъективная оценка, на основе которой возникает куча споров
при чём тут споры - мне важно что удобно для меня а не для тебя. и уж тем более убеждать, что то, что использую я, удобнее чем то, что используешь ты я не буду ;)

ps: под фреймворком понимаю именно каркас, предоставляющий кучу разных сервисов, облегчающих жизнь. при этом допускаю чтобы фреймворк навязывал свою стилистику во благо
 

atv

Новичок
Именно это и имеется в виду, когда говорится, что фрэймворк обязывает писать код удовлетворяющий его структуре.
Чтобы так утверждать, нужно иметь чёткое представление что такое фрэймворк. Именно поэтому дискуссия и перешла к определению того, что такое фрэймворк, хоть ты и не спрашивал об этом.


при чём тут споры - мне важно что удобно для меня а не для тебя.
Постой, постой. Ты выдвинул критерий оценки - удобство, как аргумент на "придирки к терминологии", т.е о чём вы тут говорите, когда можно просто оценивать с помощью удобства. Так ведь? Я выдвинул контраргумент - удобство, это субъективная оценка.

Другое дело, что мы вообще не в тему топика :)
 

zerkms

TDD infected
Команда форума
atv
совершенно верно. удобство субъективно, этого я не отрицал
 

Bermuda

Новичок
Автор оригинала: atv
Именно поэтому дискуссия и перешла к определению того, что такое фрэймворк, хоть ты и не спрашивал об этом.
Предпологается, что минимальным условием того, что человек может высказывать свои мысли по заданной теме, это понимание терминов упортребляемых в ней. Это оказалось неочевидным, виноват.
А это хорошая идея, перед тем как начинать тему, давать определения ключевым понятиям которые в ней используются. Так и вижу в начале темы "под ххххх будем понимать ууууу обладающий следующими свойствами ..." :)
 

zerkms

TDD infected
Команда форума
Bermuda
термин фреймворка имхо чрезвычайно скользкий, чтобы какой-то продукт однозначно подводить под него
 
Сверху