連載15:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)

從置換到面向對象

         對象化的劃分,需要通過邏輯的分解進行,然而分解不過是我們有限的思維能力下的一種使用方法而已,我們在進行邏輯分解的過程中過多誇張了其獨立性,是從某一個角度和一個方面來分解,然而對於無限的客觀對象,我們只能夠近似的逼近,客觀對象永遠是彼岸無法企及。

客觀對象具有無窮多的參照方面,因爲其本身的無限,是無法通過有限的分解將其分離。所以分解完成以後,組合這些分解完成的對象是無法表示未分解客觀對象的整體特徵,這些整體特徵將按照其他的原理在運作,所以雖然肉體都是由大大的細胞組成,但是這些細胞組合在一起,是不能解釋靈魂的意義。

當然,“置換”也是一種分解,同樣,這種分解只是針對某一面來進行分析,只是關注於如何更好的表示計算機設計領域中如何通過最簡單,最科學的方式來表達設計的基本特徵。置換公理也僅僅侷限於本層面(計算機設計統一方法層面)的認同,它無法表徵上層(通過場景來表示設計的意義層面)所表示的意義和價值。但是這種分解又是必要的,因爲僅僅通過模式使用場景來概括也是分解的一個方面,而這個方面也只是在其本身的層面進行的。

的確,面向對象的很多思想完全沒有站在一個堅實的理論基礎之上,在面向接口的思想中,我們可以通過規劃接口中的各種動作來達到對繼承體系進行有效的約束,然後讓之達到多態的處理,這裏對於方法(或者稱爲函數)進行的抽象,其實在外部調用方面就是一個約束化的處理。但是由於這裏只是對動作進行抽象,對實體並沒有進行有效的約束,所以在繼承於具體實現類的時候,就存在雖然是相同的動作的抽象,但是由於其不同實體,所展示的相似的動作,但是並非是這個繼承體系。比如對於一個飛的動作,對於雄鷹來說,飛翔是其本來的能力,但是對於一個在颶風口的野豬,當其飛起來的時候,我們頓然發現雄鷹和野豬在飛翔實體上本來就是風馬牛不相及,一個是本能起飛,一個是被動起飛,所以面向對象這種不經過實質性的分析,僅僅按照接口來進行劃分,不知道會帶來多少混亂呀!

所以我們引以爲豪的面向接口編程,是否也是在一定範圍一定條件下才能成立呢?但是另一方面,面向接口寫的程序,其擴展性和低耦合性都表現的非常好,那難道是我們的軟件系統的劃分標準與人類智力的認識的劃分完全迥異呢?或許面向對象的思想號稱是最接近人類抽象思維的思想。

面向對象不是對事物的本質進行描述,而是對事物的外在特徵的描述。所以纔會出現上面講到的存在無法準確定義的面向對象的特點,然而如果我們反過頭來看看,其實什麼又是其本質描述呢?因爲所有的準確定義都是在某個層次上進行的定義,例如對於人的定義,如果在生物特性來說,我們定義爲一種高級的靈長類哺乳動物,如果按照社會學意義來定義就是一種具有語言的勞動者和實踐者的動物就是人類(馬克思的觀點),定義有多種,在不同層次上,不同領域中所下的定義,我們應該選擇哪個呢?我想哪個都不能選擇,我們只能通過外部體現的特性來進行定義,而外部體現的特性就和當時、當地的定義者來進行抽象。外在特徵纔是最適合的定義方式,也就是上面談論到的按照需求進行定義和抽象。所以面向對象不僅僅和描述的事物的有關係,同時也和觀察者有關係,就像微觀世界中的觀察者影響被觀察者的描述,是一個無法準確測定的過程。

也許汽車和傘的例子更能夠說明這點,在分類方面,或者本質定義方面,汽車和傘可能很難劃分爲一個種類,但是,如果我們在處理避雨的外在功能的時候,我們很可能就將其繼承於是否能夠避雨的接口下,而此時滿足了我們的應用,而且對於泛型編程思想來說,我們也是通過一些外部特徵來進行處理,例如這裏可以將汽車和傘都放置到能夠進行避雨操作的typename中,甚至我們的軟件設計的各種手法都是按照外部特徵來進行定義,都是注重“形式”,而忽略“本質”。同時數學模型化軟件設計也是從結構這樣的外部特徵來進行分析。所謂的“本質論”其市場越來越小,也逐漸會被拋棄。

如果我們在進行方面選擇的過程中排除了觀察者的因素的影響,那麼我們無法全面認識到我們在分析中我們的選擇是否科學,觀察者的視角往往影響到被觀察者的變化和特徵,而且在很多具有辯證的自矛盾的因素中我們是無法同時兼顧。例如我們在使用置換過程中,在增加了其擴展性方面的同時必然增加了局部的熵值。

同時,觀察者都是根據自己過去的經驗來考慮新的模型,只是在使用這樣的模型中,如果有違背最開始的一致性,那麼才採用一種新的方式來擴展這樣的模型,這裏不要說計算機設計領域,就是在數學領域,也是通過一致性來判斷,因爲不同的公理系統之間是沒有正確和錯誤之分,只有在這個公理系統中是否達到一致性原則。

那麼如何考慮觀察者對此的影響呢?其實很簡答,所選擇的方面是否具有邏輯的獨立性,這裏需要注意是邏輯的獨立性不是物理的獨立性,邏輯獨立性很強,那麼我們就可以這樣選擇,所以這裏沒有正確和錯誤之分,而只有恰當或不恰當之分。所以針對面向對象這樣的選擇來說,其實是沒有正確和錯誤之分的,確切的說是無法進行證僞的,形成的邏輯概念只有判斷恰當與否,所以上面談到的試圖去證明面向對象是正確還是錯誤都是徒勞。

 

發佈了42 篇原創文章 · 獲贊 2 · 訪問量 2358
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章