離開學(xué)校已經(jīng)有一些時(shí)間了,在接觸了各種各樣的編程工具,各種各樣的編程語言,各種各樣的花哨技術(shù)以后,我打算在理論方面進(jìn)行一次回歸。初步的計(jì)劃是再看一遍大學(xué)里面學(xué)習(xí)過的數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué),然后看一下經(jīng)典的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》。在回顧期間,做一些筆記。這些筆記將不會是上述教材中知識的簡單摘抄或者消化理解之類的,而主要是我重新看過這些書之后結(jié)合我平時(shí)工作的一些思考。
我在工作的時(shí)候做的一些項(xiàng)目多是企業(yè)應(yīng)用類的,主要側(cè)重于業(yè)務(wù)面。所以我們在進(jìn)行設(shè)計(jì)和開發(fā)的時(shí)候,會比較注重“面向?qū)ο?#8221;這個(gè)原則,同時(shí)也喜歡嘗試一些設(shè)計(jì)模式。
但是當(dāng)我們以這種方式進(jìn)行建模的時(shí)候,卻發(fā)現(xiàn)期間有兩種不同的思路存在。一種是對象--施加于對象的操作--對象屬性作為一個(gè)類進(jìn)行設(shè)計(jì);一種是對象--對象屬性作為一個(gè)類,操作作為單獨(dú)的控制類存在。我屬于前者的擁簇者。當(dāng)然這僅僅屬于在設(shè)計(jì)中的不同習(xí)慣而已,對于設(shè)計(jì)本身不會構(gòu)成什么根本性的不同。我比較感興趣的是,到底是什么造成了這兩種不同的認(rèn)識呢?
直到我重新學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的時(shí)候,我才找到了這種差異的源頭,那就是:
數(shù)據(jù)元素(D)
數(shù)據(jù)結(jié)構(gòu)(D,S)
數(shù)據(jù)類型(D,S,P)
其中S是數(shù)據(jù)關(guān)系,P是對D的基本操作集。
在大學(xué)期間對于面向?qū)ο蟮慕佑|并不是太多,最多就是一門C++程序設(shè)計(jì),而且還是側(cè)重于語言的,于是我們就一直與這種數(shù)學(xué)模型打交道。當(dāng)然這也無可厚非,因?yàn)樗吘故怯擅鞔_定義的、合理的模型,經(jīng)過了無數(shù)的印證并變成了鉛字的出版物。它的關(guān)系側(cè)重于數(shù)據(jù)元素和數(shù)據(jù)元素之間的關(guān)系;它對于數(shù)據(jù)元素的基本操作似乎更注重閉包性。計(jì)算機(jī)最初也許就是這樣描述世界的,然后在這個(gè)基礎(chǔ)上語言變得更加自然,更加“對象化”。但是任何上層的東西都不會偏離根本和實(shí)質(zhì)。這就好像一個(gè)建筑工程師和一個(gè)泥瓦匠眼中一棟建筑雖然有差別,但這種差別不會不讓建筑師去關(guān)注一個(gè)磚頭的質(zhì)量和擺放情況。
存在即是有理。殊途同歸的東西沒理由再去爭辯。這便是我的想法。
posted on 2007-06-10 10:23
littlegai 閱讀(359)
評論(0) 編輯 收藏 引用