The Joel on Software Discussion Group - Why I Hate Framework
От: Павел Кузнецов  
Дата: 06.02.06 11:41
Оценка: 44 (6) :)))
The Joel on Software Discussion Group — Why I Hate Frameworks
Posted via RSDN NNTP Server 2.0
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re: The Joel on Software Discussion Group - Why I Hate Frame
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 06.02.06 13:05
Оценка:
Отличная статься, но.

Мне кажется, рассуждения автора (о молотке сотоварищи) совсем не о framework'ах, а о том, что принято называть выражениями overengineering и design overkill (не могу подобрать подходящих русских аналогов).

Далее в обсуждении:

The distinction between a library and a framework is subtle, but I think critical. A library is a collection of code that I don't have to write myself. It provides me with a set of objects and methods that I can use to build me application. If the library doesn't do quite what I want, I can make some small modifications or throw it away and use a different library.

A framework, on the other hand, always attempts to redefine the entire applilcation architecture. And, if the framework ends up not meeting my needs, I need to throw away my entire application, because everything I've written is defined in terms of the framework's methodology.

A library is something *contained* within my code.

A framework is a *container* for my application.


Из этих высказываний совсем неочевидно, что framework — Плохая Вещь.
Что плохого в "навязывании архитектуры", если эта архитектура хорошо проецируется на предметную область?

Может, автора огорчает немного другое?

Why is it so difficult to find simple libraries that provide these kinds of services?


См. выделенное. Думаю, беда в том что frameworks редко бывают простыми и легкими (по крайней мере, я не встречал ).

Получается, "framework" становится синонимом "overkilled" и "overengineered"

Но почему? На первый взгляд кажется, что причина в следующем: для того, чтобы быть "контейнером" для приложения, framework должен обладать обладать
Но, очевидно, точно такие же проблемы имеют обычные библиотеки (libraries), которые простыми и легкими бывают.

Вообщем, есть о чем задуматься
Re[2]: The Joel on Software Discussion Group - Why I Hate Fr
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 06.02.06 13:18
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>См. выделенное. Думаю, беда в том что frameworks редко бывают простыми и легкими (по крайней мере, я не встречал ).


Поздравляю, гражданин, соврамши!
Unit Test Framework из Boost.Test, к примеру.

Простой? Проще некуда. Framework? Типа того.

[offtopic]
P.S. Павел, у вас на сайте (например, здесь) написано, что команда использует помимо прочего number of frameworks.
Если не коммерческая тайна — можешь привести пример используемых framework'ов на C++?
[/offtopic]
Re[3]: The Joel on Software Discussion Group - Why I Hate Fr
От: kan_izh Великобритания  
Дата: 06.02.06 13:59
Оценка:
Alxndr wrote:
> Если не коммерческая тайна — можешь привести пример используемых
> framework'ов на C++?
MFC
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: The Joel on Software Discussion Group - Why I Hate Fr
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 06.02.06 14:05
Оценка:
Здравствуйте, kan_izh, Вы писали:

_>Alxndr wrote:

>> Если не коммерческая тайна — можешь привести пример используемых
>> framework'ов на C++?
_>MFC

Я, видимо, недостаточно ясно выразился
Имелись в виду frameworks, используемые в MetaCommunications

А MFC — да, хороший пример того, за что можно ненавидеть framework'и
Re[2]: The Joel on Software Discussion Group - Why I Hate Fr
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 06.02.06 14:19
Оценка: +1
Здравствуйте, Alxndr, Вы писали:

A>Отличная статься, но.


A>Но почему? На первый взгляд кажется, что причина в следующем: для того, чтобы быть "контейнером" для приложения, framework должен обладать обладать

A>
+1
Получается, что фреймворк навязываает правила приложению.
И приложению, для чтобы иметь возможность работать в контейнере фреймворка, нужно следовать этим правилам.
Иначе оно "не в танке".
-- Андрей
Re[2]: The Joel on Software Discussion Group - Why I Hate Fr
От: Павел Кузнецов  
Дата: 06.02.06 14:28
Оценка: 2 (1) +2
Alxndr,

>

> framework, on the other hand, always attempts to redefine the entire applilcation architecture. And, if the framework ends up not meeting my needs, I need to throw away my entire application, because everything I've written is defined in terms of the framework's methodology.


> Из этих высказываний совсем неочевидно, что framework — Плохая Вещь.

> Что плохого в "навязывании архитектуры", если эта архитектура хорошо проецируется на предметную область?

По крайней мере, позиция автора, вроде, ясна, если смотреть на выделенное выше.

> Думаю, беда в том что frameworks редко бывают простыми и легкими (по крайней мере, я не встречал ).

> Получается, "framework" становится синонимом "overkilled" и "overengineered"
> Но почему?

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

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

Другой проблемой frameworks является большая сложность/невозможность совместного использования нескольких из них. В случае библиотек (почти?) всегда можно как-нибудь выкрутиться, в крайнем случае изолировав их в разных модулях, и снабдив своими переходниками.
Posted via RSDN NNTP Server 2.0
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: The Joel on Software Discussion Group - Why I Hate Fr
От: Павел Кузнецов  
Дата: 06.02.06 14:36
Оценка: 2 (1)
Alxndr,

> P.S. Павел, у вас на сайте (например, здесь) написано, что команда использует помимо прочего number of frameworks. Если не коммерческая тайна — можешь привести пример используемых framework'ов на C++?


Number of proprietary frameworks. Очевидно, их в качестве примера привести будет сложно, придется описывать. Из сторонних же, пожалуй, можно упомянуть MFC, которую, правда, мы используем в режиме библиотеки, а не framework, для реализации некоторых окошек в старом коде, и существенно переработанную версию MacApp, которая тоже осталась от "старых времен", которую мы не слишком любим, но от которой теперь очень нелегко отказаться, как это обычно и происходит с frameworks...
Posted via RSDN NNTP Server 2.0
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: The Joel on Software Discussion Group - Why I Hate Fr
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.02.06 14:36
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>См. выделенное. Думаю, беда в том что frameworks редко бывают простыми и легкими (по крайней мере, я не встречал ).


Ну вот, не буду скромным
Автор: Евгений Охотников
Дата: 30.12.05
.
Для решаемых им задач на самом деле не сложный и легкий (его собственный код всего ~40000 физических строк, остальное -- это сопутсвующие библиотеки). Хотя сейчас и очевидно, что можно было бы еще проще.

Еще Ruby On Rails не самый тяжелый и сложный, как мне показалось. Да еще и состоит из относительно независимых библиотек (ActiveRecord, ActionPack, ActionMailer и др.), которые можно использовать отдельно (ActiveRecord использовал сам).


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: The Joel on Software Discussion Group - Why I Hate Frame
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.02.06 15:03
Оценка: -2 :))) :))) :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>The Joel on Software Discussion Group &mdash; Why I Hate Frameworks


Я вот думаю не читать на этот раз Джоэля. А то в прошлый раз после прочтения пол дны отмывал монитор. Хотя конечно можно распечатать...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: The Joel on Software Discussion Group - Why I Hate Fr
От: Павел Кузнецов  
Дата: 06.02.06 15:40
Оценка:
Здравствуйте, VladD2, Вы писали:

ПК>>The Joel on Software <b>Discussion Group</b> &mdash; Why I Hate Frameworks


VD>Я вот думаю не читать на этот раз Джоэля. А то в прошлый раз после прочтения пол дны отмывал монитор. Хотя конечно можно распечатать...


Ох... Как же ты бываешь быстр в суждениях Это и не Джоэл вовсе. Просто сообщение в его форуме (см. выделенное выше).
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: The Joel on Software Discussion Group - Why I Hate Fr
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.02.06 15:56
Оценка: :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Ох... Как же ты бываешь быстр в суждениях Это и не Джоэл вовсе. Просто сообщение в его форуме (см. выделенное выше).


Хм. Да там еще и люди водятся?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: The Joel on Software Discussion Group - Why I Hate Fr
От: kwas Россия  
Дата: 06.02.06 16:16
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>Думаю, беда в том что frameworks редко бывают простыми и легкими (по крайней мере, я не встречал ).


ИМХО, frameworks стоит делить не на простые и сложные, а на хорошо и плохо спроектированные Вот ACE — сложный, но хорошо спроектированный framework. Несмотря на всю свою монструозность, он позволяет пользоваться его составляющими как отдельными библиотеками. Более того, его разработчики в скором будущем собираются физически разбить ace.lib на несколько библиотек меньшего размера.
If a shark stops swimming, it will die. Don't stop swimming, Mr. Mulder.
Every epic equalizer is iso (c)
Re[3]: The Joel on Software Discussion Group - Why I Hate Fr
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 06.02.06 16:27
Оценка:
Здравствуйте, kwas, Вы писали:

K>Более того, его разработчики в скором будущем собираются физически разбить ace.lib на несколько библиотек меньшего размера.


Во-во. Ключевое слово выделено
Re[4]: The Joel on Software Discussion Group - Why I Hate Fr
От: kwas Россия  
Дата: 06.02.06 16:33
Оценка:
Здравствуйте, Alxndr, Вы писали:

K>>Более того, его разработчики в скором будущем собираются физически разбить ace.lib на несколько библиотек меньшего размера.


A>Во-во. Ключевое слово выделено


Это неправильное ключевое слово Правильное — "физически"
If a shark stops swimming, it will die. Don't stop swimming, Mr. Mulder.
Every epic equalizer is iso (c)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.