H.Abelson & G.J.Sussman
《計(jì)算機(jī)程序結(jié)構(gòu)與解釋》第二版
MIT Press, 1996
(翻譯:俞中堅(jiān) 溫州大學(xué))
編程比通常所想更為復(fù)雜。從事計(jì)算機(jī)編程的人學(xué)習(xí)計(jì)算機(jī)語言,一般要遵循語言規(guī)范并閱讀手冊(cè),但這些并非他們所做的全部。首先,程序員要以一種可靠的方式思考。他或她要認(rèn)識(shí)到我們的邏輯與解決問題的思考過程,并將之簡化為優(yōu)雅的算法。程序員必須清晰地思考,并比普通人要更加深入地理解問題。他或她還必須將這些想法以非常精確與詳盡的方式與簡單沉默的機(jī)器溝通,絕不能含糊。這種思維方式被卡內(nèi)基梅隆大學(xué)的周以真教授(Jeannette Wing)稱為“計(jì)算思維(Computational Thinking)”?!坝?jì)算思維是種思考過程,它涉及將問題與解答公式化,并表達(dá)為能由一臺(tái)信息處理終端有效執(zhí)行的格式?!?/p>
讓我說得更清楚一些吧。當(dāng)我談及編程,我指的是模擬世界一部分的全部過程——即使是一個(gè)在計(jì)算機(jī)里的虛擬世界。我認(rèn)為沒必要區(qū)分設(shè)計(jì)與實(shí)現(xiàn)。這里的原型設(shè)計(jì)是關(guān)鍵。因此,編程明顯不是一種簡單的文書工作。編程帶來了一種新的理解世界的方式,雖然有人說這還是傳統(tǒng)的科學(xué)方法,并不是新的。即便如此,計(jì)算編程顯然傳播了這種理解世界的方式,這很不錯(cuò),或者說是當(dāng)前非常需要的。
不管出于何種原因,麻省理工和施樂帕克研究中心的老黑客們?cè)诎耸甏颓宄卣J(rèn)識(shí)到編程不僅僅是給計(jì)算機(jī)下指令。二十年后,Abelson和Sussman引入了程序化認(rèn)識(shí)論的概念。
我們對(duì)這門學(xué)科的方法是基于一種信念:計(jì)算機(jī)科學(xué)不是一門科學(xué)。它的重要意義幾乎和計(jì)算機(jī)本身無關(guān)。計(jì)算機(jī)革命是關(guān)于思考方式以及如何表達(dá)思考內(nèi)容的革命。這場變革的實(shí)質(zhì)是被稱為“程序化認(rèn)識(shí)論”概念的浮現(xiàn)。這是從規(guī)則角度對(duì)知識(shí)結(jié)構(gòu)的研究,與經(jīng)典數(shù)學(xué)學(xué)科更傾向于從陳述角度出發(fā)完全不同。數(shù)學(xué)提供了精確處理“是什么”的概念框架,而計(jì)算提供的是精確處理“怎么做”的概念框架。
Alan Kay
Stuart Feldman采訪
Queue 2(5), pp.20-30, 2005
(翻譯:俞中堅(jiān) 溫州大學(xué))
“一場思考方式與表達(dá)思考方式的革命”是其要點(diǎn)。如果我們?cè)谧铋_始,也就是在學(xué)校教育階段,在開始教育學(xué)生如何思考的時(shí)候,就傳播思考方式的革命,并堅(jiān)持這種理念十分重要。這樣將非常有效。十九世紀(jì)六十年代時(shí),作為構(gòu)成學(xué)習(xí)方法的一部分,Seymour Papert認(rèn)為教小孩編程是很好的想法。他為了引導(dǎo)孩子更輕松地“如何處理”問題與挑戰(zhàn)的任務(wù),發(fā)明了現(xiàn)在十分有名的編程語言——LOGO。同時(shí),在十九世紀(jì)七十年代施樂帕克研究中心小組也主動(dòng)用Smalltalk編程語言去教高年級(jí)兒童編程。
因此,關(guān)于思考方式的傳播與普遍性改變應(yīng)該是意料之中的事情,因?yàn)閺倪@個(gè)想法誕生起已經(jīng)有三十年了。而且,現(xiàn)在很多發(fā)達(dá)國家的人擁有多臺(tái)電腦并經(jīng)常使用。但事實(shí)并非如此。讓我們引一段Alan Kay的話:“人們確實(shí)可以爭辯,就像我有時(shí)候做的那樣:商業(yè)個(gè)人電腦和操作系統(tǒng)的成功實(shí)際上導(dǎo)致很多方面嚴(yán)重倒退。因?yàn)樯虡I(yè)計(jì)算傳播的速度遠(yuǎn)比教育無知的人們的速度要快得多,你可以把它想象為從‘六十和七十年代以來,有一個(gè)低通過濾器安裝在一些優(yōu)秀的思想里(阻止了優(yōu)秀思想的傳播)?!?/p>
Jordi Delgado (軟件系,西班牙加泰羅尼亞理工大學(xué))
(翻譯:俞中堅(jiān) 溫州大學(xué))
所以,關(guān)于思考方式革命的承諾并未兌現(xiàn)。
無論如何,我們中的一些人仍然相信致力于教小孩計(jì)算機(jī)編程,并將其作為傳播計(jì)算思維的一部分是很重要的。這是為什么我們(Joan Güell, José García和我自己)從2008年2月開始在Cornellà-Barcelona的一個(gè)實(shí)驗(yàn)室教學(xué)Scratch。(我們也教Botsinc和Squeak, 這些都是基于Smalltalk的)。在相同的項(xiàng)目里,Marco A.Rodriguez教學(xué)Arduino和Processing。我們也和Catalonia本地政府緊密合作將Scratch和Squeak囊括在小學(xué)和中學(xué)使用的Linux發(fā)行版本里。同時(shí),我們也在公共教育系統(tǒng)里推廣使用Scratch和Squeak。
2009年秋天,我們開始認(rèn)識(shí)到結(jié)合真實(shí)的項(xiàng)目和真實(shí)的硬件,能大大推動(dòng)小孩子學(xué)習(xí)編程的興趣。我們認(rèn)為最佳方法是將最好的開源硬件平臺(tái)Arduino與最好的學(xué)習(xí)、實(shí)踐計(jì)算思維的工具Scratch結(jié)合在一起。這個(gè)方向的第一步是由Marina Conde在她的信息技術(shù)學(xué)位項(xiàng)目中,用Smalltalk Pharo控制Arduino板做出來的。在Victor Casado(現(xiàn)在是S4A 維護(hù)者)的幫助下,我們研究Scratch的核心,實(shí)現(xiàn)Squeak 2.8。經(jīng)過幾個(gè)月的辛苦工作我們讓第一版本的S4A(Scratch for Arduino)工作起來。最后實(shí)現(xiàn)支持多平臺(tái)應(yīng)用(Windows, Linux and Mac),我們得到Jorge Gómez的幫助,解決了一些令人惱火的Linux驅(qū)動(dòng)問題。
這就是S4A的故事。幸運(yùn)的是S4A大受歡迎?,F(xiàn)在S4A擁有一些活躍的國際性社區(qū),我們深深地感謝他們的工作。大量有趣好玩的項(xiàng)目與系統(tǒng),使用S4A來搭建。正如謝作如老師這本《S4A和互動(dòng)媒體技術(shù)》所寫的,這些項(xiàng)目給人以很大的創(chuàng)新與想象余地。
還記得2009年圣誕假期開始時(shí),我和一些參加Citilab舉辦的Scratch課程班學(xué)習(xí)的小孩的對(duì)話。一個(gè)非常喜歡Scratch的秘魯女孩,不超過10歲,我們問到她長大了想做什么。
“一個(gè)計(jì)算機(jī)科學(xué)家嗎?”我們說。
“不,我想做一名醫(yī)生?!?她回答。
隨后,我們稍帶夸張地打量她,“那么關(guān)于Scratch和編程的所有內(nèi)容,對(duì)你來說是浪費(fèi)時(shí)間的嗎?”
“不?!彼f,“我很感謝從這里所學(xué)的,能讓我成為一名與眾不同的醫(yī)生?!?/p>
她已徹底領(lǐng)悟。endprint