Где Вы проводите грань между библиотекой и фреймворком
От: FrozenHeart  
Дата: 22.10.14 09:47
Оценка:
Приветствую.

Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?

Заранее благодарю за возможные ответы.
avalon/1.0.434
Re: Где Вы проводите грань между библиотекой и фреймворком
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.10.14 09:49
Оценка: +2
Здравствуйте, FrozenHeart, Вы писали:

FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?


Библиотека выполняет одну функция, например cURL или libEvent. Ну а фрэймворк, по сути, это совокупность хорошо интегрированных между собой библиотек.
Re: Где Вы проводите грань между библиотекой и фреймворком
От: DarkEld3r  
Дата: 22.10.14 10:19
Оценка: +2
Здравствуйте, FrozenHeart, Вы писали:

FH>Вот, Qt и boost Вы как бы назвали, например?

Qt — фреймворк, boost — набор библиотек.

FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком?

Имхо, фреймворк более монолитный и сильнее навязывает определённые "правила". Скажем, в Qt без их MOC не обойтись. Плюс функции принимают именно их строки, списки и т.д. Да, они легко преобразуют из и в стандартные контейнеры, но апи работает именно с фреймворковскими. В бусте же большинство функций работает на итераторах.
Re: Где Вы проводите грань между библиотекой и фреймворком
От: Pzz Россия https://github.com/alexpevzner
Дата: 22.10.14 10:19
Оценка: +10
Здравствуйте, FrozenHeart, Вы писали:

FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?


Когда вы используете библиотеку, вы пишете свою программу, как вам удобно, и при необходимости используете библиотечный функционал. А когда вы используете фреймворк, то вы пишете так, как за вас авторы фреймворка придумали.

Как следствие, два разный фреймворка трудно скрестить в одном коде, если только это специально не предусмотренно.
Re: Где Вы проводите грань между библиотекой и фреймворком
От: Sharov Россия  
Дата: 22.10.14 10:23
Оценка:
Здравствуйте, FrozenHeart, Вы писали:

FH>Приветствую.


FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?


Для меня библиотека -- это что-то маленькое и законченное, т.е. plug&play. Фреймворк гораздо больше, в него можно "втыкать"
свои библиотеки, как вариант.
Кодом людям нужно помогать!
Re: Где Вы проводите грань между библиотекой и фреймворком
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 22.10.14 10:47
Оценка: 2 (2) +6
Здравствуйте, FrozenHeart, Вы писали:

FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?


Код вашего приложения вызывает код библиотеки (всякие коллбэки в расчет не берем); с фреймворком -- наоборот.
HgLab: Mercurial Server and Repository Management for Windows
Re[2]: Где Вы проводите грань между библиотекой и фреймворком
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.10.14 10:53
Оценка:
Здравствуйте, Нахлобуч, Вы писали:

Н>Код вашего приложения вызывает код библиотеки (всякие коллбэки в расчет не берем); с фреймворком -- наоборот.


Ну тогда BOOST – это библиотека. А такое утверждение мне видится сомнительным.
Re[3]: Где Вы проводите грань между библиотекой и фреймворком
От: Sharov Россия  
Дата: 22.10.14 11:11
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, Нахлобуч, Вы писали:


Н>>Код вашего приложения вызывает код библиотеки (всякие коллбэки в расчет не берем); с фреймворком -- наоборот.


KP>Ну тогда BOOST – это библиотека. А такое утверждение мне видится сомнительным.


Ни разу не плюсовик, но слышал, что это ОГРОМНАЯ библиотека.
Кодом людям нужно помогать!
Re: Где Вы проводите грань между библиотекой и фреймворком
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 22.10.14 13:51
Оценка:
Здравствуйте, FrozenHeart, Вы писали:

FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?


Вроде бы в Википедии:Фреймворк хорошо всё описали. Но если спросить меня, то:

1. Первый признак фреймворка это несколько физических модулей в одном архитектурном стиле идущим под одним общим названием. Грубо говоря из одного модуля можно легко использовать другой модуль без каких-то непредусмотренных извращений.

2. Второй признак это возможность создать дополнительные модули в том же самом архитектурном стиле, то есть фреймворки расширяемы.

Для меня Qt и Boost фреймворки. Модули Qt можно использовать совместно. Модули Boost можно использоваться совместно. А вот использование Qt и Boost вместе наложат на систему те самые извращения, о которых упоминал выше.

другое обсуждение
Автор: TYuD
Дата: 15.10.12
Re[3]: Где Вы проводите грань между библиотекой и фреймворком
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 22.10.14 15:28
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>Ну тогда BOOST – это библиотека. А такое утверждение мне видится сомнительным.


Дык даже на официальном сайте написано "Boost C++ Libraries". Но вот Unit Testing там таки Framework, поскольку код тестов вызывается извне, фреймворком.
HgLab: Mercurial Server and Repository Management for Windows
Re[4]: Где Вы проводите грань между библиотекой и фреймворком
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.10.14 17:00
Оценка: :)
Здравствуйте, Нахлобуч, Вы писали:

Н>Дык даже на официальном сайте написано "Boost C++ Libraries". Но вот Unit Testing там таки Framework, поскольку код тестов вызывается извне, фреймворков.


Ты же помнишь, сколько ему лет. Когда-то это действительно была библиотека, не переименовывать же его теперь.
Re: Где Вы проводите грань между библиотекой и фреймворком
От: QrystaL Украина  
Дата: 22.10.14 17:44
Оценка:
Здравствуйте, FrozenHeart, Вы писали:
FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком?

One important characteristic of a framework is that the methods defined by the user to tailor the framework will often be called from within the framework itself, rather than from the user's application code. The framework often plays the role of the main program in coordinating and sequencing application activity. This inversion of control gives frameworks the power to serve as extensible skeletons. The methods supplied by the user tailor the generic algorithms defined in the framework for a particular application.

Ralph Johnson and Brian Foote

http://martinfowler.com/bliki/InversionOfControl.html
Re: Где Вы проводите грань между библиотекой и фреймворком
От: vsb Казахстан  
Дата: 22.10.14 20:43
Оценка:
Здравствуйте, FrozenHeart, Вы писали:

FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?


Фреймворк заставляет писать код под его дудку. Тебе дают каркас и ты его обшиваешь своим кодом. Библиотека же просто даёт тебе нужные готовые инструменты. Грубо говоря — готовую дверь с косяком, которую надо только вставить в проём и она будет работать.

Qt это однозначно фреймворк. Он даже сборку кода диктует.

boost это сборище разных библиотек, насколько я помню. Они решают маленькие чёткие задачи и не требуеют от тебя какой-то определённой архитектуры. Возможно некоторые части буста можно считать фреймворками, типа boost.asio.
Re[3]: Где Вы проводите грань между библиотекой и фреймворком
От: jazzer Россия Skype: enerjazzer
Дата: 23.10.14 01:50
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, Нахлобуч, Вы писали:


Н>>Код вашего приложения вызывает код библиотеки (всякие коллбэки в расчет не берем); с фреймворком -- наоборот.


KP>Ну тогда BOOST – это библиотека. А такое утверждение мне видится сомнительным.


Такая же библиотека, как CPAN и прочая. Это склад библиотек. Разной степени интегрированности друг с другом.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Где Вы проводите грань между библиотекой и фреймворком
От: jazzer Россия Skype: enerjazzer
Дата: 23.10.14 01:53
Оценка: +3
Здравствуйте, FrozenHeart, Вы писали:

FH>Приветствую.


FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?


FH>Заранее благодарю за возможные ответы.


"фреймворк" — это по-русски "каркас" (каркас приложения, в данном случае). Вот отсюда и пляши.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Где Вы проводите грань между библиотекой и фреймворком
От: pestis  
Дата: 23.10.14 04:29
Оценка: -1
Здравствуйте, FrozenHeart, Вы писали:

FH>Приветствую.


FH>Скажите, пожалуйста, где Вы проводите грань между библиотекой и фреймворком? Вот, Qt и boost Вы как бы назвали, например?


Фреймворк навязывает тебе идеологию, архитектуру и даже способ кодирования. Библиотека не навязывает. Пользоваться объектной библиотекой в функциональном или империативном стиле несложно, пользоваться же объектным фреймворком в функциональном стиле невозможно.

Qt и boost это безусловной фреймворки. Qt навязывает архитектуру приложения, boost навязывает идеологию и способ кодирования вплоть до того как называть переменные. Вот OpenCV хоть и сложнее чем Boost и Qt вместе взятые, это чистая библиотека.
Re[2]: Где Вы проводите грань между библиотекой и фреймворком
От: enji  
Дата: 24.10.14 11:12
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Qt ... даже сборку кода диктует.

С чего вдруг? Там есть собственная утилита для сборки, но ты можешь ее не использовать. Собственно я не использую.
Re[3]: Где Вы проводите грань между библиотекой и фреймворком
От: vsb Казахстан  
Дата: 24.10.14 11:16
Оценка:
Здравствуйте, enji, Вы писали:

vsb>>Qt ... даже сборку кода диктует.

E>С чего вдруг? Там есть собственная утилита для сборки, но ты можешь ее не использовать. Собственно я не использую.

Когда я смотрел на Qt последний раз, там был свой препроцессор MOC, который нужно было использовать, чтобы всё работало. Сейчас не так?
Re[2]: Где Вы проводите грань между библиотекой и фреймворком
От: DarkEld3r  
Дата: 24.10.14 11:47
Оценка: +2
Здравствуйте, pestis, Вы писали:

P>boost навязывает идеологию и способ кодирования вплоть до того как называть переменные.

Это ещё с какой стати? Особенно про стиль именования интересно.

Ну и стандартные библиотеки языка обычно в одном стиле написаны. Они тоже что-то навязывают и являются фреймворками?
Re[5]: Где Вы проводите грань между библиотекой и фреймворком
От: jazzer Россия Skype: enerjazzer
Дата: 26.10.14 18:29
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, Нахлобуч, Вы писали:


Н>>Дык даже на официальном сайте написано "Boost C++ Libraries". Но вот Unit Testing там таки Framework, поскольку код тестов вызывается извне, фреймворков.


KP>Ты же помнишь, сколько ему лет. Когда-то это действительно была библиотека, не переименовывать же его теперь.


Так уже переименовали: Libraries
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.