AOP的二级语言

推荐关于AOP的本质论述的paper:
What Is Aspect-Oriented Programming
http://ic.arc.nasa.gov/people/filman/text/oif/aop-is2.pdf

AOP本质特征(AOP系统的可判性)
 
1)量化:AOP编程系统引入一个二级语言,为部分一阶谓词演算语言(只有全称量词),以这样的形式加入建议代码:
 
 P is base program ^ forAll(loc ^ loc in P) PointCut条件(loc)-> 执行建议代码。
 
2)健忘性:基程序不仅在程序结构上不知道方面代码,而且在基程序员在思想上不知道方面代码。
 
显然,AOP的二级语言比C++的模板二级语言(与图灵机等价)在表达能力上强了许多(逻辑语言不可计算-B))。

B-关于这个问题,我只是看到过,但想不起来是为什么。

对该二级语言,该文还论述了它的另一个与传统逻辑系统的不同之处。传统逻辑系统由公理+规则组成,是对现实系统的规范,但不能修改现实系统的任何成份。
 
而为实现AOP的这个二级语言的"执行建议代码",需要Weav基程序,则原来对基程序的规范很可能不再满足,导致原先的真理(公理)不再为真,这是很恐怖的能力。
 
该文的例子就是:动态向某个方法插入代码,可能导致原先对基程序的断言(如赋值不变性)失效。

AOP的行为注入--就像是宏观经济调控(AOP是从系统广度方向进行研究的一种技术),且这种行为注入是在基程序不知道的情况下进行的。这是一种真正的"we are watching and changing you but you don't know"(AOP--程序设计里的病毒?)

posted on 2004-08-16 00:54  阿飞外传  阅读(875)  评论(1编辑  收藏  举报

导航