Здравствуйте, QrystaL, Вы писали:
QL>Насколько АОП развито/популярно/стоящее для изучения?
Развито — не особо: множество различных интерпретаций этого понятия, множество библиотек с разными подходами, далеко не все следуют стандартам (AOP Alliance).
Основных способов реализации — 2: построение динамической прокси средствами кодогенерации (Castle Framework, Spring.NET, BLT)
и постпроцессингом
(когда код аспектов внедряется в процессе компиляции — PostShap, AspectSharp, т.п.). У обоих способов есть достоинства и недостатки.
Популярно — тоже не особо. Многие вообще не знают, что это такое, многие не осознают всех преимуществ AOP,
многих смущает, что аспекты невидимы и бизнес-код, к которому они прикреплены, ведет себя "непредсказуемо".
Стоящее — однозначно! Бизнес-код, использующий АОР, обретает потрясающую гибкость и простоту восприятия.
Правда, при отладке кода с аспектами можно попортить здоровье
На опушке за околицей мужики строили коровник.
Работали споро и весело. Получалось х**во.
за .NET сказать не могу,
QL>Насколько АОП развито/популярно/стоящее для изучения?
но в мире java достаточно развито (мне известны, как минимум, 3 имплементации), популярно, как минимум, в среде фреймворков и аппсерверов (хотя лично мне доводилось и в прикладной задаче использовать аспекты, уж очень подходили к задаче)
стоит — однозначно, да, это один из приёмов повторного использования кода, применимый без концепций интерфейсов или иерархий классов, что в некоторых случаях помогает сократить или убрать совсем copy-paste
Хорошо развито. Есть специальные компиляторы для Явы, например.
QL>популярно/
Скажем так, очень популярно в очень узких кругах.
QL>стоящее для изучения?
Изучать стоит все на что хватит времени. С АОП как минимум стоит ознакомиться.
Как практическая технология мне она не кажется перспективной. Слишком уж она узко-специализированна.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, x-code, Вы писали:
QL>>Насколько АОП развито/популярно/стоящее для изучения?
XC>Расскажите хоть что это такое А еще лучше — напишите в rsdn хорошую большую статью по сабжу.
> Изучать стоит все на что хватит времени. С АОП как минимум стоит ознакомиться.
Согласен
> Как практическая технология мне она не кажется перспективной. Слишком уж она узко-специализированна.
Не согласен — в чем ее "узко-специализированность"? Это технология очень
широкого спектра применения: безопасность, профайлинг, управление
транзакциями.
В целом считаю, что впечатления от изучения и применения AOP полностью
упираются в качество и способ ее реализации. Надеюсь, когда-нибудь
дождемся полной поддержки AOP в компиляторах.
Здравствуйте, QrystaL, Вы писали:
QL>Насколько АОП развито/популярно/стоящее для изучения?
Первое, что следует понимать — несмотря на претенциозность названия, АОП это не парадигма, а просто такой паттерн. И, как и любой паттерн, имеет свои достоинства, недостатки и область применения.
... << RSDN@Home 1.2.0 alpha 4 rev. 1120 on Windows Vista 6.0.6001.65536>>
Здравствуйте, AndrewVK, Вы писали:
A>>Стоящее — однозначно! Бизнес-код, использующий АОР, обретает потрясающую гибкость и простоту восприятия. AVK>Серебрянная пуля?
Не, я ей бошку себе пару раз прострелил Как и любым другим средством, им нужно пользоваться с умом и с чувством меры.
На опушке за околицей мужики строили коровник.
Работали споро и весело. Получалось х**во.
Здравствуйте, VladD2, Вы писали:
VD>Как практическая технология мне она не кажется перспективной. Слишком уж она узко-специализированна.
Она вообще не под что не специлизирована. Это просто средство мета-программирования.
По сравнению с другими средствами мета-программирования обладает важной особенностью —
ненужностью изменять синтаксис основного кода, все добавки делаются в него "извне", инжектятся.
В этой особенности — главная сила и главная слабость АОП.
Для него не нужен отдельный компилятор для основного кода. Это позволяет его использовать прямо сейчас, без перехода на новый язык программирования и пр.
Но и сделать он может намного меньше, по сравнению с самостоятельны языками с поддержкой мета-программирования.
Короче, вопрос в том, как далеко система мета-программирования заходит в отказе от фиксированных понятий, насколько она адаптивна.
АОП — минимально адаптивен, но он не требует никаких изменений в основном коде.
Язык с макросами — более адпативен, но он требует переписывания кода на этот язык.
Intentional Programing и MPS — ещё более адаптивны, но они требуют отказа от представления кода как текста, и представления его в виде синтаксического дерева.
SOP ещё более адаптивен — в нём код представлен в виде семантического дерева/графа, а синтаксическое представление генерируется.
Чем дальше по уровню адаптивности — тем больше отход от текущих технологий и сложностей с реализацией, но и больше возможностей.