Esempio di fusione del loop con framework orientato all'aspetto

7

Recentemente ho letto un documento 'Programmazione orientata all'aspetto "di Gregor Kiczales e altri , e ho trovato lì l'esempio di loop fusion .

Ecco una definizione della fusione ciclica dal foglio

…the loop fusion composes by fusing the loops of those primitive filters that have the same loop structure and that are direct neighbors in the data flow graph. Each of these composition rules is easy to understand when looking at its own appropriate picture. But the two composition relation- ships cut each other so fundamentally that each is very difficult to see in the other’s picture.

Più tardi nel documento loop fusion menzionato per essere implementato usando il protocollo metaobject su Lisp:

…the loop fusion aspect … can be implemented, with some degree of efficiency, using the method combination facility in the CLOS metaobject protocol

Che aspetto ha la fusione del loop come l'utilizzo di qualsiasi quadro moderno orientato all'aspetto in linguaggi tipizzati statici o dinamici? Sto cercando esempi di linguaggio delle immagini e consigli che potrebbero fare loop fusion .

Stato per metà gennaio '13

Finché non ci sono altre risposte, ho segnato la mia risposta come risposta. Ad ogni modo, non vedo l'ora di trovare esempi da altre lingue / framework.

ps : fusion loop discusion a " AOP in .NET "forum del libro @manning forum

    
posta Akim 02.01.2013 - 16:34
fonte

1 risposta

2

Dopo il rilascio del documento iniziale, Gregor Kiczales ha avviato il progetto AspectJ per implementare un'idea di programmazione orientata agli aspetti. Recentemente ho trovato spiegazioni perché non ci sono "loop fusion" disponibili a "AspectJ in Action" di Ramnivas Laddad :

In addition, the following are all join points: an object construction, a conditional check, a comparison, an exception handler, and even for, while, and do/while loops. Not all of the join points in a system are available for your use. … In order to prevent implementation-dependent or unstable crosscutting, AspectJ deliberately exposes only a subset of all the possible join points in the system. AspectJ, for example, does not expose for loops because you can easily change a for loop to a while loop that functions in the same manner. If such a change were to be made, all of the advice to the join point for the for loop would no longer be valid since the loop would no longer exist.

Un altro punto che ho trovato nell'intervista con Gael Fraiteur su PostSharp :

Some different people recommend AOP also for functional requirements and I... so really invasive in its aspects. Using PostSharp, you are forced to design aspects so that aspects don’t know their target code. They don’t know look how variables... so pay attention not to misuse PostSharp, not to misuse AOP, and respect also engineering principles, respect separation of concerns, and in the Java eco-system it is much, much longer concept and they have a lot of practice with it and users come with feel about that it’s more difficult to program with aspect because aspect has to know the target code. They have to know the implementation of target method and so on. Target method has to know they will be affected. I think this is a very bad design, and when you plan to use AOP, I recommend to design your base code and your AOP codes so that they don’t know about each other. It’s really important not to get completely mad with a small change.

Quindi sembra che non ci sia "loop fusion" né ad AspectJ né a PostSharp, e Dynamic Proxy dalla sua definizione non potrebbe fornire questo tipo di funzionalità anche

    
risposta data 08.01.2013 - 11:56
fonte