面向對象的最終目的仍然是功能。面向對象只是做爲一種靈活性更強的構建手段存在於需求分析與設計領域的。spa
那麼,到底要如何在對象的基礎上實現功能的靈活更變即系統的靈活性就成了一個避免不了的問題。設計
答案就是參數化。對象
在網上稍做蒐羅以後發現,沒有任何與軟件設計相關的參數化方案。全部的參數化方案或討論都是集中於建築或三維建模上面的。遊戲
這是另外一個鴻溝。開發
爲何呢?由於我若是構建一個遊戲系統,沒有參數化的方案的話,不少東西就將全被HARDCODED。可是HARDCODING顯然與軟件自己的進化性質是不相符合的。姑且不討論軟件的自治進化能力,即便是人工進化能力,在HARDCODING的狀況下也是不可能的。基礎
這不是鴻溝是什麼?進化顯然是軟件自己的一種屬性,可是在一個沒有參數化的系統中,進化沒有辦法經過一種結構化的手段進行表達而只能經過全面推翻的方法達到目的,顯然不是一種真正的進化。由於真正的進化具備兩種形式:突變與選擇。軟件
而對於一個並不具備羣體特徵的事物如「軟件」來講,「選擇」顯然是在討論範圍之外的東西。至少在現階段,大部分的商業軟件件開發並非使用這種方法完成的。也許有些AI程序使用這種方法進行軟件開發。但一旦把它放到應用級的軟件範圍中,組合爆炸的問題就開始浮現出來。因此它不可能。程序
所以個體軟件的進化只能是突變。可是突變的發生要求軟件必須具備必定的結構。由於突變意味着結構的突變。並非總體的推翻。不是總體推翻的一個緣由前面已經敘述過,另外一個緣由則是其成本過高。而這個緣由正是也是咱們選擇使用對象或概念做爲軟件構建的基礎而不是功能做爲其基礎的緣由。咱們但願經過使用在人類知識系統中處於更低層次的對象或概念這樣的東西創建系統的可進化性或者說靈活性並以此下降軟件開發在維護階段的成本。方法
因而可知,面向對象或概念的方法,與對軟件「突變」能力的要求是高度一致的。im
不足的是,光有面向對象是不夠的。由於雖然面向對象是構建可進化能力的基礎,但光從這個基礎出發,若是沒有正確的方法仍然不可能真正構建出具備很強進化能力的系統。
要構建具備很強進化能力的系統,就必須構建具備很強進化能力的系統。也就是說,只有你構建出了這樣的系統,你才能擁有這樣的系統。而構建這種系統的方法便是參數化或者說元素化。
這種系統仍然擁有必定的結構,不過這種結構與傳統意義上的結構是不一樣的。它是一種兼具本體論與認識論意義上的結構。它的本體論特徵使它區別於傳統意義上的結構。而它的認識論特徵則使它具備被賦予主觀認識即參數化意義的可能。
事實上,參數自己便是人類認識論的一個部分。它是惟物主義世界觀的一個重要組成部分。由於惟物主義世界觀自己就是在把事物看做是獨立的,分離的個體的基礎上創建起來的。參數做爲一個支撐整個惟物主義大廈的思想元素,在惟物主義認識過程當中起着相當重要的做用。甚至能夠說,沒有參數,任何惟物主義的概念都是不可能創建的。
因此它不但不是咱們將它應用在對象世界的障礙,剛好相反,它在軟件系統中的存在,是將惟物主義世界觀移植到計算機世界的必要步驟。沒有它,要在面向對象的系統中創建惟物主義世界觀是很困難的。
而這正是軟件開發中最大的困難之一。也是人們之因此在面向對象的開發中,大多數人都不自覺地又從新轉向功能性道路的根本緣由。由於認識論在這裏缺位了。認識論缺位的結果即是急功近利,飛蛾撲火。系統走向一條非邏輯化而是功能化的道路。
欲速則不達。
面向對象的思想在西方之因此可以星火燎原的緣由是,他們不象咱們這麼急功近利。他們有着優秀的學術傳統。中國倒是一個商業味極其濃厚以致太濃厚了的國度。儘管西方一直在認可中國的市場經濟的態度上扭扭捏捏,但經濟歸經濟,態度歸態度。咱們雖然在宏觀上還算不上是市場經濟,但實際上在微觀上早就超越或者說一步到位了。這其實也正是中國經濟在一個極其強大的中央政府的存在條件下,仍然欣欣向榮地向前發展的一個因素:中國人實在是太缺錢了。
飛蛾撲火的工做方法帶來的顯然是後遺症。而且這樣的後遺症並不止存在於軟件領域。它存在於全國的各個生產領域。可是此文不討論經濟,因此略過。