Posted on 2006-04-23 15:58
canonical 閱讀(1068)
評論(0) 編輯 收藏 所屬分類:
設計理論
??? 軟件設計中總是存在著general與special的競爭, 一方面我們希望提出更加general的概念和方法, 在更大的范圍上捕獲更多的關聯,? 另外一方面我們又希望在局部使用特殊定制的接口和實現, 提高局部信息利用的效率, 很多時候兩者之間是存在一定的沖突的. 從實際操作的過程來看, general這個方向很難控制, 當我們試圖提供更多的時候, 最終真正實現的多半只是更多的限制而不是更多的靈活性. 對于不是非常熟悉的領域, 我們很難避免各種意想不到的信息泄露, 最終它們會使得general的設計名存實亡. special的方向相對容易控制一些, 只要保證所有用到的參量都是目前必須的就可以了.
??? 現代數學技術與古典方法的一個鮮明區別在于, 傳統方法總是假設信息是完備的, 因而它試圖首先建立一個更加通用的模型, 解決一個更為一般性(往往更加復雜)的問題, 然后再以這個通用問題為基礎來解決我們的特定問題. 例如為了估計某個隨機波動造成的損失, 傳統方法將從估計隨機分布的密度函數開始, 但是密度估計是統計學中的一個"終極問題"(一旦密度函數已知, 我們就可以求解各階矩,從而解決各種統計問題), 它需要大量觀測數據(信息)才有可能滿足漸進估計所需要的數學條件. 而現代方法更加強調問題的特殊性, 強調信息的不完備性, 因而傾向于直接對于給定的問題建模, 因而模型中包含更少的參數, 這樣我們才有可能得到更加穩定的解.
??? 在軟件設計中我們遇到的最大的問題也是信息不完備的問題, 我們同樣需要注意避免把解決一個更為一般的問題作為解決當前問題的一個中間步驟.