[导入]对象与经济学

    经济学的核心概念是合同(contract),多个利益主体(具有不同的价值目标)在交互中达成一致协议。这本质上是个多目标优化的问题。这与物理学的精 神是有着本质区别的。物理学传统上认为世界是完美的,存在着唯一的真理。根据Lagrange原理,最低能量原理等,物理世界总是在众多可比的备选结构中 选择那唯一最优的结果。在经济学中不存在唯一的价值取向,并不是所有的事物之间都是能够进行比较并排出座次的。比如,我们大多数人会认为10个老婆饼比一 个老婆饼好,10个葱油饼比一个葱油饼好,10个老婆饼加10个葱油饼比一个老婆饼加一个葱油饼好,但是10个老婆饼和10个葱油饼之间如何比较,却是没 有确定的结果的。数学上,我们说可以建立偏序(partial order)但无法建立全序。因为多个利益主体对同一事物的评价是不可比的(不同的),因而可以产生交换.交换是一个互惠互利的过程. A交出了部分老婆饼换来了葱油饼,因为A觉得自己的老婆饼很多,还是葱油饼更有吸引力一些,而同样B认为自己的葱油饼很多,他宁肯再要一些老婆饼. 通过一番讨价还价的交互过程,我们可以达到所谓的Pareto有效(optimal): 在最终的优化配置中,没有人能够在不使别人受损的情况下使自己得益. 即继续交换下去,A或B中的一个就会觉得不值得了. 注意到经济学的这种双赢性质与军事学和权谋术也是不同的,权谋讲求争锋相对, 损人即利己, 进攻是最好的防守等等.
   
    多目标优化,意味着我们在一族矢量中寻找最优的一个,尽管在每个维度上我们都能很容易的作出比较和判断,但综合起来却需要反复的权衡。在凸分析 (Convex Analysis)中标量化(Scalarization)是寻找Pareto有效点的常用方法. 即定义一个价格矢量, 优化时考虑总体价格. 价格的存在意味着市场的存在, 意味着我们在考虑优化问题的时候,可以只考虑自身与市场的交互,而不用考虑众多其它利益主体的存在(类似于物理中的场方程). 理论上可以证明,在均衡价格处可以实现Pareto最优。


    说了这么多经济学,它和软件有什么关系呢。稍微留意一下就会发现,现在软件中越来越强调合同和涉众(stakeholder)利益了(参考use case)。早期,面向过程编程时,系统的目标比较单一:满足当前系统功能需求。基本上系统中的每一个函数在编写的时候都服从于一个目标,即当前系统的运 行。在编制的时候多半都想着向着最终的目标迈进,系统的各个部分之间是精确(detailed)匹配的。(想想VB的代码吧)。采用面向对象的思想方法之 后,系统中出现了多个利益的实体,它们定义并保护着自身的利益。系统的目标不再是完成功能,而是实现用户价值,稳定运行,便于维护等多重价值目标。在面向 对象以后,我们经常会发现,最终我们实现的功能点会多于面向过程开发的时候。很多对象函数在当前系统中最终并没有调用,但考虑到重用性和完备性等,我们还 是编写了相应的代码。很多商用组件对象的功能集更是大得惊人,我们永远只是用到其中的一小部分。系统的架构便是由对象之间相互协作并相互竞争支撑起来的.   在面向对象设计中, 我们说对象对外暴露的接口是与外部世界达成的contract, 而接口函数则反映了一次交互过程.有时我们采用如下方法, 让调用双方都能平等的获得处理机会.
class A{
   void someFunc(B b){
      b.someFunc();
   }
}

    XP敏捷编程强调快速迭代, 但绝不意味着不进行架构设计. 按照级列设计理论, 复杂性是分级的, 我们要采用满足当前需求的最简单的设计,而不是绝对意义上的最简单的设计. 而且简单与完备性还是两回事,虽然简单,但是功能仍然要是完备的. 这是个架构性问题. 迭代是个逐步精化的过程,而很少是格式塔式的革命. 在XP中我们应该更加强调architecture centric.
    重构是不影响系统外部特征的情况下,对系统内部结构的修改. 但我们现在要从结构A走向结构B,重构的路径到底在哪里。推翻了重新写并不是重构。虽然XP强调当前,不要过多考虑未来,但这只是个重点问题,并不意味着 不考虑未来,我们需要为复杂性的方向性发展保留出一定的通道。实际上重构的过程中,架构本身对应的概念是基本不变的,只是结构在调整,在细化。如果你大脑 痴呆,先天遗传不利,无论怎么重构知识结构大概也难以避免被淘汰的命运. 重构也会陷入Pareto最优点,因为一些对象作为即得利益者,让它放弃自己的功能集并不是那么容易的事情。它会争辩说,我和XX建立了关联,基于我的 YY功能,ZZ已经作了大量开发而且已经发布出去。。。

    目前软件设计中没有"市场"的概念, 在权衡系统功能归属的时候,我们只能两两进行: 这个功能放在对象A里好呢还是放在B里好呢. 是一个相当费力的过程.
   
    最后,再为物理学说句话。表面上看起来,物理学是由最优化原理支配的,但它还要受到所谓对称性的制约。很多时候当我们面临两难选择的时候,对称性会帮助我 们作出选择。对称性(根据Nother定理,守恒律也是对称性的一种)维护了物理学内部的结构张力。

你可能感兴趣的:([导入]对象与经济学)