小說王耽美小說網

面向對象的編程與維特根斯坦 ( 轉)上

關燈
1、什麽是軟件開發?

軟件開發的過程就是人們使用各種計算機語言將人們關心的現實世界映射到計算機

世界的過程;

現在的計算機的數學理論基礎是由計算機的開山鼻祖,大名鼎鼎的圖靈於1937年提出

的圖靈機模型。隨後不到十年,電子計算機就誕生了(1945)。(埃尼亞克)

我們都知道,它當時的主要任務之一就是用於導彈彈道軌跡的計算。當時的軟件開發

(如果可以稱之為軟件開發的話)與現在的大不相同。為了算一道題,要有人事先把完成

加減乘除等各類運算的部件像搭積木那樣搭起來,如果換一道題,則要把這些部件分解

開來,根據新的要求重新搭建,效率極低(與現在比)。

現代電子計算機的體系結構及實際計算模型來自馮.諾依曼的思想。1946年他和他的

同事們發現了埃尼亞克的缺陷,發表了一份報告,提出了程序放入內存,順序執行的思想

,這樣,當算一道新題時就只需采取改變計算機中的程序的“軟”的方法。

英國的科學家維爾克斯實現了馮.諾依曼的思想,領導研制了“艾克薩克”,在技術

上比埃尼亞克來了個大的飛躍。

因此,現在的計算機通常被稱為馮.諾依曼計算機。

軟件開發的歷史也從此正式開始。

早期程序員們使用機器語言來進行編程運算;隨著編譯技術的出現,人們設計了許多

更高級別的語言;這些語言擺脫了機器語言繁瑣的細節,更接近於人的自然語言,迅速流

行開來。

據統計,全世界的高級語言起碼有幾千種,但從可計算性的角度看,它們的計算能力

都等價於圖靈機。已經證明,一個計算機語言,只要除了賦值語句之外,還包括順序語

句,條件語句和循環語句,它的計算能力即相當於圖靈機。

這裏當然要排除其他技術因素的影響,如程序長度,變量個數,數據精度等。

由於圖靈機的想法是把問題轉化為一步一步按規則執行的機械求解過程,各種計算

機語言也不過都是某種形式語言,因此軟件開發的過程實質上就是程序員們對客觀世界問

題域的形式化的過程。

程序員們先建立問題的模型(形式化),再用計算機語言加以合適的表達,最後再輸入

計算機裏進行計算。

2從PO(面向過程)到OO(面向對象)

從上一節的論述我們知道:

軟件開發的過程就是人們使用各種計算機語言將人們關心的現實世界(問題域)映射到

計算機世界的過程;如下圖:

現實世界問題域-----建立模型(借助某種建模思想)------編程實現

(借助某種編程語言)-------計算機世界執行求解

在談論OO之前,先讓我們回顧一下高級語言的歷史.

最早的高級語言大約誕生於1945年,是德國人楚譯為他的Z-4計算機設計的Plan

Calcul,比第一臺電子計算機還早幾個月;在電子計算機上實現的第一個高級語言是美國

尤尼法克公司於1952年研制成功的ShortCode;而真正得到推廣使用,

至今仍在流行的第一個高級語言是美國的計算機科學家巴科斯設計,並於1956年首先在

IBM公司的計算機上實現的FORTRAN語言.

早期的高級語言主要是應用於科學和工程計算,其代表作有FORTRAN和ALGOL60.計算機

進入商業和行政管理領域以後,出現了COBOL和RPG等便於商界使用的語言.近年來,這類語

言和數據庫技術,圖形界面技術(可視化編程),面向對象的思想及RAD(RapidApplication

Devolopment)的概念相結合,形成了一批更方便使用的所謂第四代語言(4GL),如

Powerbuilder,Delphi,VB等.

前一類應用於科學和工程計算的大型語言相對來說更為基礎,因而也更為靈活,應用範

圍更為廣泛.在FORTRAN,BASIC(學習型)之後,自70年代以來,模塊特征更明顯,簡單易用

,可靠性強的PASCAL異軍突起,在世界範圍內廣泛流行.但進入80年代以後,

它的地位又逐漸為更實用的C語言替代.到現在,C語言的地位已相當於一種“高級匯編語

言“了.

80年代後期,面向對象的語言開始浮出水面,C++借助使用C語言的龐大程序員隊伍,

一舉建立了面向對象語言的老大地位.從而OO的思想正式統治了整個軟件開發界.C++的

流行甚至使得美國軍方從80年開始大力扶植的Ada語言還未及推廣便胎死腹中了.

90年代以後,計算機世界更是發生了天翻地覆的變化,原先的單機平臺讓位於WEB,

“網絡就是計算機“,新的語言不僅要是OO的,Visual的,更要是基於WEB的.Java語言借

INTERNET的東風,橫空出世,一夜紅遍天下,變化之快令人瞠目結舌.

上述這些變化,表面是不同的編程工具在城頭變幻大王旗,但其背後反映的卻是一種

更為深刻的認識論的改變,即你是用何種觀點來認識這個世界的?

在PO中,程序員們分析了問題域之後,得到一個PO的模型,其中常見的詞語是變量,

函數,過程等;

PO:現實世界-----流程圖(變量,函數)------PO語言-------執行求解

在OO中,程序員們先得到一個OO的模型,其中常見的詞語是類,對象,方法,消息等;

OO:現實世界-----類圖(對象,方法)------OO語言-------執行求解

我們可以看到:

PO更接近於計算機世界的物理實現;

OO則更符合於人們的認識習慣;

如果說,軟件危機的根源在於人們認識表達的過程(不斷反覆,逐步深化)和馮.諾依曼

計算機的實現過程(順序執行)之間存在巨大鴻溝的話,那麽從PO到OO意味這這鴻溝在逐

漸縮小;

OO作為一種思想及編程語言,為軟件開發的整個過程--從分析設計到coding--提供了

一個完整解決方案.OO堪稱是軟件發展取得的裏程碑式的偉大成就,人們無不為之喝彩!

一提到OO,我們將會聯想到C++,smalltalk,simula,聯想到UseCase,ROSE,Mr.

Booch,Jacboson以及Rational公司,但卻很少有人會提及維特跟斯坦(Wittgenstein).

然而,正是這位充滿傳奇色彩的哲學家,不僅第一次清楚地表達了OO的思想,更進一

步提及了OO以後的事情,及其最後的極限所在.

在目前這個變幻莫測的時代重溫並認真思考一下這位先哲的思想,或許能使我們更加

清醒,更明確前方道路的漫長.

3維特跟斯坦(Wittgenstein)與OO

維特跟斯坦是本世紀乃至人類哲學史上最偉大的哲學家之一。他生前只於1922年出

版了一本著作——《邏輯哲學論》(TractatusLogico-Philosophicus)。

在該書中,他闡述了一種世界觀,或者說一種認識世界的觀點,這種觀點,在六七十年

後的今天,終於由一種哲學思想沈澱到技術的層面上來,成為計算機業界的寵兒,這就是

“OO”,Object-Oriented,面向對象,或物件導向(港臺用語)。

讓我們先扯得遠點兒,(可能扯得確實遠了點),先談談這個人,再談他《邏輯哲學

論》一書中的OO思想。

對西方哲學感興趣的朋友都知道,在西方哲學史上發生過兩次深刻的轉向。一次是

由“本體論”向“認識論”的轉向;另一次是由“認識論”到“方法論”的轉向。

古希臘羅馬時代的西方哲學,被稱為“本體論”的時代,那時哲學家們最關心的是

世界的本源問題,即世界是由什麽組成的?世界的本質是什麽?等等這些探究世界根本

的問題。從泰勒斯的“萬物皆水”到“四元素”說,“原子論”,再到伯拉圖的“絕對

理念”,都對這一問題提出了各自的見解。

基督教借助信仰的影響力量(猶太教傳統)和世俗的政治專制力量(羅馬傳統),以上

帝這一概念對此問題作出終結性回答,持異議者將有生命危險,布魯諾即因此被燒死。

當然,基督教也出了幾個傑出的哲學家,他們繼承了希臘的理性傳統,混合了聖經的思

想,構造了宏偉的基督教哲學體系。他們的代表人物是奧古斯丁和托馬斯.阿奎拿。

阿奎拿曾提出了證明上帝存在的五種方法(希臘理性傳統)。

中世紀之後,隨著文藝覆興運動的興起,人們開始從上帝的陰影下走出,發現了自身

的作用,即人的價值。

以笛卡爾的“我思故我在”為標志,哲學開始了由“本體論”向“認識論”的轉變;這一

時期哲學關心的是人的認識的問題,具體的流派以各自側重的不同常分為“唯理論”和

“經驗論”,前者註重理論演繹,以笛卡爾等人為代表;後者則註重感覺和經驗,代表

人物是洛克,培根等。

科學其實就是融合了“唯理論”和“經驗論”的長處而發展壯大的。既強調試驗和

觀察,運用歸納法,也重視利用數學和邏輯從歸納的結果出發,構造理論框架,演繹出

新的科學定理。

到了康德以後,尤其是本世紀初,哲學的核心問題開始由“認識論”轉向“方法論

”,哲學關心的核心問題是認識如何實現的問題。這一時期,哲學家們開始認識到語言

對於人的認識的特殊地位,他們紛紛從研究語言出發來研究哲學。

其中甚至有些人極端的認為以前的所有哲學問題不過是語言的問題而已。

哲學的這次轉向有時也被稱為是“語言的轉向”,新的哲學觀點被冠以“語言哲學

”或“分析哲學”的名稱。

“語言哲學”的發展經歷了兩個階段,或者說可以被進一步分為兩個學派:“邏輯

分析派”和“日常語言派”。維特跟斯坦的引人矚目之處在於:他在前期持邏輯分析的觀

點,後期則持日常語言的觀點。

總結一下上面論述的要點,現在我們知道:

西方哲學的發展,經歷了兩次變革,一次是認識論轉向;一次是語言轉向;第一次轉

向使哲學的基礎從本體論和形而上學變為認識論,從研究超驗的存在物轉到研究認識的主

體和主客體關系;第二次轉向把對主客體的關系的研究變成了對主體間的交流和傳達問題的研究。把對主體的研

究從觀念和思想的領域轉到了語言的領域(語句及其意義);這兩次轉向的代表人物分別是

笛卡爾和維特跟斯坦。

下面是維特跟斯坦(Wittgenstein)的小傳。

維特跟斯坦1889年生於維也納。

青年時期的教育首先使他成為一名航空專業工科研究生,1908-1911,曼徹斯特。23歲時

他到著名的劍橋大學學習哲學,成為羅素的學生。據說維特跟斯坦當時正為自己未來的

發展方向感到迷茫,工科還是哲學?一天晚上他帶著自己的一些手稿(雜感之類的東西)

來找羅素,要羅素讀一下,然後判斷自己是否是學哲學的料,如果不行的話,就準備卷

鋪蓋走人。羅素拿起他的手稿,只看了頭一句話,就堅決地對他說,你不學哲學太可

惜了之類的話。維特跟斯坦這才堅定了投身哲學的決心。

在第一次世界大戰期間(1914-1918),維特跟斯坦參加奧地利軍隊,後來被俘。

正是在這段時間裏,他完成了自己的成名作,《邏輯哲學論》(TractatusLogico-Ph

ilosophicus)。該書於1922年以英文出版,是他生前出版的唯一的一本著作。

在這本書中,維特跟斯坦闡述了自己的“邏輯原子論“的哲學觀點,成為該學派的

代表人物之一。其他著名的“邏輯原子主義者”包括羅素,懷海特,弗雷格等。

該書的出版開創了哲學研究的新方向。

完成這本書後,維特跟斯坦認為自己已經解決了所有的哲學問題,於是他就真的

放棄了哲學,先是作了一個花匠,後來作了一名小學教師。需要說明的是,他家很富

有,但他主動放棄了對巨額遺產的繼承權,自願過一種樸素簡單的生活。

大約10年的時間,維特跟斯坦脫離了哲學界。但後來,他對自己在《邏輯哲學論》

中表述的哲學的可靠性產生了深深的懷疑。於是,在1929年他重新返回劍橋,成為三一

學院的老師。1939年他得到了教授的職稱。但在第二次世界大戰期間,他卻以一名醫生

的身份為軍隊服務。1947年維特跟斯坦從劍橋退休,定居於愛爾蘭。這一時期他對哲學

的思考形成了他後期的哲學思想。1949年他去了趟美國,當年回來時不幸身患癌癥,

1951年在牛津與世長辭。

死後,他後期的思考被整理出版,《哲學研究》(PhilosophicalInvestigations)

,《關於確定性》(OnCertainty)等等,開創了語言哲學研究的另一個新的方向。

以上我羅裏羅唆,主要是介紹了維特跟斯坦在哲學史上的地位,及其頗具傳奇色彩

的一生。興之所至,請大家見諒。

下面我們進入主題,談一談《邏輯哲學論》及其中表述的OO思想。

4<<邏輯哲學論>>中的OO

<<邏輯哲學論>>是維特根斯坦生前出版的唯一著作,也是他的成名之作.書中的觀點

反映了他前期的哲學思考,通常被冠以“邏輯原子論“的標簽.維特根斯坦在前期認為:

傳統的形而上學的混亂和困惑是由於誤用語言所致;把哲學

從“語言病“中解放出來,是哲學的重要任務.他力圖建立“經過語言分析的澄清活動“的

本體論和認識論;維特根斯坦甚至宣稱:哲學的唯一任務就是治療其所患的語言病,

一旦這個目的達到,哲學就沒有別的事要作了,也就沒有必要存在了.

維特根斯坦認為他的<<邏輯哲學論>>正是在上述意義上確鑿無疑的從根本上解決了哲

學的基本問題.他的基本解決方法是:為思想的表述劃一條界限,分清什麽是能夠說的,

什麽是不能說的.他認為,凡是能夠說的東西,都可以由經驗科學說清楚,對於不能說

的,則應保持沈默.

<<邏輯哲學論>>一書只有薄薄的30頁紙.書的結構也很獨特,有點像古龍的小說?

共分7節,以如下結構排列:

1Theworldiseverythingthatisthecase

1.1Theworldisthetotalityoffacts,notofthings

1.1.1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)

1.1.2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)

.............

.............

1.2Theworlddividesintofacts.

1.2.1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)

1.2.2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)

.............

.............

2Whatisthecase,thefact,istheexistenceofatomicfacts.

2.1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(省略)

.............

.............

7Whereofonecannotspeak,thereofonemustbesilent.

該書語言簡潔,結構獨特,內涵豐富,略帶神秘色彩,因此有人稱之為西方的“道德

經“.

下面我們將進入此書,體會一下這本在20年代出版的書中蘊含的OO思想(中英文對

照).

說明:中文是我自己翻譯的,不妥之處,敬請指教.

該書第一節第一句話劈頭說到:

1世界就是所有為真的一切.

(Theworldiseverythingthatisthecase)

這裏,“isthecase“即“istrueorcorrect“,也就是我們在數理邏輯中所

說的那個“真“,是世界的實際情況.

接下來是對1這句話的進一步說明:

1.1世界是所有事實,而非事物,的總和.

(Theworldisthetotalityoffacts,notofthings)

對1.1這句話又作了進一步說明:

1.11世界是由事實所決定的,並且由全部事實所決定.

(Theworldisdeterminedbythefacts,and

bythesebeingallthefacts.)

1.12因為事實的總和既斷定了什麽是真的,也斷定了什麽不是真的.

(Forthetotalityoffactsdeterminesbothwhatisthe

case,andalsoallthatisnotthecase.)

1.13邏輯空間中的事實(所有為真的)就是整個世界

(Thefactsinlogicalspacearetheworld)

1.2世界可以分解為事實

(Theworlddividesintofacts.)

1.2.1任一事實或者為真,或者不為真,其它所有事實皆然.

(Anyonecaneitherbethecaseornotbethecase,

andeverythingelseremainsthesame.)

*******************************************************************

小結1:1主要想說明---世界由實際發生的一切事實(facts)所組成.

*******************************************************************

第二節2那些為真的事實,是由原子事實組成的.

(Whatisthecase,thefact,istheexistenceofatomicfacts.)

2.01一個原子事實是多個對象(或實體,事物)的組合.(object!!)

Anatomicfactisbinationofobjects(entities,things)

2.011事物的一個基本性質就是,它可以成為某個原子事實的一個組成

部分

(Itisessentialtoathingthatitcanbeaconstitute

partofanatomicfact)

.....

2.013每個事物都是,正如假設的那樣,處於一個由可能的原子事實

空間之中;我可以想象這樣的空間為空,我卻無法想象一個無原子事實空間可依

的事物.

(Everythingis,asitwere,inaspaceofpossible

atomicfacts;

Icanthinkofthisspaceasempty,butnotofthe

thingwithoutthespace)

2.014對象包含了事務的全部狀態的可能性(?)

(Objectscontainthepossibilityofallstatesofaffairs)

...

2.02對象是簡單的(基本的)

TheObjectissimple.

2.0201每個關於覆雜事物的陳述都可以分解為對其組成部分的陳述,

而且能被分解成能完全描述這些覆雜事物的陳述.

(Everystatementabouplexescanbe****ysedintoa

statementabouttheirconstituentparts,andinto

thosepropositionswhicpletely

describethplexse.)

2.021對象形成了世界的基礎.因而它們不會是覆合物.

(Objectsformthesubstanceoftheworld.

Thereforetheycannnotbpound)

2.022盡管我們主觀想象中的世界和現實的客觀世界是不同的,

但是它們之間顯然有些東西

----一種模式----是相同的.

(Itisclearthathoweverdifferentfromtherealone

animaginedworldmaybe

itmusthavesomthing--aform--imonwith

therealworld.)

2.023這種固定不變的模式由對象組成.

(Thisfixedformconsistsoftheobjects)

例如:我們在頭腦中想象出來“一個人騎著一輛自行車“這幅情景和

客觀世界中實際發生的情景可能是不是完全相同的,但它們

二者之間都具有一種相同的結構:人---騎----自行車正是由於這個相同的結構,我

們的主觀世界才和客觀世界發生了一致的聯系,我們的表達

才成為可能.這個結構,是由更簡單的對象組成的,如人,自行車.

.........

2.026只有存在對象,才能有一個固定模式的世界的存在.

(Onlyifthereareobjectscantherebeafixed

formoftheworld)

2.03在原子事實中,對象如一條鎖鏈相互連接.

(Intheatomicfactobjectshangoneinanother,like

thelinksofachain)

2.031在原子事實中,對象以某種確定的方式相連.

(Intheatomicfacttheobjectsarbinedina

difiniteway)

2.032原子事實中對象相互連接的方式即是原子事實的結構

(Thewayinwhichobjectshangtogetherinthe

atomicfactis

thestructureoftheatomicfact)

............

2.034事實的結構存在於原子事實的結構之中

(Thestructureofthefactconsists

inthestructuresoftheatomicfacts)

2.04存在的原子事實的總和即是世界

(Thetotalityofexistentatomicfactsistheworld)

2.05存在的原子事實的總和也確定了那些原子事實不存在

(Thetotalityofexistenceatomicfactsalsodetermines

whichatomicfactsdonotexist)

......

2.1我們為自己產生事實的圖畫.

(Wemaketoourselvespicturesoffacts)

說明:指我們的主觀世界中產生一幅客觀世界的圖畫,即主觀

對客觀的認識圖景.

2.12那圖畫是現實的模型

Thepictureisamodelofreality.

2.13對象(現實世界中的)對應於那圖畫中的各元素.

Totheobjectscorrespondinthepicturetheelememts

ofthepicture.

2.131那圖畫中的各元素代表對象(現實世界中的)

Theelementsofpicturestand,inthepicture,

fortheobjects.

----《完》----

本站無廣告,永久域名(danmei.twking.cc)