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