上世紀(jì)60年代 ,挪威計(jì)算中心。
一個(gè)新來(lái)員工剛上班,發(fā)現(xiàn)有兩個(gè)人居然在一樓的黑板前打架
![]()
新員工立刻跑到電話接線員那里報(bào)告
![]()
什么樣的編程語(yǔ)言,能讓兩人大動(dòng)肝火?
當(dāng)時(shí)Nygaard正在編寫(xiě)復(fù)雜系統(tǒng)的模擬程序,模擬程序要求先定義通用的行為,然后再創(chuàng)建大量的實(shí)例出來(lái)。
![]()
![]()
挪威不是計(jì)算機(jī)和軟件的強(qiáng)國(guó),挪威計(jì)算中心也不是資金雄厚的研究所。
Dahl和Nygaard要發(fā)明新編程語(yǔ)言的事情,遭到了組織內(nèi)部的批評(píng)。
![]()
但是Dahl和Nygaard并不在意,他們以ALGOL 60 為基礎(chǔ),開(kāi)始設(shè)計(jì)Simula 。
![]()
在不斷的設(shè)計(jì)迭代中,兩人迸發(fā)出來(lái)強(qiáng)大的創(chuàng)造力,在Simula中發(fā)明了現(xiàn)代面向?qū)ο蟮乃嘘P(guān)鍵概念!
![]()
Simula本意是為了做“模擬”,但后來(lái)大家認(rèn)識(shí)到,這是一種新的編程泛型,它完全可以作為通用的編程語(yǔ)言。
![]()
Simula是世界上第一個(gè)面向?qū)ο蟮恼Z(yǔ)言,Dahl和Nygaard因?yàn)閷?duì)面向?qū)ο蟮淖吭截暙I(xiàn)獲得了計(jì)算機(jī)界最高獎(jiǎng):圖靈獎(jiǎng)。
可惜的是,2002年,Dahl和Nygaard不幸去世,在這里向兩位前輩致敬。![]()
讓我們?cè)侔涯抗廪D(zhuǎn)向美國(guó),1968年,博士生Alan Kay 提了一個(gè)非常超前的想法:制作一臺(tái)適合所有年齡段兒童的個(gè)人電腦!Dynabook。
![]()
Dynabook需要有圖形用戶界面,有無(wú)線網(wǎng)絡(luò),可以協(xié)作,并且本身就是個(gè)強(qiáng)大的編程環(huán)境。
![]()
1970年,Alan Kay 加入了著名的施樂(lè)帕洛阿托研發(fā)中心,Dynabook的想法成功地激發(fā)施樂(lè)開(kāi)發(fā)了Alto電腦。
Alto電腦是個(gè)劃時(shí)代的產(chǎn)品,里邊有很多影響后世計(jì)算機(jī)的重大創(chuàng)新
![]()
![]()
Smalltalk是第一個(gè)純粹的面向?qū)ο缶幊陶Z(yǔ)言,在Smalltalk中,一切都是對(duì)象!
![]()
所有的計(jì)算都是通過(guò)發(fā)送消息來(lái)完成的,消息傳遞是Smalltalk最重要的概念。
![]()
Smalltalk對(duì)后來(lái)的編程語(yǔ)言產(chǎn)生了巨大的影響力,它發(fā)明的MVC被后來(lái)各種框架采用。
![]()
它實(shí)現(xiàn)的消息傳遞、GC、字節(jié)碼、純粹的面向?qū)ο蟊缓芏嗾Z(yǔ)言借鑒。
![]()
重構(gòu)、設(shè)計(jì)模式、極限編程后來(lái)也被發(fā)揚(yáng)廣大。
![]()
Simula和Smalltalk作為兩個(gè)面向?qū)ο蟮南闰?qū),可以說(shuō)是領(lǐng)先時(shí)代,但它們都沒(méi)有大范圍地流行起來(lái)
![]()
1969年,一個(gè)叫Bjarne Stroustrup的年輕人進(jìn)入丹麥Aarhus大學(xué)學(xué)習(xí)計(jì)算機(jī)專業(yè)。
在這里他遇到了Simula的發(fā)明人Nygaard,挪威離丹麥不遠(yuǎn),Nygaard經(jīng)常來(lái)這里講學(xué)。
![]()
面向?qū)ο蟮乃枷刖痛嗽贐jarne Stroustrup腦海中埋下了種子。
1979年,Bjarne Stroustrup 在劍橋大學(xué)寫(xiě)博士論文的時(shí)候,他再次注意到了Simula。
![]()
Bjarne Stroustrup畢業(yè)后加入了貝爾實(shí)驗(yàn)室,在這里他近距離接觸到了C語(yǔ)言。
![]()
Bjarne Stroustrup決定為C語(yǔ)言增加一些類似Simula的面向?qū)ο筇卣?/p>
![]()
1985年,C++的第一個(gè)版本發(fā)布,它既有C語(yǔ)言閃電般的速度,又支持面向?qū)ο螅艿搅舜蠹业臒崃覛g迎。面向?qū)ο髲拇诉M(jìn)入主流。
到了90年代,Java出現(xiàn),更是將面向?qū)ο笸葡蜃罡叻濉?/p>
![]()
程序員對(duì)面向?qū)ο缶幊碳夹g(shù)(OOP)的看法,往往是兩極分化。
喜歡OOP的程序員認(rèn)為面向?qū)ο蟾N近現(xiàn)實(shí)世界建模,更容易組織大型項(xiàng)目,很多框架也是面向?qū)ο蠹軜?gòu);而抱怨OOP的程序員則認(rèn)為它復(fù)雜度過(guò)高,容易抽象過(guò)度,低性能,過(guò)度封裝反而礙事......
當(dāng)然也有中立派,認(rèn)為OOP只是工具,場(chǎng)景對(duì)了就是神,錯(cuò)了就是災(zāi)難。 不少現(xiàn)代程序員傾向于多范式編程,該用對(duì)象就用對(duì)象,該用函數(shù)式就用函數(shù)式。
你對(duì)面向?qū)ο笤趺纯茨兀繗g迎評(píng)論區(qū)留言!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.