天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

對象已死?

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

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

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

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

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

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

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

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

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

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

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

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

  在函數(shù)式語言里,因?yàn)楦唠A函數(shù)(High Order Function)的存在,數(shù)據(jù)可由函數(shù)來表達(dá)。這就是函數(shù)語言里一個(gè)非常重要的觀點(diǎn):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)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 97色色极品av影院 | 日韩欧美视频一区 | 中文字幕人妻无码系列第三区 | 精品亚洲大全 | 蜜桃成熟时33D在线嘟嘟网 | 免费国产黄线在线播放 | 国产av免费观看日本 | 涩涩免费视频软件 | 曰本熟妇乱妇色A片在线 | 耻辱诊察室1一4集动漫在线观看 | 最近中文字幕免费高清MV视频 | 一级做a爰片久久毛片潮喷动漫 | 国产精品日本一区二区在线播放 | 9久久免费国产精品特黄 | 一级性生活毛片 | 看免费人成va视频全 | 最近2019中文字幕免费版视频 | 成人做视频免费 | 午夜伦理一yy4480影院 | 熟妇内谢69XXXXXA片 | 男人J进入女人P免费狂躁 | 中文中幕无码亚洲视频 | 亚洲精品人成电影网 | 动漫H片在线观看播放免费 动漫H片在线播放免费高清 | 亚洲视频免费 | 日本又黄又爽又色又刺激的视频 | 打扑克床上视频不用下载免费观看 | 国产原创剧情麻豆在线 | 无毒成人社区 | 欧美精品熟妇乱 | 手机国产视频福利 | 亚洲乱码中文字幕久久孕妇黑人 | 草草久久久无码国产专区全集观看 | 99久久夜色精品国产亚洲AV卜 | 无人影院在线播放 | 亚洲国产精品久久精品成人网站 | 久久免费看视频 | 干极品美女 | 大陆极品少妇内射AAAAAA | 日韩一区二区三区免费体验 | 欧美性情video sexo视频 |