Ecco la mia comprensione.
Aspects enable scoping variations in space (with a rich variety of static pointcuts),
Ciò significa che una sezione specifica di codice può fare cose diverse.
in time (with dynamic aspects),
Ciò significa che dal momento in cui si colpisce un punto del codice in un altro, il comportamento viene modificato dall'aspetto.
and in the control flow (with the corresponding pointcuts).
Il flusso delle chiamate alle funzioni cambia.
Scoping a variation to the dynamic extent of an expression is
however challenging, since scoping between threads is not
easily realized with aspects.
Supponiamo che tu abbia un programma multi-thread con il messaggio che passa tra i thread. L'estensione dinamica di un'espressione è tutto ciò che è parte del calcolo di quell'espressione, incluso il lavoro svolto da altri thread.
Quindi ecco cosa stanno cercando di ottenere. I thread A e B comunicano entrambi con un thread di lavoro C. Vogliono che cosa C sia interessato dallo stato del thread che richiede il lavoro. Ma A e B sono fili indipendenti, in diversi stati con diversi aspetti attivati. Ciò significa che non è possibile ottenere il comportamento desiderato da C con uno dei meccanismi sopra descritti.
A giudicare dall'astratto, il loro metodo per raggiungere questo obiettivo è quello di passare le informazioni nel messaggio che indurrà C a delegare importanti decisioni al thread di origine, che può quindi essere controllato dall'aspetto per avere un comportamento corretto. Devo chiedermi qual è il sovraccarico risultante di questo comportamento in termini di passaggio di messaggi aggiuntivi e di opzioni di contesto.
(C'è un vecchio detto: "Per eseguire il debug del codice devi essere due volte più intelligente di quando lo hai scritto. Quindi se scrivi codice che è il più intelligente possibile, allora per definizione non sei abbastanza intelligente debug. "Questo è il motivo per cui sono sospettoso di AOP, non importa quali benefici i suoi aderenti si siano convinti che stanno guadagnando ...)