面向對象之父Alan Kay談面向對象

原文鏈接:http://blog.csdn.net/turingbook/article/details/1873481
Alan Kay原文:http://www.tuicool.com/articles/ZrUVzuV
Programming.Reddit 真是一個好東西,應該進入每個程序員的必讀列表。我最喜歡它的一點在於,它不僅有當下的熱門話題,還會引導你讀到不少歷史性的但是更具深意的文字。 Alan Kay談OO就是這樣一篇。這是一段私人郵件通信,時間是2003年7月。

說圖靈獎得主(2003年) Alan Kay是面向對象之父大概是有爭議的,因爲公認的第一個OO語言是Simula,由另外兩個圖靈獎得主(2001年)Ole-Johan Dahl and Kristen Nygaard發明,所以Wikipedia將三者都稱爲OO之父。不過考慮到面向對象編程這個名字卻是Alan Kay的發明。

時光倒轉到1966年,當時Kay還在猶他大學讀研究生,師從圖靈獎得主(1988年)Ivan Sutherland。受Sketchpad, Simula, ARPAnet 的設計和 Burroughs B5000 (一種有獨特設計的大型機,1961年問世,實現了最早的虛擬機)等等的影響,他開始思考程序設計的架構。1967年的某個時候,當被人問及自己在做什麼的時候,Kay回答:“It’s object-oriented programming”。Kay回憶,OO最初的概念來自四部分:

  1. 對象就像是生物學裏的細胞,或者網絡中的一臺計算機,只能夠通過消息來通信(因此消息概念出現很早,但是它在程序設計語言中實際可用卻花了較長時間。)

  2. 我想去掉數據(【劉江按】此處可能指數據的封裝,因爲B5000的設計特點之一是禁止非授權的數據訪問)。B5000通過其令人難以置信的硬件架構實現了這一點。我意識到,細胞/計算機的隱喻有可能實現這一目的, “<-” 符號可以只是表示消息而已。(這一點花了我很長時間,因爲我實際上認爲所有這些符號都是函數和過程的名字。)

  3. 我的數學背景使我意識到,每個對象可以有很多運算,而且可以有很多系列運算,這樣會非常有用。術語”多態“是非常晚(應該是由Peter Wegner)提出的,而且不那麼合理,因爲它實際上來自函數術語體系,而我所考慮的含義不僅僅是函數。我發明了一個術語” genericity”來指代擬代數(quasi-algebraic)形式的泛型行爲。

  4. 我不喜歡Simula I 或者Simula 67的繼承方式(雖然我認爲Nygaard和Dahl都是偉大的思想者和設計者)。因此我決定在有了更深刻理解之前,先不考慮將繼承作爲內置特性。

我對這種架構的最初實驗是在van Wijngaarten和Wirth的”Generalization of Algol”和Wirth的Euler基礎上的修改,都是類似LISP的,但具有更傳統的可讀性更好的語法。我那時候還不太理解 LISP古怪的元語言概念,但是從其他來源包括Irons’ IMP那裏獲得了類似的可擴展語言的想法。

第二階段,我最終理解了LISP,然後以此爲基礎設計了更小也更強大的遲綁定底層結構。Dave Fisher的論文是以McCarthy風格完成的,他有關可擴展控制結構的想法對我非常有幫助。這時另一個大的影響是Carl Hewitt的PLANNER。

最初的Smalltalk版本就出自以上這些來源。而對於後來的Smalltalk版本,歷史對它們的批評是:又倒退回Simula的老路上,沒有實現更安全的儘可能隨處可用的擴展機制。

在被問及面向對象程序設計的含義時,Alan Kay這樣回答:

我並不反對類型,但是我不知道哪個類型系統沒有大問題的,因此我仍然喜歡動態類型化。

對我而言,面向對象程序設計只意味着消息發送(messaging),狀態處理的局部保存、保護和隱藏(local retention and protection and hiding of state-process),還有一切東西的極端遲綁定(extreme late-binding of all things)。這些在Smalltalk和LISP中都可以實現。可能還有其他系統,但我不知道。

對上面比較令人費解的”狀態處理的局部保存“那句,Alan Kay又做了進一步解釋,但仍然不好懂。大概意思似乎是說面向對象有兩條道路,一種是他所支持的比較小衆的無數據(bio/net non-data-procedure route),一種是現在比較主流的ADT。

發佈了47 篇原創文章 · 獲贊 24 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章