直播中
通過上節(jié)的討論我們了解了維特根斯坦在《邏輯哲學(xué)論》一書中提出的OO的思想。即存在如下的認(rèn)識(shí)鏈: 世界 → 事實(shí) → 原子事實(shí) → 對(duì)象(object)。本節(jié)我們討論OO之后是什么這個(gè)問題。我們將從歷史的和邏輯的角度來進(jìn)行推理,看看能得出什么樣的結(jié)論。
一、 從軟件工程的發(fā)展歷史來看
1969年NATO會(huì)議之后,“軟件危機(jī)”成為人們關(guān)注的焦點(diǎn)。為迎接軟件危機(jī)的挑戰(zhàn),人們進(jìn)行了不懈的努力。這些努力大致上是沿著兩個(gè)方向同時(shí)進(jìn)行的。一是從管理的角度,希望實(shí)現(xiàn)軟件開發(fā)過程的工程化。這方面最為著名的成果就是提出了大家都很熟悉的“瀑布式”生命周期模型。它是在60年代末“軟件危機(jī)”后出現(xiàn)的第一個(gè)生命周期模型。如下所示。
分析 → 設(shè)計(jì) → 編碼 → 測試 → 維護(hù)
后來,又有人針對(duì)該模型的不足,提出了快速原型法、螺旋模型、噴泉模型等對(duì)“瀑布式”生命周期模型進(jìn)行補(bǔ)充。現(xiàn)在,它們?cè)谲浖_發(fā)的實(shí)踐中被廣泛采用。
這方面的努力,還使人們認(rèn)識(shí)到了文檔的標(biāo)準(zhǔn)以及開發(fā)者之間、開發(fā)者與用戶之間的交流方式的重要性。一些重要文檔格式的標(biāo)準(zhǔn)被確定下來,包括變量、符號(hào)的命名規(guī)則以及原代碼的規(guī)范格式。
值得一提的是,在開發(fā)者之間、開發(fā)者與用戶之間的交流方式這方面,由于Internet的出現(xiàn)提供了一種全新的交流手段,也產(chǎn)生了一種基于Internet的全新的開發(fā)方式,即OSS(Open Source Software)。 其代表作有Linux(操作系統(tǒng)),Apeche(web server),Sendmail(Mail server)等。OSS是一種極有前途的開發(fā)方式,借Internet發(fā)展的大潮,它勢必會(huì)對(duì)整個(gè)軟件開發(fā)模型產(chǎn)生難以估量的影響。近期的IEEE軟件工程??瘜榇纬鲆黄趯n}特刊。1999年1月份也將舉行關(guān)于Linux/OSS的國際研討會(huì)。各家計(jì)算機(jī)公司紛紛對(duì)此作出反應(yīng),微軟也意識(shí)到了來自O(shè)SS的巨大威脅,在8月底提出了一份內(nèi)部保密的文件,專門提出了自己的應(yīng)對(duì)策略,可謂是山雨欲來風(fēng)滿樓。有興趣者請(qǐng)對(duì)此保持關(guān)注。
軟件工程發(fā)展的第二個(gè)方向,側(cè)重與對(duì)軟件開發(fā)過程中分析、設(shè)計(jì)的方法的研究。這方面的第一個(gè)重要成果就是在70年代風(fēng)靡一時(shí)的結(jié)構(gòu)化開發(fā)方法,即PO(面向過程的開發(fā)或結(jié)構(gòu)話方法)。 PO是人們?cè)谟糜?jì)算機(jī)世界來表達(dá)現(xiàn)實(shí)世界時(shí),追求過程話、模塊化、封裝以及更高的抽象的結(jié)果。 人們用計(jì)算機(jī)來映射現(xiàn)實(shí)世界時(shí),最低層的實(shí)現(xiàn)無非是靠數(shù)字電路技術(shù)產(chǎn)生的高電平與低電平信號(hào)。用數(shù)學(xué)的語言來表示,就是像 010101000010111 這樣的二進(jìn)制串。這樣的抽象層次是極低的,遠(yuǎn)離了自然語言,對(duì)一般人是不可理解的。人們把這些二進(jìn)制串分塊定義,提出了字節(jié)、ASCII碼這樣的更高抽象層次的概念,使之對(duì)應(yīng)于自然語言的一個(gè)個(gè)字母。在此基礎(chǔ)再借助某種形式語言,抽象出變量、表達(dá)式、運(yùn)算、語句等概念。在這個(gè)層面上,一般經(jīng)過訓(xùn)練的程序員已經(jīng)可以比較不那么痛苦地進(jìn)行軟件開發(fā)了。下一步的抽象就產(chǎn)生了PO。 在PO中,人們關(guān)注的是如何用函數(shù)和過程來實(shí)現(xiàn)對(duì)現(xiàn)實(shí)世界的模擬,將其映射到計(jì)算機(jī)世界之中。 OO是這種抽象層次不斷提高的過程的自然發(fā)展結(jié)果,它采用類和對(duì)象的概念,把變量以及對(duì)變量進(jìn)行操作的函數(shù)和過程封裝在一起,用這種更高一級(jí)的抽象來表達(dá)客觀世界。通常,一個(gè)對(duì)象包含一些屬性和方法,它對(duì)應(yīng)于自然語言中一個(gè)有意義的名詞,描述了現(xiàn)實(shí)世界中的一個(gè)物體(物理實(shí)體)或概念(抽象實(shí)體)。 這個(gè)抽象層次如下圖所示:
計(jì)算機(jī)世界中的抽象層次
*XO(X?-Oriented) 最高的抽象層次
?。狾O(對(duì)象、類)
?。狿O(過程、函數(shù)、變量)
?。兞?、運(yùn)算、表達(dá)式、語句
?。止?jié)(4位、8位、16位、32位、64位)
*二進(jìn)制串 0101011110001 最低的抽象層次
從上圖及以上的討論我們知道,軟件工程的發(fā)展歷史就是人們不斷追求更高的抽象、封裝和模塊化的歷史。OO當(dāng)然不會(huì)是歷史的終結(jié)。盡管不能精確得到OO之后是什么,我們至少可以推知,OO之后的XO,必然將是比OO更高一級(jí)的抽象。它所依賴的核心概念必然高于并包容對(duì)象這一概念。正如對(duì)象高于并包容了函數(shù)和變量一樣。
二、 從維特根斯坦在《邏輯哲學(xué)論》一書中的思想來看
前面我們已經(jīng)知道,維特根斯坦在《邏輯哲學(xué)論》 一書中提出了如下思想:
?。澜缈梢苑纸鉃槭聦?shí) ( The world divides into facts.)
?。聦?shí)是由原子事實(shí)(atomic facts)組成的。
?。粋€(gè)原子事實(shí)是多個(gè)對(duì)象(objects)的組合。
?。獙?duì)象是簡單的(基本的) The Object is simple。
?。獙?duì)象形成了世界的基礎(chǔ)。
即: 世界---事實(shí)----原子事實(shí)----對(duì)象這樣一個(gè)從整體到局部、從抽象到具體的認(rèn)識(shí)之鏈。在這個(gè)層次中,對(duì)象作為最基本的模塊,構(gòu)成了整個(gè)認(rèn)識(shí)大廈的基石。對(duì)象通過相互之間的復(fù)雜的關(guān)聯(lián)構(gòu)成了整個(gè)世界。這個(gè)觀點(diǎn)也是面向?qū)ο罄碚摰幕?
上一段我們通過對(duì)計(jì)算機(jī)世界的分析得出,OO之后的發(fā)展,必將產(chǎn)生比OO更高一級(jí)的抽象的概念用于編程。按照維特根斯坦的思想可以很自然地得出結(jié)論:這個(gè)概念就是事實(shí)(FACT)。即面向?qū)ο笾笫敲嫦蚴聦?shí),OO之后是FO(Fact-Oriented)。
那么,什么是事實(shí)(fact)?讓我們?cè)俅沃販匾幌戮S特根斯坦的觀點(diǎn)。
首先,世界是所有事實(shí)的總和。世界可以分解為事實(shí)。任一事實(shí)或者為真,或者不為真。(即事實(shí)應(yīng)返回一個(gè)布爾變量,或?yàn)門RUE,或?yàn)镕ALSE)
其次,那些為真的事實(shí),是由原子事實(shí)(atomic facts)組成的。
原子事實(shí)和簡單對(duì)象的關(guān)系是這樣的:一個(gè)原子事實(shí)是多個(gè)對(duì)象(object)的組合。在原子事實(shí)中,對(duì)象以某種確定的方式相連。原子事實(shí)中對(duì)象相互連接的方式即是原子事實(shí)的結(jié)構(gòu)。 也就是說,原子事實(shí)是有結(jié)構(gòu)的,這種結(jié)構(gòu)被維特根斯坦看作是現(xiàn)實(shí)世界的模式(form)。
這里,維特根斯坦提出了幾個(gè)重要的概念:事實(shí)(fact)、原子事實(shí)(atomic fact)和模式(form)。
如果我們以上的推理過程正確的話,我們將得出一個(gè)結(jié)論:面向?qū)ο?OO)之后是面向事實(shí)(FO),在面向事實(shí)(FO)的分析、設(shè)計(jì)和編程中,我們將主要圍繞事實(shí)(fact)、原子事實(shí)(atomic fact)和模式(form)這些基本概念來組織我們的軟件開發(fā)活動(dòng)。在人們認(rèn)識(shí)世界的層次結(jié)構(gòu)中,這些概念是比對(duì)象(object)和類(class)更高一級(jí)的抽象。