面向?qū)ο笾窤lan Kay:預(yù)測未來,創(chuàng)造未來
原創(chuàng)【51CTO獨(dú)家特稿】在開始正文之前讓我們先回答一個(gè)問題,你使用過Alan Kay的某項(xiàng)發(fā)明嗎?如果你是個(gè)程序員,你會使用C、C++或Java進(jìn)行程序開發(fā),那你應(yīng)該用過Alan Kay的發(fā)明,因?yàn)檫@些編程語言都或多或少從SmallTalk語言中汲取養(yǎng)分,或者,在大學(xué)課程里,你一定學(xué)習(xí)過Alan Kay提出的面向?qū)ο缶幊痰幕纠碚摗?/p>
51CTO開發(fā)頻道年終巨獻(xiàn):架構(gòu)師最怕程序員知道的十件事
如果你不是程序員,那么你用過(見過)筆記本電腦,恭喜你,筆記本電腦這個(gè)概念最初也是由Alan Kay提出的;如果你覺得筆記本太奢侈,OK,你應(yīng)該在使用Windows或者M(jìn)ac,無論是哪種操作系統(tǒng),圖形用戶界面的概念是Alan Kay告訴喬布斯的。如果你還不承認(rèn),那么平板顯示器、無線網(wǎng)絡(luò)、以太網(wǎng)工作站、客戶機(jī)服務(wù)器模式和激光打印機(jī)的實(shí)現(xiàn)原理中,我們都能找到Alan Kay的影子。
面向?qū)ο笾窤lan Kay
更多時(shí)候,Alan Kay是以面向?qū)ο蟪绦蛟O(shè)計(jì)和Smalltalk創(chuàng)世人的身份被我們記住,以軟件大師和計(jì)算機(jī)界泰斗的高度被我們仰視。
1940年,Alan出生在美國馬塞諸塞州。1歲時(shí),Alan隨父親居家遷往澳大利亞。3歲就可以閱讀Alan在存有6000本書和大量的繪畫的大房間里度過童年。二戰(zhàn)開始后,Alan全家又遷回美國。大量的閱讀和獨(dú)立的觀點(diǎn)使Alan對自己的童年感到驕傲:“到我上學(xué)時(shí),我已經(jīng)讀過幾百本書。那時(shí)我已經(jīng)有了許多自己的觀點(diǎn),我知道一年級所教的許多東西都很幼稚和虛假,老師在撒謊。但學(xué)校只能有一種觀點(diǎn)――那就是老師的觀點(diǎn)或者課本的觀點(diǎn)。他們不喜歡與他們相左的觀點(diǎn),因此那就象是一場戰(zhàn)爭。當(dāng)然我已經(jīng)可以用五歲的聲音維護(hù)自己的觀點(diǎn)”。對少兒教育的責(zé)任心伴隨Alan一生,他后期的許多大師級的創(chuàng)意最初的理念都是出于對兒童的關(guān)愛。
OOP萌芽
1960年,Alan進(jìn)入Bethany大學(xué),僅一年之后他就因抗議學(xué)校猶太人限額問題,而被Bethany大學(xué)驅(qū)逐。沮喪的Alan加入志愿兵服務(wù)對,在此,他發(fā)現(xiàn)了自己的又一項(xiàng)天賦;在軍隊(duì)的一次計(jì)算機(jī)的能力傾向測驗(yàn)中,Alan表現(xiàn)出眾,隨后即被美國空軍派遣到IBM K101工作,在那里,Alan不但驗(yàn)證了計(jì)算機(jī)能力傾向測試的準(zhǔn)確度,還學(xué)習(xí)到大量計(jì)算機(jī)知識。
退伍后的Alan被科羅拉多大學(xué)錄取,學(xué)習(xí)數(shù)學(xué)和分子生物學(xué)。畢業(yè)后,他又一次面對擇業(yè)問題,他說:“我考慮過從醫(yī),但我覺得自己責(zé)任心不夠。直到現(xiàn)在我仍這樣認(rèn)為。”他還考慮過哲學(xué),但也放棄了。最后他還是進(jìn)入了猶他大學(xué)學(xué)習(xí)電氣工程。
海拔4000英尺以上的猶他大學(xué),設(shè)有一個(gè)博士點(diǎn)。在那里,他開始使用由1988年圖靈獎獲得者Ivan Sutherland開發(fā)的Sketchpad程序,并用Simua仿真語言編寫程序。當(dāng)時(shí)的計(jì)算機(jī)是個(gè)稀罕玩意,能深入接觸計(jì)算機(jī)控制編程的人更是少之又少。新生Alan在那里使用UNIVAC108機(jī),任務(wù)是辦公桌上的一堆磁帶和一張紙條:“這是UNIVAC108機(jī)的Algol語言,如果它不能運(yùn)行,把它弄好。”
那個(gè)時(shí)代的程序員更像是“風(fēng)語者”,使用一堆別人看不懂的字符工作,因?yàn)楦呒壍恼Z言還沒有被開發(fā)或推廣;但還是那個(gè)大師頻出的時(shí)代,Alan開始深入思考計(jì)算機(jī)和編程。受這些程序思想的啟發(fā),再加上自己生物學(xué)的背景,他提出了“生物學(xué)類比”理論。Alan Kay假定理想的計(jì)算機(jī)將象生物體一樣工作,為完成某個(gè)任務(wù),每個(gè)“細(xì)胞”都要與其它“細(xì)胞”協(xié)同完成,而每個(gè)“細(xì)胞”又有自己的功能。為了解決另外的難題或試驗(yàn)另外的功能,“細(xì)胞”們可以實(shí)現(xiàn)重組。這一理論成為面向?qū)ο蟪绦蛟O(shè)計(jì)的萌芽。也是在那時(shí),Alan開始為Flex機(jī)設(shè)計(jì)界面,但由于過于復(fù)雜而沒有成功,之后他開始研究圖標(biāo)編程。
超級紙張
1968年秋,Alan在MIT人工智能實(shí)驗(yàn)室第一次見到Logo語言的創(chuàng)始人Seymour Papert;他觀看了Papert和他的同事教孩子們?nèi)绾斡肔ogo時(shí),Alan有關(guān)計(jì)算機(jī)社會作用的整套觀念受到極大沖擊。“我看到了第一個(gè)真正的手寫體識別系統(tǒng)。這是一套今人難以置信的系統(tǒng)。它對我產(chǎn)生了巨大影響,因?yàn)槲矣蟹N心有靈犀的感覺。當(dāng)我將這些觀念綜合起來,計(jì)算機(jī)的概念就象是一種超級媒體,一種超級紙張。”
那時(shí)的計(jì)算機(jī)是一個(gè)龐然大物,有獨(dú)立的房間存放,由專門的機(jī)構(gòu)擁有和維護(hù);將其想象成孩子的教學(xué)玩具、媒體或一張紙不僅需要極大的想象力,還有勇氣。
這里需要提及Alan Kay的一句在IT界廣為流傳的名言“The best way to predict the future is to invent it”,預(yù)測未來的最好辦法,就是把它創(chuàng)造出來。
Smalltalk和OOP
Alan Kay的畢業(yè)論文是關(guān)于圖形面向?qū)ο蠓矫娴难芯浚纱藙P獲得猶他大學(xué)的博士學(xué)位。接著在斯坦福人工智能實(shí)驗(yàn)室擔(dān)任教學(xué)工作。這兩年工作期間,他開始構(gòu)想一本象書本大小的計(jì)算機(jī),用戶(尤其是兒童)可以用它來代替紙張。他將這個(gè)項(xiàng)目稱之為 “Kiddie Komp”。這期間,他也開始著手Smalltalk語言的研發(fā)。Smalltalk基于Alan的博士論文為理論支持,應(yīng)用自己之前的單獨(dú)個(gè)體(即“細(xì)胞”)生物學(xué)模型來設(shè)計(jì)的,個(gè)體之間可通過“信息”相互交流;另外,Smalltalk使用“鼠標(biāo)驅(qū)動”的“多窗口環(huán)境”,這是圖形界面操作系統(tǒng)的雛形。
Smalltalk是第一門純面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,OPP的思想使Smalltalk的語言結(jié)構(gòu)方面有許多與其他語言不同的特點(diǎn),例如在Smalltalk語言中沒有條件語句,取而代之的是一些發(fā)送給對象true或者false的消息,因此它們不屬于語言部分,而屬于Smalltalk的類庫;也沒有循環(huán)重復(fù)語句(C語言中的for while),Smalltalk用向數(shù)字對象或塊對象發(fā)送消息來實(shí)現(xiàn)重復(fù)執(zhí)行。
1971年,Alan來到施樂的PARC小組,雖然當(dāng)時(shí)的位圖顯示器十分昂貴,但是Alan依然說服了PARC讓他使用這些位圖顯示器,這使得Kay和他的小組能夠?qū)崿F(xiàn)不同大小和字體的文字,使用多窗口環(huán)境,以及一些對圖像處理的高端支持;這實(shí)現(xiàn)了Alan設(shè)計(jì)Smalltalk的初衷,為兒童教學(xué)的而開發(fā)的語言。
1975年,Alan的小組認(rèn)識到應(yīng)當(dāng)對Smalltalk的執(zhí)行效率和規(guī)模進(jìn)行優(yōu)化。于是他們在許多重要方面重新設(shè)計(jì)了Smalltalk系統(tǒng),在語言上:引入了繼承和子類的概念并確定了語言的語法,這使得編譯器能夠產(chǎn)生高效、可執(zhí)行、精煉的二進(jìn)制代碼。這些概念的引入使Smalltalk成為面向?qū)ο笳Z言鼻祖。
#T#Smalltalk在編程語言發(fā)展史上的地位毋庸置疑。它不僅引入了面向?qū)ο蟪绦蛟O(shè)計(jì)的基本理念和實(shí)現(xiàn)方法,還為現(xiàn)在編程語言的進(jìn)化提供了必要的基因,C、C++以及后來的Java、Python、PHP等都借鑒了Smalltalk的部分底層實(shí)現(xiàn)方法和語法要素;即使是30年之后,我們依然可以從編程語言排行榜中看到Smalltalk的活力。
發(fā)明家Alan
也許你還對開始的那個(gè)問題和答案念念不忘,讓我們來簡單的回憶一下Alan Kay的其他貢獻(xiàn)。
在施樂PARC研究小組期間,Alan制作了一個(gè)名為Pynabook的概念產(chǎn)品——微型電腦,業(yè)界認(rèn)為這是筆記本電腦的模型。當(dāng)時(shí)個(gè)人計(jì)算機(jī)技術(shù)尚處于襁褓期,但Alan的設(shè)計(jì)中卻已包含了許多未來的技術(shù),比如平板顯示器和無線通訊系統(tǒng)。1993年, Dynabook理念終于成為現(xiàn)實(shí),化為了蘋果公司的Newton。
1979年,在Alan的邀請下,喬布斯、Teff Raskin以及其它蘋果公司的元老們來到PARC參觀。他們被Alan Kay的視窗圖形用戶界面理念所吸引,認(rèn)為這就是未來的電腦;對Smalltalk語言的靈活性也大為驚奇。Alan在PARC的工作就是蘋果Macintosh的種子,甚至今天的Windows操作系統(tǒng)也是Alan的理念延伸。
Macintosh應(yīng)用了Alan的視窗圖形用戶界面理念
1984年,Alan加盟蘋果,這使Alan有足夠的時(shí)間和金錢開始研究他那長期以來的夢想。同一年,一臺以圖形界面為中心并為市場廣泛接受的計(jì)算機(jī)——Macintosh誕生。接下來的時(shí)間,Alan在世界各地四處奔波講學(xué)的同時(shí)在麻省理工大學(xué)擔(dān)任教學(xué)工作,也間或?yàn)樘O果工作。但大多數(shù)時(shí)間Alan Kay則在加州西好萊塢的自辦的學(xué)校中教學(xué),教孩子們使用計(jì)算機(jī)。
Alan Kay在 圖靈獎頒獎典禮上
2003年4月19日,計(jì)算機(jī)學(xué)會(ACM)宣布,2003年度有“計(jì)算機(jī)界諾貝爾獎”之稱的ACM 圖靈獎授予第一個(gè)完全面向?qū)ο蟮膭討B(tài)計(jì)算機(jī)程序設(shè)計(jì)語言Smalltalk的發(fā)明者Alan Kay。
























