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