posts - 176, comments - 240, trackbacks - 0, articles - 7

          [導(dǎo)入]對象與經(jīng)濟學(xué)

          Posted on 2005-11-22 17:59 canonical 閱讀(664) 評論(2)  編輯  收藏 所屬分類: 設(shè)計理論

              經(jīng)濟學(xué)的核心概念是合同(contract),多個利益主體(具有不同的價值目標)在交互中達成一致協(xié)議。這本質(zhì)上是個多目標優(yōu)化的問題。這與物理學(xué)的精 神是有著本質(zhì)區(qū)別的。物理學(xué)傳統(tǒng)上認為世界是完美的,存在著唯一的真理。根據(jù)Lagrange原理,最低能量原理等,物理世界總是在眾多可比的備選結(jié)構(gòu)中 選擇那唯一最優(yōu)的結(jié)果。在經(jīng)濟學(xué)中不存在唯一的價值取向,并不是所有的事物之間都是能夠進行比較并排出座次的。比如,我們大多數(shù)人會認為10個老婆餅比一 個老婆餅好,10個蔥油餅比一個蔥油餅好,10個老婆餅加10個蔥油餅比一個老婆餅加一個蔥油餅好,但是10個老婆餅和10個蔥油餅之間如何比較,卻是沒 有確定的結(jié)果的。數(shù)學(xué)上,我們說可以建立偏序(partial order)但無法建立全序。因為多個利益主體對同一事物的評價是不可比的(不同的),因而可以產(chǎn)生交換.交換是一個互惠互利的過程. A交出了部分老婆餅換來了蔥油餅,因為A覺得自己的老婆餅很多,還是蔥油餅更有吸引力一些,而同樣B認為自己的蔥油餅很多,他寧肯再要一些老婆餅. 通過一番討價還價的交互過程,我們可以達到所謂的Pareto有效(optimal): 在最終的優(yōu)化配置中,沒有人能夠在不使別人受損的情況下使自己得益. 即繼續(xù)交換下去,A或B中的一個就會覺得不值得了. 注意到經(jīng)濟學(xué)的這種雙贏性質(zhì)與軍事學(xué)和權(quán)謀術(shù)也是不同的,權(quán)謀講求爭鋒相對, 損人即利己, 進攻是最好的防守等等.
             
              多目標優(yōu)化,意味著我們在一族矢量中尋找最優(yōu)的一個,盡管在每個維度上我們都能很容易的作出比較和判斷,但綜合起來卻需要反復(fù)的權(quán)衡。在凸分析 (Convex Analysis)中標量化(Scalarization)是尋找Pareto有效點的常用方法. 即定義一個價格矢量, 優(yōu)化時考慮總體價格. 價格的存在意味著市場的存在, 意味著我們在考慮優(yōu)化問題的時候,可以只考慮自身與市場的交互,而不用考慮眾多其它利益主體的存在(類似于物理中的場方程). 理論上可以證明,在均衡價格處可以實現(xiàn)Pareto最優(yōu)。


              說了這么多經(jīng)濟學(xué),它和軟件有什么關(guān)系呢。稍微留意一下就會發(fā)現(xiàn),現(xiàn)在軟件中越來越強調(diào)合同和涉眾(stakeholder)利益了(參考use case)。早期,面向過程編程時,系統(tǒng)的目標比較單一:滿足當前系統(tǒng)功能需求。基本上系統(tǒng)中的每一個函數(shù)在編寫的時候都服從于一個目標,即當前系統(tǒng)的運 行。在編制的時候多半都想著向著最終的目標邁進,系統(tǒng)的各個部分之間是精確(detailed)匹配的。(想想VB的代碼吧)。采用面向?qū)ο蟮乃枷敕椒ㄖ? 后,系統(tǒng)中出現(xiàn)了多個利益的實體,它們定義并保護著自身的利益。系統(tǒng)的目標不再是完成功能,而是實現(xiàn)用戶價值,穩(wěn)定運行,便于維護等多重價值目標。在面向 對象以后,我們經(jīng)常會發(fā)現(xiàn),最終我們實現(xiàn)的功能點會多于面向過程開發(fā)的時候。很多對象函數(shù)在當前系統(tǒng)中最終并沒有調(diào)用,但考慮到重用性和完備性等,我們還 是編寫了相應(yīng)的代碼。很多商用組件對象的功能集更是大得驚人,我們永遠只是用到其中的一小部分。系統(tǒng)的架構(gòu)便是由對象之間相互協(xié)作并相互競爭支撐起來的.   在面向?qū)ο笤O(shè)計中, 我們說對象對外暴露的接口是與外部世界達成的contract, 而接口函數(shù)則反映了一次交互過程.有時我們采用如下方法, 讓調(diào)用雙方都能平等的獲得處理機會.
          class A{
             void someFunc(B b){
                b.someFunc();
             }
          }

              XP敏捷編程強調(diào)快速迭代, 但絕不意味著不進行架構(gòu)設(shè)計. 按照級列設(shè)計理論, 復(fù)雜性是分級的, 我們要采用滿足當前需求的最簡單的設(shè)計,而不是絕對意義上的最簡單的設(shè)計. 而且簡單與完備性還是兩回事,雖然簡單,但是功能仍然要是完備的. 這是個架構(gòu)性問題. 迭代是個逐步精化的過程,而很少是格式塔式的革命. 在XP中我們應(yīng)該更加強調(diào)architecture centric.
              重構(gòu)是不影響系統(tǒng)外部特征的情況下,對系統(tǒng)內(nèi)部結(jié)構(gòu)的修改. 但我們現(xiàn)在要從結(jié)構(gòu)A走向結(jié)構(gòu)B,重構(gòu)的路徑到底在哪里。推翻了重新寫并不是重構(gòu)。雖然XP強調(diào)當前,不要過多考慮未來,但這只是個重點問題,并不意味著 不考慮未來,我們需要為復(fù)雜性的方向性發(fā)展保留出一定的通道。實際上重構(gòu)的過程中,架構(gòu)本身對應(yīng)的概念是基本不變的,只是結(jié)構(gòu)在調(diào)整,在細化。如果你大腦 癡呆,先天遺傳不利,無論怎么重構(gòu)知識結(jié)構(gòu)大概也難以避免被淘汰的命運. 重構(gòu)也會陷入Pareto最優(yōu)點,因為一些對象作為即得利益者,讓它放棄自己的功能集并不是那么容易的事情。它會爭辯說,我和XX建立了關(guān)聯(lián),基于我的 YY功能,ZZ已經(jīng)作了大量開發(fā)而且已經(jīng)發(fā)布出去。。。

              目前軟件設(shè)計中沒有"市場"的概念, 在權(quán)衡系統(tǒng)功能歸屬的時候,我們只能兩兩進行: 這個功能放在對象A里好呢還是放在B里好呢. 是一個相當費力的過程.
             
              最后,再為物理學(xué)說句話。表面上看起來,物理學(xué)是由最優(yōu)化原理支配的,但它還要受到所謂對稱性的制約。很多時候當我們面臨兩難選擇的時候,對稱性會幫助我 們作出選擇。對稱性(根據(jù)Nother定理,守恒律也是對稱性的一種)維護了物理學(xué)內(nèi)部的結(jié)構(gòu)張力。

          Feedback

          # re: [導(dǎo)入]對象與經(jīng)濟學(xué)  回復(fù)  更多評論   

          2005-11-23 01:01 by weide
          繼續(xù)關(guān)注。
          樓主不會是學(xué)物理的

          # re: [導(dǎo)入]對象與經(jīng)濟學(xué)  回復(fù)  更多評論   

          2005-11-23 10:55 by calvin
          樓主根本是生而知之的圣人~~~
          主站蜘蛛池模板: 界首市| 隆回县| 长白| 安多县| 芜湖市| 广东省| 北宁市| 金门县| 静乐县| 宣化县| 壶关县| 甘南县| 同德县| 蓬安县| 柳河县| 南阳市| 侯马市| 日照市| 磐安县| 和田市| 兖州市| 新营市| 扬州市| 衡南县| 嘉义县| 吐鲁番市| 兖州市| 长葛市| 荣昌县| 祥云县| 馆陶县| 湖口县| 木兰县| 成都市| 阳谷县| 太原市| 军事| 六枝特区| 珠海市| 万全县| 凯里市|