[導(dǎo)入]關(guān)于建模
Posted on 2005-11-14 16:59 canonical 閱讀(671) 評(píng)論(2) 編輯 收藏 所屬分類(lèi): 設(shè)計(jì)理論最近幾年關(guān)于模型的提法突然多了起來(lái),但這個(gè)概念到底意味著什么呢。從哲學(xué)上說(shuō),我們的思想是外部世界結(jié)構(gòu)在主觀意識(shí)中的反映,當(dāng)我們把主觀意識(shí)再投射回 外部世界時(shí),就得到關(guān)于外部世界的模型。所以,在最廣泛的意義上,模型不過(guò)是我們思維中的一組關(guān)聯(lián)。問(wèn)題不在于我們是否需要模型或者什么東西是模型而什么 東西不是模型,我們所意識(shí)到的一切都是模型,無(wú)論它與真實(shí)情況的差距有多大。我們所能區(qū)分的只是什么是一個(gè)"好"的模型,什么是一個(gè)"壞"的模型。在面向 對(duì)象建模中,經(jīng)常聽(tīng)到人說(shuō)XX是對(duì)象,YY不是對(duì)象。這是一種錯(cuò)誤的提法。所有的東西都是對(duì)象,都是我們心智中可以操縱的符號(hào)。一張紙是對(duì)象,當(dāng)它被撕成 了碎片,每個(gè)碎片也是對(duì)象。因?yàn)槭芰Ψ绞降入S機(jī)因素的干擾,信紙碎裂的方式也是隨機(jī)的, 最終造成的碎片也是隨機(jī)的。我們可以說(shuō)信紙L這個(gè)對(duì)象由碎片A,B,C這三個(gè)子對(duì)象構(gòu)成,也可以說(shuō)L由碎片D,E,F構(gòu)成。定義對(duì)象的方式實(shí)在是無(wú)窮無(wú) 盡。
我們通過(guò)比較來(lái)認(rèn)知外部世界。當(dāng)我們面對(duì)一個(gè)不熟悉的概念的時(shí)候,我們總是在把它分解,重構(gòu)為我們已經(jīng)熟悉的概念以后才能真正的理解它。也許,我們只能理
解那些我們已經(jīng)知道的東西!我們已在這個(gè)星球上生存了億萬(wàn)年,以至于我們總可以將那些"新"的結(jié)構(gòu)與我們的"先驗(yàn)知識(shí)"做比較。只有當(dāng)面對(duì)量子論和相對(duì)論
的時(shí)候,一個(gè)人才能真正意識(shí)到自己的知識(shí)是多么的貧乏,一種先天的貧乏。Cantor將比較的技術(shù)發(fā)揮到了極致,他通過(guò)比較區(qū)分了可數(shù)無(wú)窮大與不可數(shù)無(wú)窮
大,結(jié)果他瘋了。
假設(shè)現(xiàn)實(shí)有一個(gè)結(jié)構(gòu)S, 我們的模型具有結(jié)構(gòu)M。
當(dāng)S(通過(guò)一定的簡(jiǎn)化和拓?fù)渥儞Q)能夠與M匹配時(shí),我們就說(shuō)現(xiàn)實(shí)S被理解了。 更一般的, 我們從不同的角度或者在不同的層面上看待同一個(gè)事物,
從而形成模型M1, M2, M3,... 我們可以通過(guò)一條邏輯途徑M1-->M2-->M3-->S來(lái)理解S.
最好的模型應(yīng)該構(gòu)成到現(xiàn)實(shí)結(jié)構(gòu)S的最短路徑。一個(gè)鮮活的例子就是數(shù)據(jù)庫(kù)。在von
Neumann體系架構(gòu)下,計(jì)算機(jī)能夠直接回答的問(wèn)題是:存放在0x***地址的值是多少(M1)。而在現(xiàn)實(shí)中,我們經(jīng)常需要回答的問(wèn)題是:
值大于**的紀(jì)錄有那些(M2)。這些問(wèn)題是關(guān)于變量的值的,而不是變量的地址。數(shù)據(jù)庫(kù)的價(jià)值正在于通過(guò)索引提供了M1->M2的映射。早期的層次
數(shù)據(jù)庫(kù)僅僅提供了一個(gè)中間模型H, H->M2的映射還需要程序員來(lái)完成,最終難免被淘汰的命運(yùn)。一個(gè)模型就這樣創(chuàng)造了一個(gè)產(chǎn)業(yè)。
模型映射的最短路徑意味著我們最好不要去創(chuàng)建那些"聰明"的新結(jié)構(gòu).在一個(gè)良好設(shè)計(jì)的系統(tǒng)中,我們不應(yīng)該費(fèi)力去"發(fā)現(xiàn)"什么或去認(rèn)知什么。設(shè)計(jì)不等于創(chuàng)
造,一個(gè)最好的設(shè)計(jì)應(yīng)該是抄襲成功的范例,最好是連改動(dòng)也沒(méi)有,可惜現(xiàn)實(shí)的多變總要你多少作些改變。如果需要改變,最好是局部化的改變,在數(shù)學(xué)上我們稱之
為同態(tài)。如果在映射的時(shí)候,無(wú)法做到局域化,那往往意味著出現(xiàn)了一些本質(zhì)的困難。例如html語(yǔ)言中的table元素。表格本質(zhì)上是二維布局,而html
文本是一維的文本流,它們之間存在著深刻的差異。當(dāng)某個(gè)表格單元的rowspan或者colspan屬性需要修改時(shí),對(duì)應(yīng)于界面表現(xiàn)只是一個(gè)局部調(diào)整,而
反映到html代碼中卻是全局的修正。xml決不是萬(wàn)能的。
某個(gè)事物被清楚的理解了,是因?yàn)槲覀儗?duì)它已經(jīng)有了一個(gè)完整的模型M,所以對(duì)已知的事物建模是相當(dāng)容易的,因?yàn)槲覀兛梢詮哪P蚆出發(fā),建立一個(gè)同態(tài)甚或是同
構(gòu)的模型即可。所有的困難都在于如何對(duì)那些我們所知甚少抑或是一無(wú)所知的東西建模。按照Laplace的哲學(xué),如果我們不知道什么是最好的選擇,那么所有
的選擇都是等價(jià)的。在用迭代法解方程的時(shí)候,通常的做法是拋一個(gè)隨機(jī)的初始解進(jìn)去,只要控制策略得當(dāng),最終會(huì)收斂到正確的解上。一切并不在于選擇初始解的
啟發(fā)式策略有多么的"聰明",
隨機(jī)性才是創(chuàng)造性的根源,因?yàn)橹挥袔茁什拍艽蚱埔蚬募湘i。一個(gè)好的初始解一般只是縮短收斂的過(guò)程,但并不影響最終收斂的結(jié)局。
一個(gè)模型首先提供的是一個(gè)術(shù)語(yǔ)體系或者說(shuō)一個(gè)詞匯表,一種語(yǔ)言。使得我們能夠以一種一致的方式捕獲那些轉(zhuǎn)瞬即逝的思想。模型本身是否正確其實(shí)并不一定如想
象中的那么重要。一旦初始的模型建立,我們的認(rèn)知就有了一個(gè)不斷發(fā)展和積累的基礎(chǔ),最終就可能得到超越我們最初期望的結(jié)果。交流和表達(dá)具有根本的意義,優(yōu)
劣與否只在其次。設(shè)計(jì)模式提出的時(shí)候引起轟動(dòng),到今天,當(dāng)一切塵埃落定,它最大的貢獻(xiàn)也許只是貢獻(xiàn)了一批術(shù)語(yǔ)和模式名稱,讓大家可以在模式的框架下討論問(wèn)
題。恰如陳省身的纖維叢理論。也許這個(gè)世界上最成功的建模案例是宗教。通過(guò)一次提問(wèn),誰(shuí)干的,就把所有未知的問(wèn)題一攬子解決了。偉大的簡(jiǎn)化!借助宗教的術(shù)
語(yǔ),我們創(chuàng)作了文學(xué),紀(jì)錄了思想,傳承了知識(shí),甚至建立了政治秩序。所以如果你不知道從哪里開(kāi)始的話,那就隨便吧。