四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

對象已死?

  最近常有一種說法,就是我們?nèi)缃衩媾R著另外一場編程模型的變革,面向?qū)ο蠹夹g(shù)已經(jīng)處在被淘汰的邊緣,函數(shù)式語言會取代面向?qū)ο蠹夹g(shù)成為主流方式,甚至出現(xiàn)了面向?qū)ο笠阉赖难哉摗W鳛橐粋€硬核函數(shù)語言的狂熱者,我個人當(dāng)然希望函數(shù)式語言可以一統(tǒng)天下,成為主流之選。但是不是應(yīng)該把對象技術(shù)和函數(shù)技術(shù)對立起來,說式后者取前者而代之,我個人認(rèn)為,這和如何看待面向?qū)ο蠹夹g(shù)有關(guān)。

  做為工程實踐的對象技術(shù)

  在這個年代,大家有一種神圣化面向?qū)ο蠹夹g(shù)的傾向,很多人都把對象技術(shù)奉為高深的思想和理論。但實際上,面向?qū)ο蠹夹g(shù)僅僅一種工程實踐而已,它是依托于其他技術(shù)而存在的一種實踐,本身并不是一種完備的計算模型。

  在計算機科學(xué)發(fā)展的早期,對于計算機的非數(shù)值計算應(yīng)用的討論,以及對于可計算性問題的研究和發(fā)展,大抵確立了幾種的計算模型:遞歸函數(shù)類、圖靈機、Lambda演算、Horn子句、Post系統(tǒng)等等。其中遞歸函數(shù)類是可計算性問題的數(shù)學(xué)解釋;Horn子句是prolog這類邏輯語言的理論基礎(chǔ);lambda演算成為了函數(shù)式語言的理論基礎(chǔ);圖靈機是圖靈解決可計算問題的時候所設(shè)計的裝置,其后成為計算機的裝置模型,與圖靈機相關(guān)的自動機以及馮諾依曼結(jié)構(gòu),成為了命令式語言的理論基礎(chǔ)。

  因此當(dāng)我們談及函數(shù)語言和命令式語言優(yōu)劣的時候,我們實際上是在討論其背后的計算模型——也就是lambda演算和馮結(jié)構(gòu)裝置操作——在執(zhí)行效率和抽象層次上的優(yōu)劣。

  而面向?qū)ο蠹夹g(shù)則比較尷尬了,其背后沒有一個對應(yīng)的計算模型(80年代的時候曾有人研究過,Pi演算是個備選,但是這個模型更多的是在并發(fā)對象領(lǐng)域的語義,而不是通常意義上的計算模型)。它有點類似于“最佳實踐”,在不同的計算模型上有著完全不同實現(xiàn)方式和含義。因此對比對象技術(shù)和其他技術(shù)的時候,搞清楚到底是哪一種面向?qū)ο缶妥兊酶裢庵匾饋怼?/p>

  兩種不同的面向?qū)ο?/h2>

  目前流行的對象技術(shù),實際上有兩個截然不同的源頭。它們分別在兩個完全不同的計算模型上發(fā)展起來,但是都頂著“面向?qū)ο?rdquo;這個帽子。

  第一種對象技術(shù)出現(xiàn)的較晚,在1979年以后。它是以抽象數(shù)據(jù)類型(ADT,Abstract Data Type)為源起,發(fā)展出來的面向?qū)ο蠹夹g(shù)。也就是首先被C++所采用的面向?qū)ο蠹夹g(shù)。

  C++作為“更好的C”,繼承了C語言對于程序的看法,也就是數(shù)據(jù)抽象(Data Abstraction)和過程。面向?qū)ο蠹夹g(shù)在C++中,是作為一種更好的數(shù)據(jù)抽象的方式而存在的。

  數(shù)據(jù)抽象在這類面向?qū)ο笳Z言中是一種關(guān)鍵的抽象方式。所謂數(shù)據(jù)抽象,在計算機發(fā)展的早期是一種非常關(guān)鍵的技術(shù)。眾所周知,計算機在裝置模型上是一個存儲和一組指令集,而二進制的存儲實際上是沒有任何類型表示的。整數(shù),浮點這些操作必須通過相應(yīng)的約定,再以指令集的形式進行支持。而隨著計算機的發(fā)展,簡單的數(shù)據(jù)類型顯然已經(jīng)不能滿足應(yīng)用的需要。這時候一種靈活且有效的類型系統(tǒng),就成了一種自然的追求(直到80年代初,類型系統(tǒng)都是計算機科學(xué)研究的重要方向之一)。

  在C++中(以及后來的Java和C#),對象是一種構(gòu)造數(shù)據(jù)類型的方式,把每個“類”看作一段存儲(狀態(tài))和操作(方法)的集合。“類”作為已經(jīng)存在的類型系統(tǒng)的一種擴展(這一點在C++中體現(xiàn)得尤其強烈)。在這類語言中,“類”(class)實際上代替了“對象”(object)成為了頭等公民。構(gòu)造一個更好的類型系統(tǒng),是這種面向?qū)ο蠹夹g(shù)所要解決的問題。與其說是面向?qū)ο螅蝗缯f是面向類或面向類型的。

  從計算語義上說,這類對象技術(shù)仍然是裝置的操作語義,和面向過程的沒有實質(zhì)上的區(qū)別。唯一的不同是,被這種對象語言操作的機器,可以借由對象技術(shù)擴展機器所支持的類型。這種面向?qū)ο蠹夹g(shù)是過程技術(shù)的一種發(fā)展,雖然在抽象層次上沒有什么太大的提高,但在實踐上已經(jīng)是巨大的進步。

  另一種對象技術(shù)出現(xiàn)的很早,大概在60年代末就出現(xiàn)了,直到80年代初還有發(fā)展。但是很長一段時間內(nèi)并不是太主流的做法,反而并不太為人所知。

  在函數(shù)式語言里,因為高階函數(shù)(High Order Function)的存在,數(shù)據(jù)可由函數(shù)來表達(dá)。這就是函數(shù)語言里一個非常重要的觀點:Data as Procedure。在函數(shù)語言中,可以構(gòu)造一種非常類似于對象的高階函數(shù):

(define (make-user name age sex)
(define (dispatch message)
(cond ((eq? message 'getName) name)
((eq? message 'getAge) age)
((eq? message 'getSex) sex))
(else (error 'messageNotUnderstand))))
dispatch)

(define vincent (make-user 'Vincent
30 'Male))
(vincent 'getName)

it知識庫對象已死?,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 速度与激情 电影| 王春晖| 囧妈电影| 成人在线| 浪淘沙刘禹锡古诗其七| 狂野殴美激情性bbbbbb| 还珠格格演员表| 江南好简谱| 羞羞的视频| 心经全文260字| 闵度允演的电影| 巴霍巴利王2国语版在线观看免费 惊弦电视剧完整版免费观看高清 梦的衣裳 | 实验室火灾报警电铃响时应当| 美女全身脱光| 儿子结婚请帖邀请函电子版| 泰国xxx| 欢颜电视剧40集免费观看全集高清| 奇妙的植物世界阅读短文答案| 自拍电影网| 文史茶馆| 台湾卫视| 真爱的谎言| 24点数学题目100道| 芝加哥急救| 大奉打更人电视剧在线观看全集免费播放| 哥谭演员表| 国家征收土地多少钱一亩| 南宝拉| 光明力量2古代封印攻略| 好看电影视频| 迷宫的十字路口讲了什么| 男生虐茎虐睾视频网站| 黄视频免费网站| 周超个人资料简介| 大悲咒朗诵正版念诵| 黄色网址视频免费| juliet stevenson| 电影因果报应完整版观看| 电影宝贝| 白上之黑电影| 黑色的人生中文翻译版|