Alan Kay,OOP 的創建者,關於開發、Lisp 和 OOP

Alan Kay,OOP 的創建者,關於開發、Lisp 和 OOP

如果你從未聽過艾倫凱,你至少聽過他的名言。 例如,1971 年的這句話:

預測未來的最好方法就是創造未來。
預測未來的最好方法就是創造未來。

艾倫在電腦科學領域的職業生涯非常豐富多彩。 他收到了 京都獎 и 圖靈獎 表彰他在物件導向程式設計範式方面的工作。 他是個人電腦和圖形介面領域的先驅之一,他開發了 短暫聊天 是有史以來最早最有影響力的程式語言之一。

在我們的 六角形,特別是在 聊天的,「什麼是 OOP」和「Alan Kay 的真正意義是什麼」的問題不斷被提出。 這篇文章包含 Alan 關於現代開發狀況、OOP 和 Lisp 語言的有趣引述。

關於軟體開發

艾倫·凱認為電腦革命尚未到來(真正的電腦革命尚未發生),而軟體開發的發展與摩爾定律成反比:硬體逐年進步,但軟體變得不必要的臃腫:

問題在於薄弱、可擴展性差的想法和工具、懶惰、缺乏知識等。

很好地描述了這種情況 短笑話:

安迪給的,比爾拿走的
安迪給予,比爾索取

英特爾執行長安迪·格羅夫和微軟時任執行長比爾·蓋茲。

改善目前的發展狀況是該研究計畫的目標 重塑編程的步驟 (pdf)。 目標是透過「將所需程式碼量減少 100、1000、10000 倍或更多」來實現表現力的「摩爾定律」。

在他令人大開眼界的報告中 編程和擴展(視頻) 本主題將進行更詳細的討論。 艾倫表示,軟體工程已經停滯不前,正在成為一門被遺忘的科學,無法跟上硬體和其他科學和工程學科的步伐。 大型專案已經成為程式碼轉儲,並且已經達到了這樣的地步: 沒有人 無法理解 100 億行 MS Vista 或 MS Word 程式碼。 但實際上,此類項目中的程式碼應該少一個數量級。

Alan 考慮了互聯網、TCP/IP 協定、LISP 解釋器、 Nile(向量圖形的數學 DSL)和 OMeta (OO PEG) (PDF) 具有最少程式碼的優雅軟體範例。

他稱互聯網(TCP/IP)是為數不多的正確設計的大型軟體專案之一,其複雜程度與複雜程度保持平衡(複雜性與複雜性)。 該專案代碼不到 20 行,是一個活躍的動態系統,能夠支援數十億個節點,並且自 1969 年 XNUMX 月首次啟動以來從未離線過。 我們只是不再將網路視為人們創建的普通軟體專案:

網路如此發達,以至於許多人將其視為一種自然資源,就像太平洋一樣,而不是人類勞動的產物。 我們最後一次看到如此穩定、清晰、無錯誤的技術是什麼時候? 相比之下,網路就是無稽之談。 網路是由業餘愛好者創建的。

關於物件導向編程

首先讓我感興趣的是他 原來的 面向對象的願景。 他在微生物學方面的經驗發揮了重要作用:

我認為物體就像生物細胞和/或網路上的單一計算機,只能透過訊息進行通訊。

和數學經驗:

我的數學經驗使我意識到每個物件可以有多個代數,它們可以組合成族,這非常有用。

LISPa 後期綁定和強大元功能的想法:

第二階段是理解 LISPa 並利用這種理解來創建更簡單、更小、更強大的結構以及隨後的綁定。

很快艾倫開始支持動態語言的觀點 軟體開發的未來 (pdf)。 特別是,易於更改對他來說很重要:

後期綁定允許將開發過程中後期出現的想法以更少的努力合併到專案中(與早期綁定係統(如 C、C++、Java 等相比))

以及即時更改和更快迭代的潛力:

關鍵想法之一是系統應該在測試期間繼續工作,尤其是在進行更改時。 即使是重大的改變也應該是漸進的,並且不要超過一瞬間。

這是缺少的 靜態類型語言:

如果您像大多數人一樣使用早期綁定語言,那麼您就會將自己鎖定在已經編寫的內容中。 將不再可能輕易地重新制定它。

令人驚訝的是,他對 OOP 的想法僅限於此:

對我來說,OOP 是訊息、本地保留和保護、狀態隱藏以及所有內容的後期綁定。 這可以在 Smalltalk 和 LISP 中完成。

也沒有任何關於繼承的事情。 這不是物件導向編程 我們今天知道:

我希望我很久以前就在這個主題中使用了“對象”這個術語,因為它導致許多人關注較小的想法。

現代靜態型別 OO 語言所缺乏的大思想:

最重要的想法是“消息”

他相信應該專注於訊息、鬆散耦合和模組交互,而不是物件的內部:

創建良好的可擴展系統的關鍵是確定模組之間的通訊機制,而不是確定其內部屬性和行為。

靜態型別語言對他來說似乎 有缺陷的:

我並不反對類型,但我不知道有哪個類型系統不會造成痛苦。 所以我還是喜歡動態打字。

如今一些流行的語言使用了 Smalltalk 的訊息傳遞想法、後期綁定和 不明白前向調用 в Objective-C的方法缺失 в 紅寶石 и 沒有這樣的方法 在Google .

摧毀一切並創造更好的東西

艾倫對電腦科學的發展有一個有趣的理論:

在我看來,計算機科學只有一種類型,而科學就像建造橋樑。 有人搭建橋樑,有人摧毀橋樑並創造新的理論。 我們需要繼續搭建橋樑。

關於 LISP

艾倫·凱相信 Lisp

有史以來最好的程式語言

每個電腦科學專業的畢業生都應該學習它:

大多數攻讀電腦科學學位的人並不了解 Lisp 的重要性。 Lisp 是電腦科學中最重要的想法。

關於正確的氛圍和背景

他常常回憶起那裡獨特的氛圍。 施樂PARC и 阿帕,其中「願景比目標更重要」和「資助人員,而不是計畫」。

觀點值 80 IQ 分。

艾倫凱 說:

ARPA/PARC 的故事展示了願景、適度的資金、正確的環境和流程的結合如何神奇地催生新技術,這些技術不僅影響文明,而且為社會創造巨大價值。

這是真的。 看看 PARC 令人印象深刻的發明清單,其中許多對我們世界的發展發揮了非常重要的作用。 例如:

  • 激光打印機
  • 物件導向程式設計/Smalltalk
  • 個人電腦
  • 乙太網路/分散式運算
  • GUI / 電腦滑鼠 / 所見即所得

而在 阿帕 創造了 ARPANET,成為網路的鼻祖。

聚苯乙烯 艾倫凱回答駭客新聞社群的問題.

來源: www.habr.com

添加評論