王繼華
【摘要】 本文通過(guò)文獻(xiàn)分析介紹了計(jì)算思維的關(guān)鍵內(nèi)涵“抽象”,然后通過(guò)對(duì)英國(guó)計(jì)算教育課程的分析,提出了將“抽象”和實(shí)現(xiàn)“自動(dòng)化”的編程結(jié)合起來(lái)開(kāi)展計(jì)算思維教學(xué)的總原則,最后用兩個(gè)典型的案例介紹了如何開(kāi)展計(jì)算思維的教學(xué)。
【關(guān)鍵詞】 計(jì)算思維 抽象 自動(dòng)化 編程 教學(xué)
【中圖分類號(hào)】 G633.67 【文獻(xiàn)標(biāo)識(shí)碼】 A 【文章編號(hào)】 1992-7711(2016)02-090-020
計(jì)算思維是美國(guó)卡內(nèi)基·梅隆大學(xué)(CMU)計(jì)算機(jī)科學(xué)系主任周以真(Jeannette M.Wing)教授于2006年提出,在美國(guó)計(jì)算機(jī)權(quán)威刊物《Communications of the ACM》上首次提出了計(jì)算思維(Computational Thinking)的概念:“計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念去求解問(wèn)題、設(shè)計(jì)系統(tǒng)和理解人類的行為。它包括了涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)?!钡捎谟?jì)算思維的內(nèi)涵豐富,在理解上給許多人帶來(lái)了困擾,甚至于有的人一開(kāi)始并不承認(rèn)計(jì)算思維的存在。
但隨著包括計(jì)算機(jī)科學(xué)界在內(nèi)的各界科學(xué)家的逐漸接受,計(jì)算思維在西方科學(xué)界越來(lái)越受重視。冠以“計(jì)算”二字的諸如“計(jì)算生物學(xué)”、“計(jì)算物理學(xué)”、“計(jì)算化學(xué)”等學(xué)科早已涌現(xiàn),并對(duì)各個(gè)學(xué)科的發(fā)展做出了重要貢獻(xiàn)。2013 年的諾貝爾化學(xué)獎(jiǎng)授予了三位美國(guó)科學(xué)家馬丁·卡普布拉斯、邁克爾·萊維特和亞利耶·瓦謝爾,表彰他們?cè)陂_(kāi)發(fā)多尺度計(jì)算模型處理復(fù)雜體系的化學(xué)反應(yīng),利用計(jì)算機(jī)模擬化學(xué)反應(yīng)領(lǐng)域所作出的開(kāi)創(chuàng)性貢獻(xiàn),他們的貢獻(xiàn)就是典型的計(jì)算思維的體現(xiàn)。信息時(shí)代的創(chuàng)新,如果缺少了計(jì)算思維,猶如大雁失去了翅膀。
計(jì)算思維教育在美國(guó)、英國(guó)和一些發(fā)達(dá)國(guó)家受到了前所未有的重視。但內(nèi)涵廣泛的計(jì)算思維的關(guān)鍵到底是什么?怎樣去培養(yǎng)?本文試圖從計(jì)算思維的提出者周以真教授的演講稿的學(xué)習(xí)開(kāi)始,借鑒英國(guó)的經(jīng)驗(yàn),談?wù)勎覀兊淖龇ā?/p>
1.抽象:計(jì)算思維的關(guān)鍵
我們檢索了許多關(guān)于計(jì)算思維的論文和演講稿,期望搞清楚計(jì)算思維的關(guān)鍵內(nèi)涵到底是什么,期望有一個(gè)通俗易懂的解釋能在中國(guó)傳播。在此過(guò)程中我們發(fā)現(xiàn)周以真在2011年3月4日的卡內(nèi)基·梅隆大學(xué)“OurCS Workshop”上做的“計(jì)算思維”的演講稿有一個(gè)清晰的圖示,如圖1.
在這個(gè)圖示中,計(jì)算思維被描述為“側(cè)重于抽象”,這里的抽象是或者類似為數(shù)學(xué)模型,這是可計(jì)算的前提條件。抽象的過(guò)程可以分解為:選擇正確的抽象;同時(shí)操作多個(gè)層次的抽象模型;定義層之間的關(guān)系。“自動(dòng)化”在圖1中反映為對(duì)“抽象”的處理,即把高強(qiáng)度的或海量的運(yùn)算交給高速的計(jì)算設(shè)備“自動(dòng)化”處理,通過(guò)處理后的反饋,不斷優(yōu)化抽象模型。其重要性雖然被放到“抽象”之后,但理解并學(xué)會(huì)實(shí)現(xiàn)一定的“自動(dòng)化”——學(xué)習(xí)編程,也是很有必要的。
什么是抽象?把現(xiàn)實(shí)中的事物或解決問(wèn)題的過(guò)程,通過(guò)化簡(jiǎn)等方式,抓住其關(guān)鍵特征,降低其復(fù)雜度,變?yōu)橛?jì)算設(shè)備可以處理的模型。
現(xiàn)代計(jì)算設(shè)備的計(jì)算能力雖然已經(jīng)相當(dāng)高,但在處理復(fù)雜事物上還是力不從心。比如天氣預(yù)報(bào)、核爆炸、藥物學(xué)與分子生物學(xué)的計(jì)算……所以,藉由抽象,降低復(fù)雜度,但又可以非常逼近真實(shí)事物,使其不至于失真。前面所說(shuō)的諾貝爾化學(xué)獎(jiǎng)得主的算法,就是在抽象上做足了功夫后才成功的,不然很難反映真實(shí)的化學(xué)實(shí)驗(yàn)過(guò)程。
抽象過(guò)程中的化簡(jiǎn)對(duì)重構(gòu)事務(wù)處理的流程,利用自動(dòng)化的高效率,人機(jī)結(jié)合,可以使生產(chǎn)、生活和學(xué)習(xí)的效率大大提高。比如自動(dòng)化生產(chǎn)、自動(dòng)化辦公、網(wǎng)上購(gòu)物、滴滴打車、自適應(yīng)考試與學(xué)習(xí)診斷,等等。在今天幾乎所有現(xiàn)實(shí)都可以編碼為“0”和“1”的數(shù)字化時(shí)代,誰(shuí)的抽象能力強(qiáng),誰(shuí)就可以體現(xiàn)出新的創(chuàng)造性。
所以,我們不妨將“抽象”看做計(jì)算思維的關(guān)鍵,設(shè)法貫穿到中小學(xué)教育中,讓學(xué)生從小具備“抽象”的意識(shí)和能力,為發(fā)展數(shù)字化的創(chuàng)新能力打下基礎(chǔ)。
2.英國(guó)計(jì)算教育中對(duì)“抽象”的安排與啟示
計(jì)算思維的培養(yǎng)受到了西方發(fā)達(dá)國(guó)家的高度重視。美國(guó)總統(tǒng)奧巴馬與計(jì)算機(jī)科學(xué)領(lǐng)域的企業(yè)界領(lǐng)袖如Facebook的CEO扎克伯克等一起,號(hào)召每一個(gè)孩子一起來(lái)學(xué)習(xí)編程。美國(guó)國(guó)際教育技術(shù)協(xié)會(huì)和計(jì)算機(jī)科學(xué)教育協(xié)會(huì)5年前就制定了相應(yīng)的課程綱要,但因?yàn)槠溆?jì)算機(jī)科學(xué)的專業(yè)性要求過(guò)強(qiáng),難以實(shí)施,本文就不再介紹。但英國(guó)在此方面的行動(dòng)顯得容易實(shí)施一些,值得我們學(xué)習(xí)和分析借鑒。
為了改變ICT教育以學(xué)習(xí)office等為主的落后的面貌,在計(jì)算機(jī)科學(xué)家群體和教育專家的倡議下,英國(guó)教育部于201x年專門研制了計(jì)算教育的國(guó)家課程。其學(xué)習(xí)目的是:“高質(zhì)量的計(jì)算(Computing)教育能讓學(xué)生使用計(jì)算思維和創(chuàng)造力來(lái)理解和改變世界。計(jì)算與數(shù)學(xué)、科學(xué)、設(shè)計(jì)、技術(shù)等深度關(guān)聯(lián),提供了一個(gè)理解自然系統(tǒng)和人工系統(tǒng)的視角。計(jì)算的核心是計(jì)算機(jī)科學(xué),在這門學(xué)科中學(xué)生學(xué)習(xí)信息與計(jì)算的原理,數(shù)字系統(tǒng)如何工作以及如何通過(guò)編程使得這些知識(shí)得以使用。基于這些知識(shí)與理解,讓學(xué)生運(yùn)用信息技術(shù)創(chuàng)造程序、系統(tǒng)等。計(jì)算教育也能確保學(xué)生具備數(shù)字素養(yǎng),讓學(xué)生應(yīng)用并通過(guò)ICT表達(dá)自己的想法,使他們能達(dá)到一定的水平以適應(yīng)未來(lái)工作,并成為數(shù)字社會(huì)的積極參與者。”該課程目的的陳述,把計(jì)算思維放到了核心位置。
課程的具體目標(biāo)是:
(1)讓學(xué)生理解和應(yīng)用計(jì)算機(jī)科學(xué)的基本原理和概念,包括抽象、邏輯、算法、數(shù)據(jù)表示;
(2)能使用計(jì)算術(shù)語(yǔ)來(lái)分析問(wèn)題,并具備為解決這些問(wèn)題不斷地編寫(xiě)計(jì)算機(jī)程序的實(shí)踐經(jīng)驗(yàn);
(3)能評(píng)價(jià)和使用信息技術(shù),包括新興的或不熟悉的技術(shù),分析性地解決問(wèn)題;
(4)成為有責(zé)任心、有能力、自信的、有創(chuàng)造力的ICT使用者。
該目標(biāo)對(duì)學(xué)生掌握計(jì)算機(jī)科學(xué)的概念如“抽象”等和涉及“自動(dòng)化”的編程直接提出了要求。在學(xué)科內(nèi)容的具體規(guī)劃上,從5歲開(kāi)始的幼兒園階段到16歲的高中階段,分為四個(gè)學(xué)段分別進(jìn)行了安排。對(duì)于編程的教學(xué),5歲開(kāi)始的學(xué)段就讓安排了學(xué)習(xí)編程的內(nèi)容:
(1)理解什么是算法,算法作為數(shù)字設(shè)備上的程序是如何被實(shí)現(xiàn)的,并通過(guò)精確和清晰的指令執(zhí)行算法;
(2)創(chuàng)建和調(diào)試簡(jiǎn)單的程序;
(3)使用邏輯推理預(yù)測(cè)簡(jiǎn)單程序的行為……
到了11歲的學(xué)段,才明確安排有關(guān)“抽象”的內(nèi)容,并對(duì)學(xué)習(xí)“文本”的編程語(yǔ)言提出了要求:
(1)設(shè)計(jì)、使用和評(píng)價(jià)計(jì)算抽象,這個(gè)計(jì)算抽象可以模擬真實(shí)世界的問(wèn)題和物理系統(tǒng)的狀態(tài)和行為。
(2)理解幾個(gè)反映計(jì)算思維的關(guān)鍵算法(如排序和搜索的算法),利用邏輯推理來(lái)比較使用不同算法解決同樣問(wèn)題的績(jī)效。
(3)使用兩個(gè)或兩個(gè)以上的編程語(yǔ)言,其中一個(gè)是文本,每個(gè)語(yǔ)言用于解決各種計(jì)算問(wèn)題;正確使用數(shù)據(jù)結(jié)構(gòu)(如列表、表格或數(shù)組),使用過(guò)程或函數(shù)來(lái)設(shè)計(jì)和開(kāi)發(fā)模塊化程序。
這樣的內(nèi)容安排,對(duì)“編程”的要求是很高的,雖然越是懂得編程、算法、邏輯(主要是指編程中的判斷和循環(huán))和數(shù)據(jù)表示,越是有利于學(xué)習(xí)“抽象”。對(duì)“抽象”的要求后移太多,有可能造成編程——“自動(dòng)化”和“抽象”的脫節(jié),其實(shí)兩者完全可以結(jié)合起來(lái),放在一起學(xué)習(xí)。
另外,對(duì)于在課時(shí)捉襟見(jiàn)肘的中國(guó)中小學(xué)教育,我們傾向于推薦Scratch這樣可視化的搭積木式的編程,不推薦“文本”的編程語(yǔ)言的學(xué)習(xí)。即便是Python這樣的相對(duì)比較容易上手的“文本”編程語(yǔ)言,每周一課時(shí)的安排,“文本”編程語(yǔ)言的學(xué)習(xí)和實(shí)踐的時(shí)間是遠(yuǎn)遠(yuǎn)不夠的,如果要求所有的學(xué)生把精力放在這個(gè)方面將是得不償失的。建議對(duì)那些學(xué)有余力的學(xué)生,通過(guò)課外興趣小組的方式去讓他們進(jìn)行深入的學(xué)習(xí)。
3.如何進(jìn)行“抽象”的教學(xué)
我們多年的實(shí)踐經(jīng)驗(yàn)是:不孤立地教編程,一開(kāi)始就讓學(xué)生把抽象和編程結(jié)合起來(lái)。這是總的教學(xué)原則。
我們問(wèn)一位在電大教JAVA的研究生,“你自己能用JAVA寫(xiě)個(gè)小軟件嗎?”他說(shuō):“不能?!薄澳敲茨憬痰膶W(xué)生能做到嗎?”他又說(shuō):“不能”?!澳敲?,考試怎么過(guò)關(guān)呢?”他說(shuō):“都是考的一些語(yǔ)句命令的簡(jiǎn)單套用……”這樣的編程教學(xué)在以往中小學(xué)教LOGO語(yǔ)言和BASIC語(yǔ)言時(shí)同樣是個(gè)普遍現(xiàn)象,教學(xué)就是教語(yǔ)句命令,造成學(xué)而不能致用。孤立教編程的這條路,是已經(jīng)失敗了的,是走不通的。
那么如何將“抽象”和編程結(jié)合起來(lái)呢?我們介紹兩個(gè)例子來(lái)說(shuō)明。
(1)“花”的Scratch編程
抽象的目的是為了把復(fù)雜的現(xiàn)實(shí)化簡(jiǎn)為可計(jì)算的模型,比如對(duì)圖2中一朵花進(jìn)行分析,8個(gè)花瓣具有相似性,那么可以把一片花瓣繪制為(抽象)如圖3中的樣子(當(dāng)然還有繼續(xù)抓特征繼續(xù)完善的余地)。然后建模,即8個(gè)花瓣圍成360°一圈,每個(gè)花瓣圍繞下端的中心點(diǎn)旋轉(zhuǎn)45度即可實(shí)現(xiàn)。通過(guò)編程實(shí)現(xiàn)“自動(dòng)化”繪制,見(jiàn)圖4,達(dá)到圖5的效果。如果繪制出來(lái)的效果距離抽象的對(duì)象(花)太遠(yuǎn),可以繼續(xù)修改完善圖3中的單個(gè)花瓣,直到滿意為止。這種從抽象到編程實(shí)現(xiàn)的過(guò)程是較為簡(jiǎn)單的,小學(xué)生完全可以做到。
(2)小游戲的Scratch編程
理解了“花”的抽象,就容易理解更復(fù)雜的抽象了。用Scratch編寫(xiě)小游戲是最常見(jiàn)的教學(xué)內(nèi)容,能較好地吸引學(xué)生的興趣。有些游戲?qū)Τ橄蟮囊筝^低,比如打地鼠游戲,從角色到舞臺(tái)的安排到編程的實(shí)現(xiàn),并不困難。我們可以在Scratch的各種教材里都看到設(shè)計(jì)這個(gè)游戲的內(nèi)容。
模擬類的游戲可能對(duì)“抽象”的要求會(huì)更高一些,比如要編寫(xiě)一個(gè)食物鏈系統(tǒng)的模擬游戲,學(xué)生要搞清楚這個(gè)系統(tǒng)中有哪些動(dòng)植物(抽象出角色)?這些動(dòng)植物之間的食物關(guān)系是怎樣的(抽象出一個(gè)個(gè)的角色之間的關(guān)系)?當(dāng)在舞臺(tái)(比如草地)中這些動(dòng)植物遇到時(shí)各自會(huì)出現(xiàn)什么結(jié)果,一起和諧共生時(shí)相互間數(shù)量關(guān)系的影響(抽象為數(shù)學(xué)模型)?如果增加某個(gè)動(dòng)物的數(shù)量,會(huì)對(duì)其它動(dòng)植物的數(shù)量產(chǎn)生什么影響(應(yīng)用該數(shù)學(xué)模型)……
4.結(jié)語(yǔ)
計(jì)算思維的教學(xué)對(duì)我國(guó)中小學(xué)教育來(lái)說(shuō),還是一個(gè)全新的領(lǐng)域,不僅基本理論研究沒(méi)跟上,教師的教學(xué)準(zhǔn)備也相當(dāng)不足。本文試圖尋找計(jì)算思維的關(guān)鍵點(diǎn)來(lái)推進(jìn)同行對(duì)計(jì)算思維的理解,以及思考在教學(xué)中的應(yīng)用,期望能起到拋磚引玉的作用,共同推動(dòng)我國(guó)信息技術(shù)教育的發(fā)展。
[ 參 考 文 獻(xiàn) ]
[1]周以真.計(jì)算思維[OL].http://csta.acm.org/Curriculum/sub/Curr Files/Wing CTPrez.pdf.
[2]牛杰,劉向永.從ICT到Computing:英國(guó)信息技術(shù)課程變革解析及啟示[J].電化教育研究,2013(12).