Posted on 2007-01-03 16:10
canonical 阅读(834)
评论(1) 编辑 收藏 所属分类:
设计理论
几年前Michael Atiyah受邀在浙江大学做过一个讲演,题目是Mathematics in the 20th Century,
http://www.cnw3.org/smth/Mathematics/historiesandmathmaticians/goodessays/00000035.htm, 在其中他回顾了二十世纪的主要的数学发展。被他列在第一条的进展就是From Local To Global. 在传统上,数学的主要研究对象是一些得到显性表达的局部公式,而拓扑学对于整体性的“不变性质”的研究最终将我们对于数学和物理学的理解推进到一个新的高度。我想在其他领域中,这种认识上的深化也将是一个必然的过程。随着AOP这种大范围结构操纵技术的兴起,软件技术是否也发展到了可以对程序的整体结构做一些反思的时候?
面向对象有什么用?它是在各个层面都可以使用的一种描述工具。从一些早期的文献我们可以看出一些端倪,一种整体性的均一的概念是我们迫切需要的。对象可以构成对象,Everything is Object. 只是因为我们对这些太熟悉以致于在今天看来显得有些陈腐。很多人现在津津乐道于CoC(Convention over Configuration)作为一种局部程序设计技巧所带来的可以少些一些代码的经济性,却没有看到CoC更大的作用在于在大范围内保持了程序结构的一致性,使得某些轻灵的设计可以在框架层面得以展现。目前的框架技术更多的是在各个层面各自为战,如何将同样的信息从局部传播到整体是一个耐人寻味的问题。
传统上的程序世界缺乏一些具体的技术手段使得我们可以方便的触及到程序的整体结构部分,这些整体性的关联更多的是存在于文档中,存在于我们的思想中,存在于程序表达世界之外。而AOP技术从本质上说也只是方便在各个层面实现某种局域化的抽象。 当某些东西被拘束在某个具体的孤立的点中的时候,我们似乎就可以松一口气了。但是在程序中仍然存在着大量"弱"的关联,它们很难被清晰的局域化。模型(Model)和Meta必然在程序构建的过程中扮演愈加重要的角色。AOP只是一种技术手段,它必须和更加宽广的框架技术和模型构建技术结合才能起到最大的作用。