aspect-oriented programming

2 messages Options
Embed this post
Permalink
Ruvim Pinka

aspect-oriented programming

Reply Threaded More More options
Print post
Permalink
Привет!

У кого какие есть идеи внедрения аспектной парадигмы в форте?

На вскидку, существующие варианты:

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
Ruvim Pinka

Re: aspect-oriented programming

Reply Threaded More More options
Print post
Permalink
Привет!
Отвечаю себе :)

On 2/12/06, Ruvim Pinka <[hidden email]> wrote:
Никакой из перечисленных подходов не дает возможности массового
применения некоторого аспекта.
[...]
Поэтому, интересно, какие могут быть варианты с поддержкой упомянутой
массовости?

Между прочим, переопределение ":" и ";" позволяет массово применить некоторый аспект (хотя, не сказать что решение достаточно гибкое). Пример использования — profiler.f, где таким образом вешаются таймеры для обсчета времени выполнения фрагментов.

--
Ruvim
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev