簡談?wù)軐W(xué)與面向?qū)ο蟮年P(guān)系及軟件開發(fā)的發(fā)展方向
【摘 要】 本文主要就哲學(xué)和面向?qū)ο髲能浖こ痰陌l(fā)展到面向?qū)ο蟛呗缘漠a(chǎn)生做了簡單的介紹,同時(shí)概要的描述了面向?qū)ο蟛呗裕矎恼軐W(xué)的角度對軟件工程的發(fā)展方向作出了適當(dāng)?shù)牟聹y。
【關(guān)鍵詞】 面向過程(PO) 面向?qū)ο?OO) 對象(OBJECT) 事實(shí)(FACT)
軟件開發(fā)的過程就是人們使用各種計(jì)算機(jī)語言將人們關(guān)心的現(xiàn)實(shí)世界映射到計(jì)算機(jī)世界的過程。這方面的第一個(gè)重要成果就是在70年代風(fēng)靡一時(shí)的結(jié)構(gòu)化開發(fā)策略,即面向過程的開發(fā)或結(jié)構(gòu)化策略(PO)。面向過程策略是人們在用計(jì)算機(jī)世界來表達(dá)現(xiàn)實(shí)世界時(shí),追求過程化、模塊化、封裝以及更高的抽象的結(jié)果。人們使用計(jì)算機(jī)來映射現(xiàn)實(shí)世界時(shí),最低層的實(shí)現(xiàn)無非是靠數(shù)字電路技術(shù)產(chǎn)生的高電平與低電平信號,用數(shù)學(xué)的語言來表示,就是像0和1這樣的二進(jìn)制碼,這樣的抽象層次是極低的,遠(yuǎn)離了自然語言,對一般人是不可理解的。人們把這些二進(jìn)制串分塊定義,提出了字節(jié)、ASCII碼這樣的更高抽象層次的概念,使之對應(yīng)于自然語言的一個(gè)個(gè)字母。在此基礎(chǔ)再借助某種形式語言,抽象出變量、表達(dá)式、運(yùn)算、語句等概念,下一步的抽象就產(chǎn)生了面向過程策略。在面向過程策略中,人們關(guān)注的是如何用函數(shù)和過程來實(shí)現(xiàn)對現(xiàn)實(shí)世界的模擬,將其映射到計(jì)算機(jī)世界之中。但是到了七十年代末期,軟件行業(yè)受到軟件危機(jī)的困擾,面向過程這種結(jié)構(gòu)化的開發(fā)策略不能夠很好地解決軟件危機(jī),面向?qū)ο筮@種全新概念的策略由此出現(xiàn)。
對象是人腦中的物質(zhì)意識和精神意識,通俗地講,就是事物在人腦中的映象和人腦對事物的意向,對象不是實(shí)體,它可以脫離實(shí)體而存在,對象之間也可以包含對象。對象(Object)一詞,早在十九世紀(jì)就有現(xiàn)象學(xué)大師胡塞爾提出并定義,對象是世界中的物體在人腦中的映象,是人的意識之所以為意識的反映,是做為一種概念而存在的先念的東西,它還包括了人的意愿。對象就是客觀世界中物體在人腦中的映象及人的意向。只要這個(gè)對象存在我們的思維意識當(dāng)中,我們就可以借此判斷同類的東西,這是哲學(xué)作用上的對象。我們經(jīng)常所說的“對象”,一般指的是解決信息領(lǐng)域內(nèi)所遇到理由的策略,特別是應(yīng)用軟件技術(shù)來解決理由的策略。如我們經(jīng)常碰到的面向?qū)ο蟮木幊?Object-Oriented Programming)、面向?qū)ο蟮姆治?Object-Oriented Analysis)、面向?qū)ο蟮脑O(shè)計(jì)(Object-Oriented Design)等。應(yīng)用前面所介紹的關(guān)于對象的概念,可以對這些理由做進(jìn)一步的分析。在面向較復(fù)雜的系統(tǒng),我們可以將它作為一個(gè)對象來進(jìn)行分析。一個(gè)系統(tǒng),或者說解決某個(gè)理由的全套解決方案,作為一個(gè)對象來看,可以由多個(gè)部分組成。同樣,這個(gè)對象也可以由多個(gè)對象組成。對于同類的事物,可以由一個(gè)對象來表示。
哲學(xué)家維特跟斯坦(Wittgenstein),在哲學(xué)史上第一次清楚地表達(dá)了對象的思想,更進(jìn)一步提及了以后的事情。他在他的著作《邏輯哲學(xué)論》(Tractatus Logico-Philosophicus)中闡述了一種世界觀,或者說一種認(rèn)識世界的觀點(diǎn),這種觀點(diǎn),在六七十年后的今天,終于由一種哲學(xué)思想沉淀到技術(shù)的層面上來,成為計(jì)算機(jī)業(yè)界的寵兒,這就是面向?qū)ο?OO)-----(Object-Oriented)。他的思想主要可以概括為:世界由實(shí)際發(fā)生的一切事實(shí)(facts)所組成;事實(shí)(facts)由原子事實(shí)(atomic facts)所組成;原子事實(shí)(atomic facts)由更基本的對象(objects)所組成;我們的關(guān)于外部世界的主觀描述圖畫,與它所描述的外部世界具有相同的邏輯結(jié)構(gòu);我們的思想與客觀世界是邏輯同構(gòu)的;語言的極限就是世界的極限,等等。中心思想是(1)世界可以分解為事實(shí)(The world divides into facts),(2)事實(shí)是由原子事實(shí)(atomic facts)組成的。(3)一個(gè)原子事實(shí)是多個(gè)對象(objects)的組合。(4)對象是基本的(The Object is simple)。(5)對象形成了世界的基礎(chǔ)。即:世界---事實(shí)----原子事實(shí)----對象,這樣一個(gè)從整體到局部、從抽象到具體的認(rèn)識鏈,在這個(gè)層次中,對象作為最基本的模塊,構(gòu)成了整個(gè)認(rèn)識大廈的基石。對象通過相互之間的復(fù)雜的關(guān)聯(lián)構(gòu)成了整個(gè)世界,這個(gè)觀點(diǎn)也是面向?qū)ο罄碚摰幕?/p>
面向?qū)ο笫侨藗冋J(rèn)識客觀世界的抽象層次不斷提高的過程的發(fā)展結(jié)果,它采用類和對象的概念,把變量以及對變量進(jìn)行操作的函數(shù)和過程封裝在一起,用這種更高一級的抽象來表達(dá)客觀世界。面向?qū)ο蟛呗云鹪从诹甏┢冢且环N新的認(rèn)知和表示世界的分析策略、設(shè)計(jì)策略和思維策略。面向?qū)ο蟛呗詫W(xué)的出發(fā)點(diǎn)和所追求的基本目標(biāo)是使人們分析、設(shè)計(jì)與實(shí)現(xiàn)一個(gè)系統(tǒng)的策略盡可能接近人們認(rèn)識一個(gè)系統(tǒng)的策略。也就是使描述理由的理由空間和解決理由的策略空間在結(jié)構(gòu)上盡可能一致。其基本思想是:對理由空間進(jìn)行自然分割,以更接近人類思維的方式建立理由域模型,以便對客觀實(shí)體進(jìn)行結(jié)構(gòu)模擬和行為模擬,從而使設(shè)計(jì)出的軟件盡可能直接地描述現(xiàn)實(shí)世界,構(gòu)造出模塊化的、可重用的、維護(hù)性好的軟件,同時(shí)限制軟件的復(fù)雜性和降低開發(fā)維護(hù)費(fèi)用。
面向?qū)ο蟛呗栽谲浖_發(fā)中對方案的解決具有很大的好處,在設(shè)計(jì)優(yōu)秀合理的情況下尤其如此,人們可以只編寫一次代碼而在今后能夠反復(fù)重用,面向?qū)ο缶幊虦p少了編寫代碼的總量,加快了開發(fā)的進(jìn)度,也同時(shí)降低了軟件中的錯(cuò)誤量。同時(shí)面向?qū)ο蠹夹g(shù)也為軟件工業(yè)實(shí)現(xiàn)工程化提供了強(qiáng)有力的支持。
人們提出了許多面向?qū)ο蟮挠?jì)算機(jī)程序設(shè)計(jì)語言、面向?qū)ο蟮能浖O(shè)計(jì)策略、面向?qū)ο蟮臄?shù)據(jù)庫等等。自80年代后期以來,相繼出現(xiàn)的多種面向?qū)ο箝_發(fā)的策略有OMT(Object Modeling Technique),OOD(Object Oriented Design),RDD(Responsibility-Driven Design),OOAD(Object-Oriented Analysis and Design),OOSE(Object-Oriented Software Engineering)和VMT(Visual Modeling Technique)等等,C++,Objective-C,Object Pascal, CLOS(Common Lisp Object System),Eiffel,Actor這些語言也相繼出現(xiàn)。面向?qū)ο蟛呗砸呀?jīng)發(fā)展成一種完整的策略論和系統(tǒng)化的技術(shù)體系。那么面向?qū)ο蟛呗灾竽,軟件工程的發(fā)展方向又應(yīng)該是什么呢?由上面的討論可以知道,軟件工程的發(fā)展歷史就是人們不斷追求更高的抽象、封裝和模塊化的歷史。由維特根斯坦在《邏輯哲學(xué)論》中提出的思想得知,比對象更為抽象的概念是“事實(shí)(FACT)”,即面向?qū)ο笾笫敲嫦蚴聦?shí),OO之后是FO(Fact-Oriented)。在他的哲學(xué)思想上來說,世界是所有事實(shí)的總和,世界可以分解為事實(shí)。任一事實(shí)或者為真,或者不為真。其次,那些為真的事實(shí),是由原子事實(shí)(atomic facts)組成的。原子事實(shí)和簡單對象的關(guān)系是一個(gè)原子事實(shí)是多個(gè)對象(object)的組合。在原子事實(shí)中,對象以某種確定的方式相連。原子事實(shí)中對象相互連接的方式即是原子事實(shí)的結(jié)構(gòu)。也就是說,原子事實(shí)是有結(jié)構(gòu)的,這種結(jié)構(gòu)被維特根斯坦看作是現(xiàn)實(shí)世界的模式(form)。這里有幾個(gè)重要的概念:事實(shí)(fact)、原子事實(shí)(atomic fact)和模式(form)。這樣可以知道面向?qū)ο?OO)之后是面向事實(shí)(FO),在面向事實(shí)(FO)的分析、設(shè)計(jì)和編程中,我們將主要圍繞事實(shí)(fact)、原子事實(shí)(atomic fact)和模式(form)這些基本概念來組織我們的軟件開發(fā)活動(dòng)。在人們認(rèn)識世界的層次結(jié)構(gòu)中,這些概念是比對象(object)和類(class)更高一級的抽象。
那么面向事實(shí)以后又該是什么呢,這在哲學(xué)上看來這個(gè)理由似乎是無法解決的,它表明,存在一個(gè)極限。首先,要知道,軟件的實(shí)質(zhì)是人們以計(jì)算機(jī)編程語言為橋梁,將客觀感知世界映射于計(jì)算機(jī)世界中去,以解決人們在客觀感知世界中要解決的理由。這里牽涉三個(gè)主要的范疇:客觀世界,計(jì)算機(jī)編程語言和計(jì)算機(jī)世界,計(jì)算機(jī)方面很顯然,在單片CHIP上集成的元件個(gè)數(shù)總會(huì)有限,發(fā)展不可能無限進(jìn)行下去,軟件直接受硬件的發(fā)展限制;計(jì)算機(jī)編程語言方面,人們利用軟件解決理由,總會(huì)求助于數(shù)學(xué)上的算法,如果一個(gè)理由根本沒有算法,那么肯定是得不到解決的,還有一些理由,雖然理論上存在算法,但在人類有限的時(shí)間和空間里也同樣不可能得到解決,這類的理由人們也是束手無策;再看客觀世界,人們總是不斷在用自己的主觀思維來描述身邊的客觀世界,人類的主觀思維充斥著自己離奇古怪的幻想和起伏不定的情緒,具有極大的跳躍性和不確定性,常常以直覺、想象的方式進(jìn)行著自己的活動(dòng),通常是語言所不能表達(dá)的,也就更談不上用程序去表達(dá),軟件開發(fā)者的這個(gè)主觀想象世界很大程度上地影響著軟件的開發(fā),這里存在一個(gè)極限。維特根斯坦在《邏輯哲學(xué)論》中有一句話清楚地表達(dá)了這種思想:“對于那些不可言說的,必須保持沉默(Whereof one cannot speak,thereof one must be silent)。”
參考文獻(xiàn)
[1]全增暇,主編.《西方哲學(xué)史》.1996年.
[2]李光志,等.對象分析與設(shè)計(jì)策略比較.電子工業(yè)出版社,1996年.
[3]馮玉琳,等.對象技術(shù)導(dǎo)論.科學(xué)出版社,1998年.
[4]邵維忠,楊芙清.面向?qū)ο蟮姆治?清華大學(xué)出版社,1998年.
【簡談?wù)軐W(xué)與面向?qū)ο蟮年P(guān)系及軟件開發(fā)的發(fā)展方向】相關(guān)文章:
簡析成語的哲學(xué)意蘊(yùn)11-26
簡析從師生關(guān)系談研究生培養(yǎng)質(zhì)量03-05
哲學(xué)與法學(xué)的關(guān)系探析02-28
談新時(shí)期法學(xué)教育的發(fā)展方向02-21
試談?wù)摽茖W(xué)與哲學(xué)的關(guān)系02-28
談?wù)軐W(xué)思想的藝術(shù)發(fā)揮02-20
談中國哲學(xué)人生研究01-18
當(dāng)代醫(yī)患關(guān)系哲學(xué)思考論文04-24
- 相關(guān)推薦