面向對象之父Alan Kay對“Lisp是有史以來最牛的編程語言”進行了解答。原回答如下:
Alan Kay:首先對我以前的一些答案進行澄清。有些人要嘗試著用Lisp做操作系統,這看上去好像很難。事實上,我曾經做過最好的操作系統之一就是利用的“The Lisp Machines”,它是以“Parc Machines”和Smalltalk為首的硬件和軟件——而我們也受到了編程以及實現Lisp模型的影響(這些操作系統在Smalltalk和Lisp中都比今天的標準版本要更容易編寫)。
另一個有趣的答案是:“時間的考驗”在某種程度上是宇宙的優化。但是正如每個科學家知道的一樣,達爾文進化論發現了環境適應的重要性,一旦環境缺失,那么適應性也會隨著缺失。同樣,如果大多數計算機科學家缺乏必要的理解和知識,那么他們的選擇也可能會是錯誤的。如今也有大量的證據表明這個結論是正確的。
但是這兩個答案都不足以表達我對Lisp的贊美(另外我在“ Smalltalk的早期歷史 ”這個問題中更詳細的解釋了我的意思)。
我們很容易聯想到歷史上最偉大的天才——牛頓。他在很多領域都能流利的應用微積分。而在牛頓之后的科學家在質量研究方面比以前有更大的突破。所以我認為“觀點價值80分”——一個知識貧乏的人很有可能減去80 IQ值,而一些更強的人會完成以前人們認為的很困難的創新。
人類眾多的思想問題之一是“認知負擔”:事件的數量會立即引起我們的注意,一般來講為7±2,但對于許多事情來講這還是少的。我們通過解決這些瑣碎的問題來使自己成長。
這就是數學家們喜歡符號的原因之一——而缺點是科學家需要額外學習抽象層和符號所隱藏的含義——實際上這正是小提琴演奏的實踐部分。但你一旦做到這一點,你頭腦中立即思維就會被放大。以原始形式存在的20個麥克斯韋方程(以偏微分和卡迪爾坐標表示),今天我們可以一眼就想到四個方程式,主要是由于這些方程式被Heaviside重新設計、強調了重點(有可能這個重點是存在問題的,例如電場和磁場在運動方面應該對稱等問題)。
現代科學是基于體驗現象和設計模型關系的,這些關系可以進行必要的“negotiated”,因為在我們腦海中的系統與“外界是什么”無必然聯系。
從這個角度我們可以聯想到“橋梁科學”和“橋梁科學家”——工程師建立橋梁,為科學家提供可用的橋梁模型。同樣,從“橋梁科學”可以衍生出來“計算機科學”和“計算機科學家”,開發人員構建硬件和軟件為科學家提供可用的計算機模型。實際上這是60年代初期“計算機科學”的主導思想,但只是一個期望而已并沒有完全實現。
Lisp背后的故事很有趣(你可以在第一編程語言史中查閱John McCarthy的文章)。它被構造的目的之一是建造“數學物理”,也就是“數學的計算機理論”。另一個原因是John McCarthy在50年代后期考慮過使用一種最普通的編程語言來構造一個用戶界面的AI(稱為“警告”)。
Lisp可以進行編程,大多數的程序都是機器代碼;Fortran表處理語言存在,語言也有鏈表。
John開發的Lisp可以編譯任何編程語言都能做到的程序,而且相對簡單,這也體現了它的本質。(這讓我們聯想到數學部分或現代麥克斯韋方程式),而這樣的方式也會比圖靈機器更簡潔。
我們知道從最簡單的機器結構到最高級語言的發展斜率都是最陡峭的——這就意味著可識別的硬件到宇宙表達式會呈現火箭式飛躍的趨勢。
通常情況下,特別是在工程中,一個偉大的科學模型往往都優于現有的模型,這就會導致棒的工作。史蒂夫·拉塞爾(程序員,也是“太空站的”的發明者)看了約翰所做的工作后說:“這個程序如果我來編碼,我們現在已經有一個可運行的版本”。正如約翰所說的:“他做到了,我們也做到了!”
而最終的結果就是“unlimited programming in an eyeful”(在Lisp 1.5手冊中第13頁的下半部分)。其實問題的關鍵并不在于“Lisp”而是在于這些代表性方法是否對多種編程語言方案開放。
這件事情一旦完成可以立即考慮比Lisp更優秀的編程語言,你也會立即想出比John更好的方法來編寫meta描述。這就是所謂的“POV = 80 IQ points”的部分。但這聽起來就像是一旦看到牛頓就會電動力學相對論一樣。所以說科學上最大的壯舉還是牛頓!
這就是為什么Lisp是最棒的原因。