圖靈獎演講

2003

作者 Kay, Alan

下午好,歡迎來到 Association for Computing Machinery (ACM) 的圖靈獎演講。圖靈獎是 ACM 最負盛名的技術獎項。如果你看看過去的圖靈獎得主,你會看到一份計算機科學界的傑出人物名單。圖靈獎每年頒發給對該領域做出具有持久和重大技術重要性貢獻的個人。圖靈獎得主被邀請在當年任何 ACM 會議上,就他們喜歡的任何主題發表演講。我們很榮幸今年的得主選擇 OOPSLA 作為他們的場地。因此,事不宜遲,我謹介紹 Dr. Alan Kay。他是 Hewlett-Packard 的資深研究員,Viewpoints Research Institute 的總裁。圖靈獎頒發給他,是因為他在當代物件導向程式語言的許多根基思想上的開創性貢獻,因為他領導了開發 Smalltalk 的團隊,以及對個人運算的基本貢獻。讓我們給予 Alan Kay 熱烈的 OOPSLA 歡迎。謝謝。當然,關於更全面的褒獎 citation 有一件有趣的事是,它也提到他提出並協助提出了許多最終導致 C++ 和 Java 的想法。這讓我想起了 Tony Hoare 在他的圖靈演講中,其中很大一部分是關於 ALGOL。他指出 ALGOL 是一項巨大的改進,尤其是對它的繼任者而言。

大約一年前,SIGC 邀請我來這裡發表演講,那場演講昨天剛進行,主要是針對高中生,某程度上也針對大一學生,談論早期的計算經驗。當然,當時我並未預期會獲得這個獎項。我花了很多時間思考高中和大學的狀況,因為我沒有教授入門課程的實際經驗。而且我當然不喜歡我出去閱讀書籍、AP 資料等等時發現的東西。但我認為沒有人想聽別人抱怨一個小時,即使說的是實話。所以我決定做的是,如果我要在高中或大學教授入門課程,那會是什麼樣子?這就是我昨天那場演講的內容。我最後認為,也許稍微修改後的版本會是一個不錯的圖靈演講。所以就來了。首先,我想從 Don Quote 開始。他有很多名言,但這是他我最喜歡的一句:謹防上方程式碼中的錯誤。我只證明它是正確的,沒有試過。這是對你所謂的該領域的學術化 (academization) 的完美解毒劑,其中很大一部分試圖用經典數學來處理需要新數學幫助描述的新數學。所以我們有一個新的領域。我相信關於我們領域的簡單陳述是數學會贏。基本上,每當你能用我們正在做的事情進行合理的數學處理時,我們就會取得巨大進步。但舊數學很少贏,因為我們有一種處理事物的新方式。我們的定理不短,它們不是關於無限事物,而這正是經典數學通常關注的。與我們的定理和證明等同的,是關於有限結構的非常非常長的事物。因此,我們有一種截然不同的處理方式。因此,Don 的引言,我認為是絕對完美的。

由於我們領域的現狀,我們所做的一切都受到他人動機的影響,特別是在使用者介面領域,特別是在教育領域。但我認為我可以展示一個比我們使用的模型簡單得多,但它只是一個二維模型,讓我們所有人思考一下。在推理和改變領域,一個維度是人類中基本上是工具性思考者 (instrumental reasoners) 和基本上對思想感興趣的人之間存在著令人難以置信的差異。這已透過各種不同的方式進行研究,看起來我們普通人類基本上是工具性思考者。工具性思考者是這樣一種人,他們根據任何新的工具或想法對其當前目標的貢獻程度來判斷該工具或想法的好壞。因此,我們大多數人都是非常有目標導向的。我們正在做事情。有人提出一些新東西,而如果我們是工具性思考者,我們接受或拒絕它的能力取決於我們是否能看到它有助於實現我們的當前目標。

另外 5% 的人主要受思想驅動。因此,當一個對他們有吸引力的新想法出現時,他們會根據這個想法改變自己和他們的目標。不用說,這 5% 的人更容易教導,特別是如果你試圖教導他們那些是發明而不是人類內建的東西。所以,如果你試圖教導一些非常奇怪的東西,比如科學,這並不容易,因為你正在與一群非常實際和務實的人打交道。這裡的另一個維度基本上是關於獎勵,內在動機 (intermotivated) 與外在動機 (outermotivated)。我們大約 85% 的人受外部事物驅動,而大約 15% 的人受內部事物驅動。這相當有趣。如果我們看看這個,我們會發現一個有趣的類別是內在動機且對思想感興趣的人。我留給你來找出這些人是誰。有趣的第二類是外在動機且對思想感興趣的人。內在動機且對思想不感興趣的人往往很危險,會製造很多麻煩。很多公司高層就在那裡。但基本上,我們的領域是繼印刷機之後的下一個偉大的 500 年思想。所以我們都應該適當地關注一些截然不同的事情。那就是我們必須關注全人類將如何回應和處理我們所做的事情。因此,考慮這裡 80% 的外在動機且基本上務實的人是極其有趣的。關於這 80% 的人,已經了解很多。過去,我曾使用「投票」一詞。但這群人不會去投票站為他們相信的事情投票。他們改變信仰需要很長時間。但他們改變的方式相當有趣。這是一種漸進的共識。這是一種緩慢滲透的共識。它具有與森林火災模型許多相同的特徵。所以這裡有一個小粒子系統。樹木與空地的百分比是 50-50。所以如果我說,好的,讓我們看看能不能用 50% 在這裡傳播火災。抱歉,我沒有初始化。再試一次。這是 50%。令人驚訝的是,它沒有... 再試一次。讓我們嘗試,上升到 50、60%,比如說。你可以把 60% 看作是幾乎準備好同意的人,他們基本上已經在那裡了。所以再增加 10%,它傳播得更好。再試一個。每次放置都是隨機的,所以你得到稍微不同的行為。所以這就是你得到的。它自己燒盡了。所以如果我們上升到大約 66% 或左右,67,66。是的,在這些傳染模型中,你可以把這看作是傳播迷因,如果你願意的話。這 80% 中的大約三分之二必須基本上達到狀態,你才能讓他們同意並做某事。因為除非其他人都在做,否則他們就是不會做。這個模型即使對於像反戴棒球帽和女孩露出肚臍這樣的奇怪事情也運行得很好。如果你追溯多年來女孩露出肚臍的趨勢,你會看到這種變化是多麼漸進,直到突然間變得可以接受了。問題是,如果現在可以接受了,那麼它總是都可以接受的。那麼問題是什麼呢?問題是這群人通常認為這不可接受。直到他們中大約三分之二的人認為可以接受後,它才變得可以接受。所以如果你試圖改革教育,或者你試圖讓一群人理解真正的物件導向程式設計或任何其他新事物,你會遇到這種令人難以置信的差異,在計算領域,有許多例子,從一個想法真正被證實到它被普遍接受大約有 30 年的滯後。所以沒有人知道這 30 年實際上意味著什麼,但看看 Unix 及其多年來的不同經歷,以及最終被接受的情況,儘管它基本上是六十年代後期的架構,這比某些現有的作業系統的架構要好,但它仍然是一個相當老的架構。所以我拼命地想活到至少 2007 或 2008 年,因為 PARC 的很多工作在那些日子前 30 年達到了頂峰,我很好奇看看那些想法是否真的會被接受。然而,如果你看一個極端案例,Doug Engelbart,他有一些有史以來最好的想法,我認為他處於一個不同的層面,他的想法在明確表達上現在越來越接近 40 年了,而大多數人仍然不明白他當時試圖做什麼。我認為一個附帶的問題是,我們的領域,以及我認為一般人,非常喜歡複雜性。似乎你去學校,令人驚訝的是,他們讓可憐的孩子做多少工作,如果他們能更好、以不同方式教授數學,孩子們就不必做那麼多工作。但實際上,我認為人們喜歡複雜性,並認為投入大量的辛勤工作,即使有更簡單的方法,實際上也是具有某種道德上的優良性。所以我認為對於我們的領域來說,最困難的事情之一就是對複雜性的喜愛。由於計算中的多層結構,以及從一層到另一層的困難,幾乎所有對計算感興趣並取得成功的人都是掌握了驚人數量複雜性的人。我相信這種複雜性大部分是絕對不必要的,我相信可以證明它是非必要的。所以我們真正想要的是找到簡樸的快樂。這次演講很多地方幾乎就是一個活生生的陳腔濫調,從這個意義上說,我將在這裡說的大部分內容都不是你已經不知道的。但是當我開始思考這次演講應該說什麼時,簡樸性不斷地回到我的腦海中。我參與的所有成功的專案之所以成功,是因為參與其中的人們投入了相當大的努力來保持事情的簡單。而 ARPA 以及後來的 Xerox PARC 這個社群在保持簡單性方面是傑出的。這是一群非常有自信的人。但令人驚訝的是,我不會使用「謙遜」這個詞,因為我認為沒有人會認為這個詞適用於這些人。但我會說,他們對他們試圖實現的這些宏大想法非常非常尊重。Butler Lampson 在這裡總是不斷強調簡單性。僅用三個月就做出 Alto 的 Chuck Thacker 是簡樸性的宗師。Dan Ingalls,簡樸性的宗師。Matt Caff 和 Boggs。Matt Caff 講述了許多關於他實際上不理解的事情的精彩故事。而他沒有理解所有這些事情是無比重要的,否則他永遠不可能發明 Ethernet。Gary Starkweather 做了第一台雷射印表機,每秒一頁,每英吋 500 像素,比今天大多數雷射印表機都要快,其中大約四分之三是用 Gary 從 Edmund Scientific Hobby Catalog 獲得的零件製作的,因為它們便宜,所以他可以獲得很多並進行嘗試等等。所以這種看待事物的方式,基本上是,嘿,我們根本沒有 IBM 自稱的那麼聰明。他們總是在宣佈某個新的複雜網路架構,我們看不到如何讓它工作。所以我們只會堅持我們的舊的全雙工想法和重傳,並在其中添加一些其他東西。它可能不像 IBM 聲稱的那樣工作得那麼好,但它很可能會工作。有趣的是,我們今天使用的網路就是那些設計得糟糕透頂、效率低得令人難以置信的隨機網路,遠非完美,但最棒的是它們最終能完美地傳送那個數據包。你只需要願意等待。

這群人另一項真正擅長的,是我稱之為另一種簡樸性。很難說 Maxwell's equations 在這裡是簡單的,因為你需要做所有那些工作來理解向量、旋度、散度和梯度。但它好的地方在於,一旦你做了那些工作,它就會縮小到一個簡單的一瞥。美國憲法是我最喜歡的系統設計之一。想想看,數百萬、數百萬個相互不相容的部分運行了 200 多年而沒有完全崩潰。相當驚人。你可以把它握在手裡。你能把它握在手裡的原因是他們很明智地沒有在裡面放入任何法律。所以它不是一個基於法律的東西。它不是一個基於案例的東西。它是一個基於原則的東西。它是一個核心。這些是我多年來非常感興趣的事情。我認為,試圖讓計算初學者體會到那種運作良好的特定簡樸性的力量,是我們應該做的事情。我還注意到與年輕人交談以及每年在 UCLA 教授一門高年級課程時,問題並非在於大三和大四學生知道得不多。對於即將大學畢業的學生來說,他們確實知道得不多。但令人沮喪的是,他們知道的事情,知道得很糟糕,因為他們知道的方式幾乎對他們的思考產生反作用。因此,我認為在任何一門入門課程中,你都有機會不僅僅教授一個科目,而且在入門課程中你實際上可以觸及很多科目。例如,我認為數學和科學

最重要且我們大多數大學計算機科學課程中非常缺乏的是未能將我們所做的事情視為一種識能 (literacy)。識能是在你首先擁有值得談論的思想時產生的,你有一種方式記錄這些思想並進行討論,這給你帶來了文獻。而識能是處理這些思想的口頭和書面形式的能力。所以當我們在大學開設第一堂英語課時,我們並不是針對那些四年後畢業將成為專業作家的人。我們實際上認為印刷機及其帶來的新修辭和新辯論方式的影響,比成為專業讀者或作家更為廣泛。我認為計算也是如此。五十年後,這不會有爭議,但現在,即使在擁有巨額捐贈的強大的 Stanford,它基本上也被視為 Java 的職業培訓。它主要被認為是教孩子們程式設計。學習如何程式設計絕對重要,但計算機科學和軟體工程與程式設計不同,就像建造尖頂大教堂與砌磚不同一樣。你必須理解一個才能做另一個,但它們非常不同。我認為這絕對關鍵,因為這張小投影片上的圖片是 Conrad Lorenz 在池塘裡和他的鴨子跟隨。記得 Lorenz 發現,在一個關鍵的幾個小時的短暫時期內,任何在小鴨子附近移動的東西都會被小鴨子認為是它的媽媽。它會一直跟隨,即使長大後也是如此。Lorenz 發現如果他跳入水中,牠們會更高興地跟隨他。所以他在那裡。所以我認為,每當我們向某人介紹某事時,我們都必須意識到,如果我們成功了,我們將成為某種 Conrad Lorenz。我們應該非常小心我們將在他們身上留下什麼烙印。看在上帝的份上,我們最不想在他們身上烙印的是資料結構與演算法。這在五十年代是一個偉大的想法。你必須理解它,它今天仍然有用於最佳化和其他類型的東西,但它不是領域的中心。很長一段時間以來它就不是領域的中心了。更糟糕的是,它無法擴展 (scale)。所以在資料結構和演算法的教授方式中,幾乎沒有系統的方面。因此,我相信我們必須讓學生真正體會到事情的全部內容是什麼。這樣他們才能開始以系統的方式思考,以數學的方式思考,以科學的方式思考,隨著我們前進。這顯然是一個艱鉅的任務。現在我們都可以記住我們的 Conrad Lorenz。我的經歷發生在我成為一個程式設計師五年後,一個資深程式設計師,靠打工讀書。我去讀研究所,Dave Evans 給了我 Ivan Sutherland 的論文。Dave 說,讀完它,然後回來和我討論。這是一本很厚重的東西,但我看到他的論文指導教授是一位名叫 Claude E. Shannon 的人。我聽說過 Shannon,我想,哇,如果 Shannon 簽了這個東西,也許我應該讀讀。我發現這是當時我聽說過用電腦完成的最令人驚奇的事情。為了向你們展示它的一些想法,這台巨大的機器,大約有這個演講廳那麼大,從凌晨三點到早上六點只有一個人操作。注意,他剛在那裡畫了一些東西,然後告訴那些邊變成相互垂直,Sketchpad 就為他算出來了。這是第一個具有裁剪視窗的系統。他們實際上是在這張巨大的虛擬紙上繪圖。再次,你快速繪圖,指向這兩個傢伙,說,好的,變成平行,系統就計算出來了。現在他說,變成共線,讓自己疊在這些線上。當然,這台機器的顯示器只繪製點。所以這台機器大約一半的容量,從這裡到那裡,只是為了把這些小點放在螢幕上,假裝它是線條繪圖顯示器。現在他在法蘭 flange 上有一個孔,他想做一個鉚釘。多拿一些墨水。注意這是一個雙手使用者介面,就像所有使用者介面都應該如此一樣。這就是另一隻手的作用。指向那個十字部分的中心以獲得圓弧的中心。再次,讓我們使用相互垂直的技巧,它會拖動中心的部分,這會拖動圓弧的部分,我們得到一個漂亮的對稱鉚釘。他可以告訴它在某個比例,鉚釘垂直部分的兩邊。這裡他只是向我們展示它會做另一個解。現在他將回到原始形式並向我們展示另一件有趣的事情,那就是他可以製作這個東西的實例。所以他在這裡得到一個鉚釘的實例,他可以移動它。你可以看到 Sketchpad 的成功導致對更好顯示器的渴望。實際上這種閃爍,他們馬上發現,除非他們隨機繪製點,否則你會暈船。所以裡面每次有什麼正在進行時,他們實際上都會排序機器記憶體的一半,以保持點顯示的隨機性,這樣它就不會像現在這樣游動得太厲害。所以他現在有四個實例,他說,哎呀,我忘了十字部分。所以他去了主體 (master),我們會稱之為類別 (class),讓十字部分變得透明,我們看到所有實例都感受到了這個變化。所以現在他將把剛才製作的這個東西變成一個主體,所以新的構造是一個主體,現在他可以得到這個法蘭的一些實例。所以 Sketchpad 的範圍令人驚訝。到 1962 年底,他不僅可以做這樣的事情,他還決定,好的,我需要字母和數字。所以字母和數字實際上是直接從這個 Sketchpad 材料繪製出來的。所以他所有圖紙和論文中的所有標題也都是系統製作的,然後他意識到,哦是的,我實際上可以做一座橋樑,因為橋樑有點像一組非常堅硬的彈簧,我可以告訴 Sketchpad 在有東西試圖強制它們移動時盡量保持這些彈簧恆定,我可以測量每個彈簧的差異,即應變,實際上我可以把它們顯示為所有這些部分上的標籤,我就得到了一個橋樑的模擬,而 Sketchpad 從來沒有聽說過橋樑。他意識到,哦,我也可以用 EMF (電動勢) 這樣做。我可以製作電路,而約束實際上會驅動所有這些模擬。所以在我的職業生涯中,我認為我過去 40 年一直在做的事情是試圖推出下一個版本的 Sketchpad。因為如果你想想這個東西是什麼,這有點像我們想要的。我們想要一個系統,在這個系統中,任何我們感興趣的事物,特別是我們感興趣的動態事物,我們都可以簡單地把它們畫進去,逐部分地放入我們理解的關係,然後讓系統將所有這些合成一個驚人範圍的動態模擬。所以它太美了。我不知道我們的領域中是否已經有牛頓,但如果有的話,我認為那必須是 Ivan Sutherland。因為在 Ivan 出現之前和之後的領域,差別是巨大的。所以我曾經問 Ivan,你怎麼可能在一年內,在一個雖然很大但相當慢的機器上,在沒有圖形顯示器的情況下,用機器碼完成了第一個圖形系統、第一個物件導向軟體系統和第一個動態問題解決系統?Ivan 看著我說,嗯,我不知道這很難。順帶一提,這篇論文可以從 MIT 獲得。你應該去拿來讀讀。我最喜歡的句子是,他說,希望未來的工作能遠遠超越這項努力。

那是我讀研究生的第一天。第二天我發現我實際上處於 ARPA 社群的中心,而我之前毫無察覺。Licklider 在 1966 年不是資助者,是 Bob Taylor。他們剛開始談論做 Licklider 稱之為「星際網路」(intergalactic network) 的事情。他這樣稱呼的原因是他不希望人們設計一個小網路。所以他最初的理論是,地球表面凡是有電源插座的地方,都應該有一個可以插入這個星際網路的地方。這意味著這個東西必須至少能擴展到五億到十億用戶。所以人們開始思考這個問題。幾天後,我收到了一盤磁帶和一些文件,內容是來自挪威的 Dahl 和 Nygaard 開發的一種名為 Simula 的語言。它非常難理解。經過大量的工作和查看列表後,我們意識到,這是一種程式語言,它處理的是與 Sketchpad 相同的結構。順帶一提,我應該提到「物件」(object) 這個詞比物件導向程式設計要早。「物件」在六十年代早期是一個通用術語,用來描述複合資料結構,特別是如果它們包含指標。所以它不包含我們今天認為的物件導向程式設計的任何東西。物件只是一個通用術語。你可以在很多舊論文中找到它。而意識到你可以編寫程序

說跑得太慢了,真是可惜,但如果我們能讓它跑得更快,而且又不妨礙使用者,那將會是一件非常非常好的事情。事實上,有一些最棒的人,我剛和 Guy Steele 聊過,他是幫助將 Lisp 變成不僅好用而且值得思考的幾個人之一。所以這裡的意像是,哇,這一切都是關於訊息 (messages)。之所以是關於訊息而不是關於物件,是因為訊息是抽象。我們在我們的領域花太多時間擔心物件是什麼。所以現在我需要繼續前進了。我有一大堆個人偏見。我喜歡平行性 (parallelism),因為我認為,因為我在編寫電腦程式之前學會了插線板程式設計,那些東西的美妙之處在於你可以製作一種高度平行化的機器。我喜歡像 B5000 這樣的硬體,我們今天使用的所有虛擬機器都來自那台機器的硬體,可惜 Intel 和 Motorola 從未覺得有必要學習關於軟體的任何東西,否則會讓我們的生活簡單得多。我喜歡 Lisp,每個人都應該理解它。Joss 是有史以來最漂亮的程式語言,它幾乎什麼都做不了,但做得非常漂亮。所以這是一個有趣的挑戰,如何將這種美感提升到更高的層次。如果你將這兩個結合起來,你就得到了最初的 Logo,Logo 就是這樣誕生的,試圖將 Lisp 轉化為一種更漂亮的東西,特別是為了孩子們。我喜歡 APL。我認為所有這些系統都可以用不同的方式完成,但基本上對這些東西的喜愛是因為這些人觸及了一些特別的核心。我喜歡 Engelbart 所做的一切。我喜歡試算表。我喜歡 Hypercard。想像一下,你可以將所有這些美好的東西整合到一個普通人可以使用的簡單系統中。

我們為何這麼做:教育與參與

現在讓我們談談我們正在做的事情的「為什麼」。人們為什麼要做事情? Frank Oppenheimer 在 Exploratorium 博物館製作了 500 個展品,只為了教授一個思想:世界並非如它所見。他們問他為什麼,他說,每個孩子都是不同的。如果在這裡有 2000 個孩子接觸 500 個不同的展品,很有可能一個孩子會找到一個能清楚地向他們傳達這個關於科學的第一個重要思想的展品。所以他說有 500 個展品。我認為如果你要教授這門課程,每個領域你需要 20 到 30 個專案左右,給孩子們選擇的機會。對不起,我是否打擾到你們後面的談話了?

所以我認為另一個重要的想法是 Scratch 程式設計,因為今天很多計算教育都是學習函式庫 (library),而我認為初學者不應該被展示函式庫。如果程式語言沒有函式庫就做不了有趣的事情,那它又是什麼呢?所以我認為它應該像一輛 Model T 汽車。Model T 有大約 350 個零件,你可以在一個週末把它拆開再組裝起來,但它是一輛完全真正的汽車。所以接下來幾分鐘我們將看到的東西,很多都是一種「一階」的思想,可能會說一些重要的東西。現在好的方面是,很多人寫過關於計算的樂趣、美麗、浪漫、重要之處以及展望未來。市面上不只一本書,關於計算的書籍中,只有不到 1% 值得一讀,但不是只有一本書,有幾十本。所以有很多關於如何做這些事情的想法。使用者介面最好不要像 Microsoft 對 PARC 裡完成的東西的漫畫式模仿。我使用 Windows 時總覺得我在操作一個有點危險的核反應爐控制面板,而且我的訓練不足。而我想要的是像鉛筆和紙那樣的東西,儘管我可以學習關於鉛筆和紙的東西,但它們最重要的一點是,即使我了解不多,我也能做些什麼。所以我可以發現鉛筆和紙很有趣,我想要一個能以某種方式處理一組思想的環境,讓我在這些思想中忘我。所以 Mike Csikszentmihalyi,他是我們的一位顧問,提出了這個關於我們的能力和挑戰之間平衡的好模型。他說,如果挑戰高於我們的能力,那麼我們就會開始焦慮,特別是當我們在攀爬岩壁或在觀眾面前發表演講時。但如果我們的能力大於挑戰,我們就會開始感到無聊。所以這就是人類處於的兩種主要狀態,我們不是焦慮就是無聊。難以達到的是這種「心流」(flow) 狀態,一切都順利進行,我們希望為初學者擴大這個心流狀態。例如,我們可以做的一件事來處理挑戰大於我們能力的領域,是增加安全性。所以環境中有「復原」(undo) 功能很不錯,大多數程式設計環境沒有太多的復原功能。另一方面,因為我們很容易感到無聊,我們想要一些東西來幫助我們更好地集中注意力。一個好的使用者介面基本上就是處理這些事情的。它提供的安全性比大多數電腦人認為普通人需要的要多,而且它提供的吸引他們注意力的方式比我們大多數人認為人們需要的要多。

演示:Squeak 和 Croquet

我只想向你們展示一下,給你們一點關於孩子們如何開始的感覺,然後向你們展示我認為事情實際上將會走向何處。我們與孩子們一起做的工作,我們希望他們獲得一種體驗,這種體驗基本上是關於思考想法並將其圖像化。例如,拿一個大多數孩子出於某種原因都喜歡做的事情,那就是學習如何駕駛父母的汽車,讓他們設計一輛汽車。大多數孩子,無論是男孩還是女孩,都會裝上這樣的大型越野輪胎,因為這部分內容包含了無力感和想要獲得力量的願望。這是電子遊戲製造商真正理解的東西,為什麼那些遊戲如此暴力?所以我們這裡有一個小圖形物件,我們可以對它做些事情。我們可以打開它,看到它的檢視器。我意識到後面的人看不太清楚,所以我正在看這個東西的一個屬性,叫做它的「朝向」(heading),我將把數字往上數,它從零開始,隨著我往上數,你們可以看到這輛小車在轉彎。我這裡有一個行為屬性叫做「向前」(forward)。我還有一個叫做「轉彎量」(turn by)。所以如果我只是拖出這裡的腳本行,並開啟時鐘,那麼我的小車就開始行駛了。我可以用它做很多不同的事情。對於孩子們來說,他們想學會一點如何開車。所以第一個實驗是,如果我點擊這個數字會發生什麼?它顯示「轉彎量」。現在,「轉彎量」為零時直行。「轉彎量」為負數... 我會叫這個東西「車」,讓它保持直線。這有點像親吻你姐姐,因為真正的汽車使用輪子。所以我想在這裡做一個輪子, just draw one,它與另一個具有相同的使用者介面,因為這是一個只有一種物件的系統。所以它與你們習慣的那些擁有數百萬類別和子類別等等的系統完全相反。如果你們願意,我們可以在問答環節稍微談論一下這個。這裡就是這個輪子。它也有一個「朝向」。如果我拿起那個「朝向」的名字,然後把它拖到這裡的腳本上,所以它顯示「車 轉彎量 輪子朝向」。現在我就可以轉動這輛車了。對於 10 歲的孩子來說,重要的是他們一生從這一次經驗中學到變數是什麼。這很好。事實上,我相信這對高中生和大學生也會很好,因為有相當多證據表明他們從未真正學到變數到底是什麼或它做什麼,以及思考它的方式。

所以這裡有很多不同的東西可以做。擁有一種物件是種奇怪的事情。我的意思是,這裡有一張照片,我們可以看到它也具有相同的屬性。腳本也是其中一種。如果我打開它的檢視器,這裡有一個叫做「腳本編寫器」(scripter) 的東西,我看到,哦,它實際上是同一種東西。那如果我在腳本上製作一個腳本,讓它運行起來呢?思考一下這意味著什麼。這意味著無論我走到哪裡... 例如,如果我走到這裡呢?檢視器也有一個這種東西,這個類別也是,我用來進行演講的整個外部也是這種東西之一。所以我看它的檢視器,世界的檢視器,嗯,它也有同樣的東西。如果我們看看各種特性 (traits),這就像 Nathaniel Charlay 早些時候談論的一樣,這種橫向組合 (sideways composition) 的概念也可以追溯到 PARC。當時在七十年代,它被稱為「面向」(aspects),但現在這個詞的意思有點不同。所以我們看看這些各種東西,我們可以發現,哦,這個東西是一個集合。它有一些關於顏色、邊框和其他東西的資訊。這裡有一個寫著「作為物件」(as object)。在繼承系統中,「物件」會位於繼承系統的頂端,但在橫向組合的物件系統中,它將是我們正在查看的特性之一。我們正在查看物件作為物件的視圖。我們試著思考用什麼有趣的方式來展示「元」(meta) 這個概念。這裡有一個,我將要做的是抑制所有物件上的所有外觀 (costumes)。我想這會幫助你們看到所有東西在抽象上都是一樣的。好的,基本上我只是關閉了外觀機制。現在我有一個有趣的難題,就是如何回去,但這就是為什麼我把滑鼠留在這裡。這個就是做了這件事的傢伙。我要點擊這裡的小箭頭,我知道它在那裡,讓它變成假,然後我會點擊驚嘆號,把所有東西重新打開。你們明白我在說什麼了嗎?基本上,「元」是安全的,如果你能允許一道柵欄接著一道柵欄接著一道柵欄接著一道柵欄。現在有很多例子,如果我有更長的演講時間,我會展示給你們看,但我想向你們展示最後一套想法。所以如果我們可以請後面的人播放影片 2。好的,回到 Sketchpad。

如果我們看看一個更面向未來的環境,我們會看到我們現在有能力用更複雜的方式來思考環境。所以我現在在一個我們建造的叫做 croquet 的 3D 環境中。順帶一提,如果你對兒童的東西感興趣,可以在 squeakland.org 這個網站上找到。這個 croquet 環境,這都是免費軟體,croquet 環境可以在 opencroquet.org 上找到。同樣,這是一個完全可以建構的環境,但我們所做的是對網頁做了一種有趣的類比。所以這裡的每個 3D 世界都像一個網頁,這些入口就像它們的超連結。所以我將把 Alice 彈到這裡的這個傢伙裡面。我將做一個 360 度轉動。這是一個火星環境。所有這些環境都是可以建造的。我只想給你們看最後一個東西,這樣我就可以按時結束。我挺喜歡把橋樑作為類比。所以我們有一個橋樑結構。我想向你們展示孩子們編寫腳本來建造橋樑的環境看起來是怎樣的。所以我們要看的第一件事是質量點的小腳本。基本上我們這裡有 F=MA。加速度是力量除以質量。速度隨著加速度增加。所有小元素的位置會隨著速度增加。我要在這裡打開力量。讓這個滑鼠工作。然後說,好的,來做吧。這個橋樑結構正在感受重力,你們可以看到它正在達到平衡。我們可以讓它更硬。讓我們看看彈簧。彈簧相當硬。這裡的 K 值為 -1400。所以我在這裡要做的是把它變成 -400。告訴它繼續。這樣它會下垂更多。然後我們都記得 Tacoma Narrows 大橋的影片。所以我們當然要有風。基本上我這裡要做的是打開一個可變的陣風,它完全由這裡的腳本描述。所以現在它將會做一些 Tacoma Narrows 的事情。我需要聲音。我注意到聲音不工作。謝謝。讓我們看看我們的橋樑。你知道這很有趣,當你看到一個鋼的模型時。你記得那部 Tacoma Narrows 大橋的電影。那座橋樑看起來就像是用某種織物製成的。而這個也有類似的感覺。這給了我們一個有趣的想法。

結論:浪漫與未來

所以我認為結束這次演講的好方法是說,如果我們不能讓孩子們對浪漫感興趣,為什麼這是一種令人難以置信的美麗新藝術形式,那麼我們就沒有盡到我們自己享受這些東西的職責。我們必須深入我們內心,記住是什麼最初讓我們對這個奇妙的新事物感興趣。記住它甚至還沒有開始。而我們的職責是盡可能地幫助孩子們做得比我們更好。非常感謝。謝謝。謝謝 Alan 帶來精彩的演講。我們這裡也有一點心意表示我們的謝意。我們的圖靈獎演講到此結束。你們現在可以去享用晚餐了。然後晚上八點,我們將開始今晚議程的最後一項活動,Goff 10 週年重聚會。那麼,你們可以離開了。謝謝。