• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            CG@CPPBLOG

            /*=========================================*/
            隨筆 - 76, 文章 - 39, 評(píng)論 - 137, 引用 - 0
            數(shù)據(jù)加載中……

            (ZT)OO,OO以后,及其極限


            1、什么是軟件開發(fā)?

              軟件開發(fā)的過程就是人們使用各種計(jì)算機(jī)語言將人們關(guān)心的現(xiàn)實(shí)世界映射到計(jì)算機(jī)世界的過程;

              現(xiàn)在的計(jì)算機(jī)的數(shù)學(xué)理論基礎(chǔ)是由計(jì)算機(jī)的開山鼻祖,大名鼎鼎的圖靈于1937年提出的圖靈機(jī)模型。 隨后不到十年,電子計(jì)算機(jī)就誕生了(1945)。(埃尼亞克)

            我們都知道,它當(dāng)時(shí)的主要任務(wù)之一就是用于導(dǎo)彈彈道軌跡的計(jì)算。當(dāng)時(shí)的軟件開發(fā)(如果可以稱之為軟件開發(fā)的話)與現(xiàn)在的大不相同。為了算一道題,要有人 事先把完成加減乘除等各類運(yùn)算的部件像搭積木那樣搭起來,如果換一道題,則要把這些部件分解開來,根據(jù)新的要求重新搭建,效率極低(與現(xiàn)在比)。

              現(xiàn)代電子計(jì)算機(jī)的體系結(jié)構(gòu)及實(shí)際計(jì)算模型來自馮.諾依曼的思想。 1946年他和他的同事們發(fā)現(xiàn)了埃尼亞克的缺陷,發(fā)表了一份報(bào)告,提出了程序放入內(nèi)存,順序執(zhí)行的思想,這樣,當(dāng)算一道新題時(shí)就只需采取改變計(jì)算機(jī)中的程序的“軟”的方法。

              英國的科學(xué)家維爾克斯實(shí)現(xiàn)了馮.諾依曼的思想,領(lǐng)導(dǎo)研制了“艾克薩克”,在技術(shù)上比埃尼亞克來了個(gè)大的飛躍。

              因此,現(xiàn)在的計(jì)算機(jī)通常被稱為馮.諾依曼計(jì)算機(jī)。

              軟件開發(fā)的歷史也從此正式開始。

            早期程序員們使用機(jī)器語言來進(jìn)行編程運(yùn)算;隨著編譯技術(shù)的出現(xiàn),人們?cè)O(shè)計(jì)了許多更高級(jí)別的語言;這些語言擺脫了機(jī)器語言繁瑣的細(xì)節(jié),更接近于人的自然語 言,迅速流行開來。   據(jù)統(tǒng)計(jì),全世界的高級(jí)語言起碼有幾千種,但從可計(jì)算性的角度看,它們的計(jì)算能力都等價(jià)于圖靈機(jī)。 已經(jīng)證明,一個(gè)計(jì)算機(jī)語言,只要除了賦值語句之外,還包括順序語句,條件語句和循環(huán)語句,它的計(jì)算能力即相當(dāng)于圖靈機(jī)。 這里當(dāng)然要排除其他技術(shù)因素的影響,如程序長度,變量個(gè)數(shù),數(shù)據(jù)精度等。

              由于圖靈機(jī)的想法是把問題轉(zhuǎn)化為一步一步按規(guī)則執(zhí)行的機(jī)械求解 過程,各種計(jì)算機(jī)語言也不過都是某種形式語言,因此軟件開發(fā)的過程實(shí)質(zhì)上就是程序員們對(duì)客觀世界問題域的形式化的過程。 程序員們先建立問題的模型(形式化),再用計(jì)算機(jī)語言加以合適的表達(dá),最后再輸入計(jì)算機(jī)里進(jìn)行計(jì)算。


            2 從 PO(面向過程)到OO(面向?qū)ο?

              從上一節(jié)的論述我們知道:

              軟件開發(fā)的過程就是人們使用各種計(jì)算機(jī)語言將人們關(guān)心的現(xiàn)實(shí)世界(問題域)映射到計(jì)算機(jī)世界的過程;如下圖:

              現(xiàn)實(shí)世界問題域 → 建立模型(借助某種建模思想) → 編程實(shí)現(xiàn)(借助某種編程語言) → 計(jì)算機(jī)世界執(zhí)行求解

              在談?wù)揙O之前,先讓我們回顧一下高級(jí)語言的歷史。

            最早的高級(jí)語言大約誕生于1945年,是德國人楚譯為他的Z-4計(jì)算機(jī)設(shè)計(jì)的Plan Calcul,比第一臺(tái)電子計(jì)算機(jī)還早幾個(gè)月;在電子計(jì)算機(jī)上實(shí)現(xiàn)的第一個(gè)高級(jí)語言是美國尤尼法克公司于1952年研制成功的Short Code;而真正得到推廣使用,至今仍在流行的第一個(gè)高級(jí)語言是美國的計(jì)算機(jī)科學(xué)家巴科斯設(shè)計(jì),并于1956年首先在IBM公司的計(jì)算機(jī)上實(shí)現(xiàn)的 FORTRAN語言。

              早期的高級(jí)語言主要是應(yīng)用于科學(xué)和工程計(jì)算,其代表作有FORTRAN和ALGOL60。計(jì)算機(jī)進(jìn)入商業(yè)和行政管 理領(lǐng)域以后,出現(xiàn)了COBOL和 RPG等便于商界使用的語言。近年來,這類語言和數(shù)據(jù)庫技術(shù),圖形界面技術(shù)(可視化編程),面向?qū)ο蟮乃枷爰癛AD(Rapid Application Devolopment)的概念相結(jié)合,形成了一批更方便使用的所謂第四代語言(4GL),如Powerbuilder,Delphi,VB等。

            前一類應(yīng)用于科學(xué)和工程計(jì)算的大型語言相對(duì)來說更為基礎(chǔ),因而也更為靈活,應(yīng)用范圍更為廣泛。 在FORTRAN,BASIC(學(xué)習(xí)型)之后,自70年代以來,模塊特征更明顯,簡單易用,可靠性強(qiáng)的PASCAL異軍突起,在世界范圍內(nèi)廣泛流行。 但進(jìn)入80年代以后,它的地位又逐漸為更實(shí)用的C語言替代。 到現(xiàn)在,C語言的地位已相當(dāng)于一種“高級(jí)匯編語言”了。

              80年代后期,面向?qū)ο蟮恼Z言開始浮出水面,C++借助使用C語言的龐大程序員隊(duì)伍,一舉建立了面向?qū)ο笳Z言的老大地位。從而OO的思想正式統(tǒng)治了整個(gè)軟件開發(fā)界。C++的流行甚至使得美國軍方從80年開始大力扶植的Ada語言還未及推廣便胎死腹中了。

              90年代以后,計(jì)算機(jī)世界更是發(fā)生了天翻地覆的變化,原先的單機(jī)平臺(tái)讓位于WEB,“網(wǎng)絡(luò)就是計(jì)算機(jī)”,新的語言不僅要是OO的,Visual的,更要是基于WEB的。 Java語言借INTERNET的東風(fēng),橫空出世,一夜紅遍天下,變化之快令人瞠目結(jié)舌。

              上述這些變化,表面是不同的編程工具在城頭變幻大王旗,但其背后反映的卻是一種更為深刻的認(rèn)識(shí)論的改變,即你是用何種觀點(diǎn)來認(rèn)識(shí)這個(gè)世界的?   在PO中,程序員們分析了問題域之后,得到一個(gè)PO的模型,其中常見的詞語是變量,函數(shù),過程等;

              PO: 現(xiàn)實(shí)世界 → 流程圖(變量,函數(shù)) → PO語言 → 執(zhí)行求解

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

              OO: 現(xiàn)實(shí)世界 → 類圖(對(duì)象,方法) → OO語言 → 執(zhí)行求解

              我們可以看到:

              PO更接近于計(jì)算機(jī)世界的物理實(shí)現(xiàn);OO則更符合于人們的認(rèn)識(shí)習(xí)慣;

              如果說,軟件危機(jī)的根源在于人們認(rèn)識(shí)表達(dá)的過程(不斷反復(fù),逐步深化)和馮.諾依曼計(jì)算機(jī)的實(shí)現(xiàn)過程(順序執(zhí)行)之間存在巨大鴻溝的話,那么從PO到OO意味這這鴻溝在逐漸縮??;

              OO作為一種思想及編程語言,為軟件開發(fā)的整個(gè)過程——從分析設(shè)計(jì)到coding——提供了一個(gè)完整解決方案。 OO堪稱是軟件發(fā)展取得的里程碑式的偉大成就,人們無不為之喝彩!

            一提到OO,我們將會(huì)聯(lián)想到C++,smalltalk,simula,聯(lián)想到Use Case,ROSE,Mr Jacboson 以及Rational公司,但卻很少有人會(huì)提及維特跟斯坦(Wittgenstein)。 然而,正是這位充滿傳奇色彩的哲學(xué)家,不僅第一次清楚地表達(dá)了OO的思想,更進(jìn)一步提及了OO以后的事情,及其最后的極限所在。

              在目前這個(gè)變幻莫測(cè)的時(shí)代重溫并認(rèn)真思考一下這位先哲的思想,或許能使我們更加清醒,更明確前方道路的漫長。

            3 維特跟斯坦(Wittgenstein)與OO

              維特跟斯坦是本世紀(jì)乃至人類哲學(xué)史上最偉大的哲學(xué)家之一。 他生前只于1922年出版了一本著作——《邏輯哲學(xué)論》(Tractatus Logico-Philosophicus)。在該書中,他闡述了一種世界觀,或者說一種認(rèn)識(shí)世界的觀點(diǎn),這種觀點(diǎn),在六七十年后的今天,終于由一種哲學(xué)思想沉淀到技術(shù)的層面上來,成為計(jì)算機(jī)業(yè)界的寵兒,這就是“OO”,Object-Oriented,面向?qū)ο?,或物件?dǎo)向(港臺(tái)用語)。

              讓我們先扯得遠(yuǎn)點(diǎn)兒,(可能扯得確實(shí)遠(yuǎn)了點(diǎn)),先談?wù)勥@個(gè)人,再談他 《邏輯哲學(xué)論》一書中的 OO 思想。

              對(duì)西方哲學(xué)感興趣的朋友都知道,在西方哲學(xué)史上發(fā)生過兩次深刻的轉(zhuǎn)向。 一次是由“本體論”向“認(rèn)識(shí)論”的轉(zhuǎn)向;另一次是由“認(rèn)識(shí)論”到“方法論”的轉(zhuǎn)向。

            古希臘羅馬時(shí)代的西方哲學(xué),被稱為“本體論”的時(shí)代,那時(shí)哲學(xué)家們最關(guān)心的是世界的本源問題,即世界是由什么組成的?世界的本質(zhì)是什么?等等這些探究世界根本的問題。 從泰勒斯的“萬物皆水”到“四元素”說,“原子論”,再到伯拉圖的“絕對(duì)理念”,都對(duì)這一問題提出了各自的見解。

              基督教借助信仰的影響力量(猶太教傳統(tǒng))和世俗的政治專制力量(羅馬傳統(tǒng)),以上帝這一概念對(duì)此問題作出終結(jié)性回答,持異議者將有生命危險(xiǎn),布魯諾即因此被燒死。當(dāng)然,基督教也出了幾個(gè)杰出的哲學(xué)家,他們繼承了希臘的理性傳統(tǒng),混合了圣經(jīng)的思想,構(gòu)造了宏偉的基督教哲學(xué)體系。他們的代表人物是奧古斯丁和托馬斯.阿奎拿。 阿奎拿曾提出了證明上帝存在的五種方法(希臘理性傳統(tǒng)) 。

              中世紀(jì)之后,隨著文藝復(fù)興運(yùn)動(dòng)的興起,人們開始從上帝的陰影下走出,發(fā)現(xiàn)了自身的作用,即人的價(jià)值。以笛卡爾的“我思故我在”為標(biāo)志,哲學(xué)開始了由“本體論”向“認(rèn)識(shí)論”的轉(zhuǎn)變;這一時(shí)期哲學(xué)關(guān)心的是人的認(rèn)識(shí)的問題,具體的流派以各自側(cè)重的不同常分為 “唯理論”和“經(jīng)驗(yàn)論”,前者注重理論演繹,以笛卡爾等人為代表;后者則注重感覺和經(jīng)驗(yàn),代表人物是洛克,培根等。

              科學(xué)其實(shí)就是融合了“唯理論”和“經(jīng)驗(yàn)論”的長處而發(fā)展壯大的。 既強(qiáng)調(diào)試驗(yàn)和觀察,運(yùn)用歸納法,也重視利用數(shù)學(xué)和邏輯從歸納的結(jié)果出發(fā),構(gòu)造理論框架,演繹出新的科學(xué)定理。

            到了康德以后,尤其是本世紀(jì)初,哲學(xué)的核心問題開始由“認(rèn)識(shí)論”轉(zhuǎn)向“方法論”,哲學(xué)關(guān)心的核心問題是認(rèn)識(shí)如何實(shí)現(xiàn)的問題。這一時(shí)期,哲學(xué)家們開始認(rèn)識(shí)到語言對(duì)于人的認(rèn)識(shí)的特殊地位,他們紛紛從研究語言出發(fā)來研究哲學(xué)。 其中甚至有些人極端的認(rèn)為以前的所有哲學(xué)問題不過是語言的問題而已。哲學(xué)的這次轉(zhuǎn)向有時(shí)也被稱為是“語言的轉(zhuǎn)向” ,新的哲學(xué)觀點(diǎn)被冠以“語言哲學(xué)”或“分析哲學(xué)”的名稱。

              “語言哲學(xué)” 的發(fā)展經(jīng)歷了兩個(gè)階段,或者說可以被進(jìn)一步分為兩個(gè)學(xué)派:“邏輯分析派”和“日常語言派”。維特跟斯坦的引人矚目之處在于:他在前期持邏輯分析的觀點(diǎn),后期則持日常語言的觀點(diǎn)。

              總結(jié)一下上面論述的要點(diǎn),現(xiàn)在我們知道:

            西方哲學(xué)的發(fā)展,經(jīng)歷了兩次變革,一次是認(rèn)識(shí)論轉(zhuǎn)向;一次是語言轉(zhuǎn)向;第一次轉(zhuǎn)向使哲學(xué)的基礎(chǔ)從本體論和形而上學(xué)變?yōu)檎J(rèn)識(shí)論,從研究超驗(yàn)的存在物轉(zhuǎn)到研究認(rèn)識(shí)的主體和主客體關(guān)系;第二次轉(zhuǎn)向把對(duì)主客體的關(guān)系的研究變成了對(duì)主體間的交流和傳達(dá)問題的研究。把對(duì)主體的研究從觀念和思想的領(lǐng)域轉(zhuǎn)到了語言的領(lǐng)域 (語句及其意義);這兩次轉(zhuǎn)向的代表人物分別是笛卡爾和維特跟斯坦。


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

            維特跟斯坦1889年生于維也納。青年時(shí)期的教育首先使他成為一名航空專業(yè)工科研究生,1908-1911,曼徹斯特。23歲時(shí)他到著名的劍橋大學(xué)學(xué)習(xí)哲學(xué),成為羅素的學(xué)生。據(jù)說維特跟斯坦當(dāng)時(shí)正為自己未來的發(fā)展方向感到迷茫,工科還是哲學(xué)?一天晚上他帶著自己的一些手稿(雜感之類的東西)來找羅素,要羅素讀一下,然后判斷自己是否是學(xué)哲學(xué)的料,如果不行的話,就準(zhǔn)備卷鋪蓋走人。 羅素拿起他的手稿,只看了頭一句話,就堅(jiān)決地對(duì)他說,你不學(xué)哲學(xué)太可惜了之類的話。維特跟斯坦這才堅(jiān)定了投身哲學(xué)的決心。

              在第一次世界大戰(zhàn)期間(1914-1918),維特跟斯坦參加奧地利軍隊(duì),后來被俘。正是在這段時(shí)間里,他完成了自己的成名作,《邏輯哲學(xué)論》(Tractatus Logico-Philosophicus)。該書于1922年以英文出版,是他生前出版的唯一的一本著作。

              在這本書中,維特跟斯坦闡述了自己的"邏輯原子論"的哲學(xué)觀點(diǎn),成為該學(xué)派的代表人物之一。 其他著名的“邏輯原子主義者”包括羅素,懷海特,弗雷格等。該書的出版開創(chuàng)了哲學(xué)研究的新方向。

              完成這本書后,維特跟斯坦認(rèn)為自己已經(jīng)解決了所有的哲學(xué)問題,于是他就真的放棄了哲學(xué),先是作了一個(gè)花匠,后來作了一名小學(xué)教師。 需要說明的是,他家很富有,但他主動(dòng)放棄了對(duì)巨額遺產(chǎn)的繼承權(quán),自愿過一種樸素簡單的生活。

            大約10年的時(shí)間,維特跟斯坦脫離了哲學(xué)界。但后來,他對(duì)自己在《邏輯哲學(xué)論》中表述的哲學(xué)的可靠性產(chǎn)生了深深的懷疑。于是,在1929年他重新返回劍橋,成為三一學(xué)院的老師。1939 年他得到了教授的職稱。但在第二次世界大戰(zhàn)期間,他卻以一名醫(yī)生的身份為軍隊(duì)服務(wù)。1947年維特跟斯坦從劍橋退休,定居于愛爾蘭。這一時(shí)期他對(duì)哲學(xué)的思考形成了他后期的哲學(xué)思想。1949年他去了趟美國,當(dāng)年回來時(shí)不幸身患癌癥,1951年在牛津與世長辭。

              死后,他后期的思考被整理出版,《哲學(xué)研究》(Philosophical Investigations),《關(guān)于確定性》(On Certainty) 等等,開創(chuàng)了語言哲學(xué)研究的另一個(gè)新的方向。

              以上我羅里羅唆,主要是介紹了維特跟斯坦在哲學(xué)史上的地位,及其頗具傳奇色彩的一生。興之所至,請(qǐng)大家見諒。

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

            4. OO之后是什么?

            一、 從軟件工程的發(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ì) → 編碼 → 測(cè)試 → 維護(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ā)展的大潮,它勢(shì)必會(huì)對(duì)整個(gè)軟件開發(fā)模型產(chǎn)生難以估量的影響。近期的IEEE軟件工程專刊將為次出一期專題特刊。1999年1月份也將舉行關(guān)于Linux/OSS的國際研討會(huì)。各家計(jì)算機(jī)公司紛紛對(duì)此作出反應(yīng),微軟也意識(shí)到了來自 OSS的巨大威脅,在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位)
             ?。M(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ū)ο罄碚摰幕?/span>

            上一段我們通過對(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í)的抽象。

            5. 最后的極限

              OO之后如果FO,那么我們當(dāng)然要問,F(xiàn)O之后又是什么?再往后哪?有沒有一個(gè)最后的極限?若有,極限何在?這是個(gè)很困難的問題,不過還是讓我們繼續(xù)思考下去,看看能有些什么結(jié)果,盡管它可能會(huì)是十分愚蠢和幼稚。

              我們知道,軟件的實(shí)質(zhì)是人們以計(jì)算機(jī)編程語言為橋梁,將客觀感知世界映射于計(jì)算機(jī)世界中去,以解決人們?cè)诳陀^感知世界中要解決的問題。這里牽涉三個(gè)主要的范疇:

              客觀感知世界--------計(jì)算機(jī)編程語言----------計(jì)算機(jī)世界

            (1)計(jì)算機(jī)世界

              在計(jì)算機(jī)世界中,可以想象的是,單位面積的一塊芯片上可以集成的晶體管數(shù)目總會(huì)有個(gè)上限,摩爾定律早晚要失效。另外,現(xiàn)在多數(shù)電腦采用的馮.諾依曼結(jié)構(gòu)也需要被突破。(如并行計(jì)算的研究)

              (2)計(jì)算機(jī)編程語言

              現(xiàn)在的計(jì)算機(jī)編程語言,都是某種類型的形式語言。要解決一個(gè)問題,首先我們必須為它構(gòu)造算法。也就是說,對(duì)于沒有算法的問題,我們是束手無策的。這類問題被成為是“不可計(jì)算的”。它們的解不能由圖靈機(jī)來產(chǎn)生。這是我們面臨的一個(gè)極限。

            那么一個(gè)問題有了算法,是不是就一定可以解決哪?很遺憾,答案是不。對(duì)于那些NP(非多項(xiàng)式)問題,尤其是NP完備的問題,盡管存在算法,我們?nèi)匀皇菬o法在多項(xiàng)式時(shí)間內(nèi)解決的。著名的“哈密頓線路問題”和“旅行推銷員問題”都屬于這類問題。它們的共同特征是,當(dāng)問題的規(guī)模(或復(fù)雜度)線形增加時(shí),解決該問題所要化的時(shí)間將呈指數(shù)上升,以至于它們盡管理論上是可求解的,但實(shí)際上卻是不可能的。因?yàn)橐ㄙM(fèi)的時(shí)間可能已經(jīng)超過了宇宙的壽命。這也是我們面臨的一個(gè)極限。

              還需要指出,現(xiàn)在的計(jì)算機(jī)語言作為形式語言的一種,也必然具有形式語言自身所有的局限性。數(shù)學(xué)的發(fā)展史上,曾經(jīng)有三次危機(jī),第三次危機(jī)是有羅素的一個(gè)“佯謬”引發(fā)的悖論危機(jī)。為解決此危機(jī),希爾伯特提出了宏偉的形式化規(guī)劃,企圖使數(shù)學(xué)一勞永逸地處于無可爭(zhēng)辯的安全基礎(chǔ)之上??墒?,1931年奧地利25歲的天才數(shù)學(xué)邏輯學(xué)家歌德爾提出了一條劃時(shí)代的定理,粉碎了希爾伯特形式化的美夢(mèng)。哥德爾定理向我們展示,公理系統(tǒng)本身的協(xié)調(diào)性的陳述在被編碼成適當(dāng)?shù)乃阈g(shù)命題后,將成為一道這樣“不能決定的”不能決定的命題。想象一個(gè)表達(dá)式既不為真,也不為假,它的真假對(duì)一個(gè)形式系統(tǒng)(計(jì)算機(jī))而言它是不可判定的。因此在這方面,哥德爾定理是我們面臨的又一個(gè)極限。

            (3)客觀感知世界

              現(xiàn)在讓我們假設(shè)軟件工程已經(jīng)發(fā)展到了這樣一個(gè)理想的境界,有一天我們實(shí)現(xiàn)了自然語言編程,是否就萬事大吉了?換句話,自然語言是否能很好地描述、表達(dá)客觀感知世界?   維特根斯坦在《邏輯哲學(xué)論》里已經(jīng)指出了。

             ?。澜绲囊饬x必定存在于世界之外;
              *顯然倫理學(xué)是無法表述的。 倫理學(xué)是超越現(xiàn)實(shí)的;
             ?。獙?shí)際上存在著不可表達(dá)的東西;這顯示了它的存在;它是神秘的。
              (見《邏輯哲學(xué)論》第六節(jié))

              也就是說,外部世界中存在一些我們可以感知卻無法用語言來表達(dá)的東西。

              他接著說:
              “對(duì)于那些不可言說的,必須保持沉默。”(Whereof one cannot speak,thereof one must be silent)

              這句話,成為我們最后的極限。

              在討論完這三個(gè)范疇中我們將面臨的主要問題后,我們最后來討論一下人的主觀世界對(duì)軟件及軟件開發(fā)的影響。


            6. 極限之外的空間

            世界可以分為主觀想象世界和客觀可感知世界,或者說是內(nèi)世界和外世界。其中,主觀想象世界是計(jì)算機(jī)從未涉足的空間。這是屬于我們個(gè)人的私有空間,充斥著我們自己離奇古怪的幻想和起伏不定的情緒。它具有極大的跳躍性和不確定性,常常以直覺、想象的方式進(jìn)行著自己的活動(dòng)。它們通常是語言所不能表達(dá)的。

              盡管這個(gè)內(nèi)世界是如此的復(fù)雜、混亂、難以捉摸,但它卻是我們與生俱來的一部分。我們就是這樣的人。

              就是這樣的人從事著軟件開發(fā)的工作。

              這樣的人開發(fā)出來的軟件究竟在多大程度上是對(duì)客觀世界不折不扣的映射?還是這個(gè)映射過程已經(jīng)被扭曲或摻雜了?軟件開發(fā)者的這個(gè)主觀想象世界,他們的歡樂、沮喪、奇想、恐懼、希望等等,究竟是怎樣影響著軟件開發(fā)的質(zhì)量?

              人們是要用計(jì)算機(jī)來復(fù)制整個(gè)世界?還是來復(fù)制人本身?
              人們是在扮演上帝的角色嗎?

              這樣的問題我實(shí)在不知該如何去解答,甚至覺得根本無從下手。

              如果你還有足夠的耐心讀到這里,請(qǐng)你也來想一想,希望它們不會(huì)使你頭疼。   :)

              最后,我將引用我從網(wǎng)上偶爾發(fā)現(xiàn)的一篇文章中的話作為結(jié)束語:

            “自以為是的立法者(人類)犯下了一個(gè)大錯(cuò),以為自己能定義整個(gè)軟件開發(fā)過程。他們既不了解其開始也不了解其結(jié)果。學(xué)術(shù)界試了一下,然后就知難而退了。商業(yè)界則對(duì)其毫無辦法。大型軟件開發(fā)商們斥巨資來制造代碼,明明想要扮演上帝的角色,卻還裝作自己是人類的公仆。所有人都在盯著鏡子里的自己。計(jì)算機(jī)卻在一旁偷偷的笑。”

            posted on 2008-06-14 13:24 cuigang 閱讀(187) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 轉(zhuǎn)帖

            国产精品久久久久久久久鸭| 久久免费看黄a级毛片| 无码专区久久综合久中文字幕| 久久久久久久综合综合狠狠| 麻豆精品久久久一区二区| 99久久精品费精品国产一区二区| 日韩av无码久久精品免费| 久久天天躁狠狠躁夜夜2020一 | 久久人人爽人人爽人人片AV不| 青青热久久国产久精品| 亚洲国产精品无码久久青草 | 亚洲国产小视频精品久久久三级 | 久久亚洲AV成人无码国产| 久久久久亚洲av成人网人人软件| 亚洲精品无码久久久| 大香伊人久久精品一区二区| 国内精品久久久久影院老司| 77777亚洲午夜久久多人| 日韩精品无码久久久久久| 国产精品99久久99久久久| 99久久亚洲综合精品成人| 狠狠精品久久久无码中文字幕| 久久久久亚洲AV成人网人人网站 | 久久久久亚洲AV无码专区网站| 无码人妻少妇久久中文字幕| 久久久久亚洲精品日久生情| 久久久无码精品亚洲日韩蜜臀浪潮| 久久久精品2019免费观看| 99久久免费只有精品国产| 日产久久强奸免费的看| 久久国产欧美日韩精品| 久久精品国产半推半就| 深夜久久AAAAA级毛片免费看| 久久国产欧美日韩精品| 精品久久久久久久| 久久精品成人免费观看97| 久久久久久久久66精品片| 国产99精品久久| 久久99热这里只有精品66| 久久精品成人免费网站| 日日狠狠久久偷偷色综合0|