OO,OO以后,及其極限(1)
發(fā)表時間:2023-08-22 來源:明輝站整理相關軟件相關文章人氣:
[摘要]主題:OO,OO以后,及其極限(上)[保密] ----------------------------------------------------------------------------...
主題:OO,OO以后,及其極限(上)[保密]
--------------------------------------------------------------------------------
大。37734字
來自:茶葉蛋
點擊數:10
發(fā)表時間:
2002-3-11 16:04:36
OO,OO以后,及其極限(1)
1、什么是軟件開發(fā)?
軟件開發(fā)的過程就是人們使用各種計算機語言將人們關心的現實世界映射到計算機世界的過程;
現在的計算機的數學理論基礎是由計算機的開山鼻祖,大名鼎鼎的圖靈于1937年提出的圖靈機模型。 隨后不到十年,電子計算機就誕生了(1945)。(埃尼亞克)
我們都知道,它當時的主要任務之一就是用于導彈彈道軌跡的計算。當時的軟件開發(fā)(如果可以稱之為軟件開發(fā)的話)與現在的大不相同。為了算一道題,要有人事先把完成加減乘除等各類運算的部件像搭積木那樣搭起來,如果換一道題,則要把這些部件分解開來,根據新的要求重新搭建,效率極低(與現在比)。
現代電子計算機的體系結構及實際計算模型來自馮.諾依曼的思想。 1946年他和他的同事們發(fā)現了埃尼亞克的缺陷,發(fā)表了一份報告,提出了程序放入內存,順序執(zhí)行的思想,這樣,當算一道新題時就只需采取改變計算機中的程序的“軟”的方法。
英國的科學家維爾克斯實現了馮.諾依曼的思想,領導研制了“艾克薩克”,在技術上比埃尼亞克來了個大的飛躍。
因此,現在的計算機通常被稱為馮.諾依曼計算機。
軟件開發(fā)的歷史也從此正式開始。
早期程序員們使用機器語言來進行編程運算;隨著編譯技術的出現,人們設計了許多更高級別的語言;這些語言擺脫了機器語言繁瑣的細節(jié),更接近于人的自然語言,迅速流行開來。
據統(tǒng)計,全世界的高級語言起碼有幾千種,但從可計算性的角度看,它們的計算能力都等價于圖靈機。 已經證明,一個計算機語言,只要除了賦值語句之外,還包括順序語句,條件語句和循環(huán)語句,它的計算能力即相當于圖靈機。 這里當然要排除其他技術因素的影響,如程序長度,變量個數,數據精度等。
由于圖靈機的想法是把問題轉化為一步一步按規(guī)則執(zhí)行的機械求解過程,各種計算機語言也不過都是某種形式語言,因此軟件開發(fā)的過程實質上就是程序員們對客觀世界問題域的形式化的過程。
程序員們先建立問題的模型(形式化),再用計算機語言加以合適的表達,最后再輸入計算機里進行計算。
2 從 PO(面向過程)到OO(面向對象)
從上一節(jié)的論述我們知道:
軟件開發(fā)的過程就是人們使用各種計算機語言將人們關心的現實世界(問題域)映射到計算機世界的過程;如下圖:
現實世界問題域 → 建立模型(借助某種建模思想) → 編程實現(借助某種編程語言) → 計算機世界執(zhí)行求解
在談論OO之前,先讓我們回顧一下高級語言的歷史。
最早的高級語言大約誕生于1945年,是德國人楚譯為他的Z-4計算機設計的Plan Calcul,比第一臺電子計算機還早幾個月;在電子計算機上實現的第一個高級語言是美國尤尼法克公司于1952年研制成功的Short Code;而真正得到推廣使用,至今仍在流行的第一個高級語言是美國的計算機科學家巴科斯設計,并于1956年首先在IBM公司的計算機上實現的FORTRAN語言。
早期的高級語言主要是應用于科學和工程計算,其代表作有FORTRAN和ALGOL60。計算機進入商業(yè)和行政管理領域以后,出現了COBOL和 RPG等便于商界使用的語言。近年來,這類語言和數據庫技術,圖形界面技術(可視化編程),面向對象的思想及RAD(Rapid Application Devolopment)的概念相結合,形成了一批更方便使用的所謂第四代語言(4GL),如Powerbuilder,Delphi,VB等。
前一類應用于科學和工程計算的大型語言相對來說更為基礎,因而也更為靈活,應用范圍更為廣泛。 在FORTRAN,BASIC(學習型)之后,自70年代以來,模塊特征更明顯,簡單易用,可靠性強的PASCAL異軍突起,在世界范圍內廣泛流行。 但進入80年代以后,它的地位又逐漸為更實用的C語言替代。 到現在,C語言的地位已相當于一種“高級匯編語言”了。
80年代后期,面向對象的語言開始浮出水面,C++借助使用C語言的龐大程序員隊伍,一舉建立了面向對象語言的老大地位。從而OO的思想正式統(tǒng)治了整個軟件開發(fā)界。C++的流行甚至使得美國軍方從80年開始大力扶植的Ada語言還未及推廣便胎死腹中了。
90年代以后,計算機世界更是發(fā)生了天翻地覆的變化,原先的單機平臺讓位于WEB,“網絡就是計算機”,新的語言不僅要是OO的,Visual的,更要是基于WEB的。 Java語言借INTERNET的東風,橫空出世,一夜紅遍天下,變化之快令人瞠目結舌。
上述這些變化,表面是不同的編程工具在城頭變幻大王旗,但其背后反映的卻是一種更為深刻的認識論的改變,即你是用何種觀點來認識這個世界的?
在PO中,程序員們分析了問題域之后,得到一個PO的模型,其中常見的詞語是變量,函數,過程等;
PO: 現實世界 → 流程圖(變量,函數) → PO語言 → 執(zhí)行求解
在OO中,程序員們先得到一個OO的模型,其中常見的詞語是類,對象,方法,消息等;
OO: 現實世界 → 類圖(對象,方法) → OO語言 → 執(zhí)行求解
我們可以看到:
PO更接近于計算機世界的物理實現;OO則更符合于人們的認識習慣;
如果說,軟件危機的根源在于人們認識表達的過程(不斷反復,逐步深化)和馮.諾依曼計算機的實現過程(順序執(zhí)行)之間存在巨大鴻溝的話,那么從PO到OO意味這這鴻溝在逐漸縮小;
OO作為一種思想及編程語言,為軟件開發(fā)的整個過程——從分析設計到coding——提供了一個完整解決方案。 OO堪稱是軟件發(fā)展取得的里程碑式的偉大成就,人們無不為之喝彩!
一提到OO,我們將會聯想到C++,smalltalk,simula,聯想到Use Case,ROSE,Mr Jacboson 以及Rational公司,但卻很少有人會提及維特跟斯坦(Wittgenstein)。 然而,正是這位充滿傳奇色彩的哲學家,不僅第一次清楚地表達了OO的思想,更進一步提及了OO以后的事情,及其最后的極限所在。
在目前這個變幻莫測的時代重溫并認真思考一下這位先哲的思想,或許能使我們更加清醒,更明確前方道路的漫長。