Комментарии 1
Интересно перечитывать это в 2026, зная, куда всё свернуло. Канонические аспекты из статьи разъехались по двум дорогам.
Универсальный вплетатель выжил там, где аспекты действительно произвольные — в энтерпрайз-мидлваре: Spring AOP и AspectJ до сих пор вплетают транзакции, секьюрити и логирование, и делают это хорошо.
А вот аспекты из флагманского примера — слияние циклов, кеширование и шаринг подвычислений, минимизация памяти — в UI-слое растворились в самой модели вычислений. Ленивый реактивный граф (Knockout, Vue, MobX, $mol_mem, сигналы в TC39) отслеживает зависимости по факту обращения и сам решает, что и когда пересчитывать: вычисляется только затребованное, промежуточные результаты кешируются и переиспользуются, невостребованные умирают. То, для чего авторам понадобился вплетатель на 3520 строк и дюжина правил слияния, стало семантикой одного мемоизирующего декоратора.
Причём Кичалес сам оставил указатель на эту дорогу — сноска 5: исключения и динамические области видимости дают «иной подход к композиции», закрывающий часть аспектов внутри базового языка. Показательно, что даже обработка сбоев, оставленная в статье «предметом будущих исследований», в реактивной модели решается тем же механизмом: исключение — обычное значение, текущее по графу зависимостей (отсюда error boundaries и suspense).
В рунете этот подход ещё в 2017 оформили в термин ОРП — Объектное Реактивное Программирование: habr.com/ru/articles/330466

Грегор Кизалес и др. «Аспектно-ориентированное программирование»