Привет!
У кого какие есть идеи внедрения аспектной парадигмы в форте?
На вскидку, существующие варианты:
1. Вектора и их переопределение (с учетом текущего значения по
BEHAVIOR ) -- давнейший пример, который можно отнести к поддержке
аспектной парадигмы. Привязка: "around" ( Замечу, "before" и "after"
-- частные случаи "around" ).
2. Разбросанное определение (Scattered a Colon Definition). Привязка: "after".
Пример использование см. в SPF4.
3. Позднее связывание (разрешение имени при исполнении, сообщения,
события и т.п.). Привязка: "around". Пример: механизм NOTFOUND в SPF4;
внешние правила (*.rules.txt) в Eserv/3.
4. Прототипная сборка (или, шаблонная?). Как proto.f в acTCP, или
~pinka\samples\2003\common\QSORT.F (эти примеры не демонстрируют
применение аспектов, а только способ, которым можно их применить).
Привязка: "around".
Никакой из перечисленных подходов не дает возможности массового
применения некоторого аспекта. В языке AspectJ массовость достигается
тем, что для привязки используются шаблоны (wildcards) имен функций.
Например, можно применить некторую рекомендацию(advice) по шаблону
mySet* (т.е., ко всем словам, начинающимся на mySet ). Конечно,
обратная сторона -- более жесткие требования к именованиям.
Поэтому, интересно, какие могут быть варианты с поддержкой упомянутой
массовости?
Навеяно статьей "Aspect-oriented programming" на en.wikipedia.org, и
сопутствующими -- separation of concerns и cross-cutting concerns
(каким тут русским словом точно передать смысл concern -- не знаю пока
=)
Русская компиляция(?):
http://www.javable.com/columns/aop/workshop/01/ (длинно, не читал, но картинки понятные ;)
Ключевая фраза (цитата)
"Mathematically, aspects form a second-order extension of any
programming paradigm: while usual programming paradigms allow
reasoning about single functions, messages and so forth by a
function/message signature, AOP enables reasoning about entire sets of
those entities by using pointcuts with wildcards in their signature.
Thus one could view AOP as a powerful, logical extension, rather than
as an independent paradigm"
Понятно, что "wildcards in their signature" -- это частный случай.
--
Ruvim