牟連佳 李丕賢 邵洪艷
摘要:隨著移動(dòng)計(jì)算和社會(huì)計(jì)算的發(fā)展,人們可以隨時(shí)隨地獲得需要的信息和服務(wù),計(jì)算思維幾乎無(wú)處不在。計(jì)算思維使用的隱喻和結(jié)構(gòu)正在影響著所有的科學(xué)與工程領(lǐng)域。對(duì)計(jì)算教育的研究工作將為“計(jì)算思維”成為一種全面共享的21世紀(jì)的文化技能而鋪平道路。需要利用多個(gè)學(xué)科(包括計(jì)算機(jī)科學(xué)、教育學(xué)、心理學(xué)和社會(huì)學(xué))的方法來(lái)改善計(jì)算教育。
關(guān)鍵詞:計(jì)算;計(jì)算教育;計(jì)算思維;計(jì)算機(jī)科學(xué)
中圖分類(lèi)號(hào):G642.41 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2015)51-0228-02
一、前言
上世紀(jì)60年代初,專(zhuān)家提出:校園內(nèi)的每一個(gè)大學(xué)生都應(yīng)該學(xué)會(huì)程序設(shè)計(jì)[1],要把這當(dāng)作通才教育的組成部分。他們認(rèn)為,程序設(shè)計(jì)是對(duì)流程的探索,是一個(gè)與每個(gè)人都有關(guān)的課題,而且如果能用機(jī)器來(lái)自動(dòng)執(zhí)行流程的話,那將會(huì)改變一切。他們將程序設(shè)計(jì)看作是理解“計(jì)算理論”而必須采取的一個(gè)步驟,將導(dǎo)致學(xué)生們從計(jì)算理論的角度對(duì)大量的課題(比如微積分和經(jīng)濟(jì)學(xué))進(jìn)行重新理解。
今天,流程的自動(dòng)執(zhí)行正在所有的科學(xué)與工程領(lǐng)域中改變著各個(gè)學(xué)科的專(zhuān)業(yè)人員對(duì)本行工作的思維方式。計(jì)算思維所使用的隱喻和結(jié)構(gòu)正在影響所有的科學(xué)與工程領(lǐng)域。計(jì)算思維的專(zhuān)業(yè)人員與教育工作者有責(zé)任幫助各個(gè)學(xué)科的思想家去掌握計(jì)算思維方法。
通過(guò)正規(guī)教學(xué)將能夠部分實(shí)現(xiàn)這一職責(zé)。雖然其他領(lǐng)域內(nèi)的專(zhuān)業(yè)人員可能不需要多少訓(xùn)練就能夠使用某一種應(yīng)用軟件,但是在軟件設(shè)計(jì)中所涉及到的隱喻和思維方式卻必須予以明確講授。在對(duì)校園中所有大學(xué)生進(jìn)行計(jì)算教育的時(shí)候,可能需要采用多種不同的方法。這些方法應(yīng)該與對(duì)那些有志成為計(jì)算學(xué)科專(zhuān)家的大學(xué)生進(jìn)行教學(xué)時(shí)所使用的方法有所不同。在開(kāi)發(fā)適用于所有大學(xué)生的方法時(shí),我們需要解決各種難題,比如:非計(jì)算學(xué)科專(zhuān)業(yè)的學(xué)生是如何理解計(jì)算思維的,他們將會(huì)遇到哪些挑戰(zhàn),什么樣的工具可以幫助他們最輕松地掌握計(jì)算思維,以及應(yīng)該如何組織和建構(gòu)我們的課程以便使各種各樣的大學(xué)生都能夠接受計(jì)算思維。
在本文中,將舉幾個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明計(jì)算教育研究領(lǐng)域內(nèi)的研究人員是如何解決這些問(wèn)題的。計(jì)算教育領(lǐng)域的研究人員既倚重計(jì)算機(jī)科學(xué)理論又吸收教育理論的思想,二者缺一不可。雖然我們的計(jì)算機(jī)科學(xué)家是從實(shí)用的、理性的和理論的角度來(lái)理解計(jì)算思維,但是從本質(zhì)上來(lái)看,有關(guān)教育的問(wèn)題卻屬于人的問(wèn)題。人往往是不切實(shí)際的,缺乏理性,而且其行為難以預(yù)測(cè),也難以求證。
計(jì)算教育研究者們正在利用實(shí)驗(yàn)和設(shè)計(jì)方案來(lái)證明我們能夠解決這些重要問(wèn)題:即人類(lèi)怎樣才能理解計(jì)算思維,以及我們?nèi)绾尾拍芨玫乩斫庥?jì)算思維。有關(guān)計(jì)算教育的研究工作將會(huì)為此鋪平道路,使得“計(jì)算思維”成為一種全校園共享的21世紀(jì)文化技能。
二、編寫(xiě)程序之前需具備計(jì)算知識(shí)
上世紀(jì)80年代初開(kāi)展過(guò)一項(xiàng)研究課題,即如何讓程序設(shè)計(jì)語(yǔ)言更接近自然語(yǔ)言。當(dāng)時(shí)遇到了一個(gè)顯而易見(jiàn)的問(wèn)題,那就是人類(lèi)如何用自然語(yǔ)言來(lái)描述流程。Lance A. Miller要求參試人員為另一個(gè)人詳細(xì)說(shuō)明文檔操作任務(wù)。其中有一項(xiàng)任務(wù)就是“以給定的紙質(zhì)文件為基礎(chǔ),整理出一份清單,列出所有擁有攝影師職稱并被評(píng)估為高級(jí)攝影師的雇員”。然后,Miller對(duì)參試人員所使用的描述語(yǔ)言進(jìn)行了研究[2]。
令Miller感到意外的是,那些參試人員極少對(duì)任何類(lèi)型的控制流做出明確說(shuō)明。在他們的任務(wù)描述中幾乎沒(méi)有出現(xiàn)任何明確的循環(huán)語(yǔ)句。雖然有些人試著使用了條件語(yǔ)句(“IF”),但是竟沒(méi)有一個(gè)人使用過(guò)一個(gè)“ELSE”語(yǔ)句。他對(duì)此感到非常吃驚,于是又為第二組參試人員提供了一個(gè)任務(wù)描述范例,范例中沒(méi)有出現(xiàn)循環(huán)語(yǔ)句和“ELSE”語(yǔ)句,結(jié)果第二組參試人員輕而易舉地完成了任務(wù)描述。
當(dāng)他們被問(wèn)到如果條件不滿足,或者如果數(shù)據(jù)被用盡的話,那么該怎么辦,他們幾乎眾口一詞回答說(shuō):“當(dāng)然,那就查看下一個(gè)人,或者如果沒(méi)有數(shù)據(jù)了,那么繼續(xù)執(zhí)行下一步就行了”。
Miller的研究結(jié)果可以預(yù)測(cè)在學(xué)習(xí)程序設(shè)計(jì)的過(guò)程中可能會(huì)遇到的某些挑戰(zhàn),即如今入門(mén)課程的教師無(wú)人不知的那些挑戰(zhàn)。雖然新手們往往不會(huì)具體說(shuō)明在每一種條件下應(yīng)該做什么,但是計(jì)算機(jī)卻要求我們給出這樣明確的說(shuō)明。Miller的研究結(jié)果表明了哪一種程序設(shè)計(jì)語(yǔ)言更容易被新手所接受。就像現(xiàn)在C和C++這樣的程序設(shè)計(jì)語(yǔ)言都使用了具體的循環(huán)語(yǔ)句,與Miller研究中參試人員的情況類(lèi)似。
二十年以后,John Pane和他在卡內(nèi)基梅隆大學(xué)的同事們重新研究了Miller提出的問(wèn)題,但是換到了新的應(yīng)用環(huán)境之中[3]。在一項(xiàng)實(shí)驗(yàn)中,Pane為他的受試者說(shuō)明了一個(gè)游戲中出現(xiàn)的情景和流程,然后問(wèn)他們應(yīng)該如何描述。就像Miller一樣,Pane發(fā)現(xiàn)參試人員很少使用明確的循環(huán)語(yǔ)句,他們總是使用單向的條件語(yǔ)句。Pane進(jìn)一步說(shuō)明了參試人員的程序設(shè)計(jì)風(fēng)格。他發(fā)現(xiàn),半數(shù)以上參試人員的任務(wù)說(shuō)明都以順序結(jié)構(gòu)的形式出現(xiàn),就像例子中給出的那樣。他也觀察到了有約束語(yǔ)句和命令語(yǔ)句的使用,但是幾乎沒(méi)有證據(jù)表明參試人員使用了面向?qū)ο蟮乃季S方式。參試人員確實(shí)談到置于實(shí)體中的訪問(wèn)行為,但是幾乎沒(méi)有從那個(gè)實(shí)體的角度來(lái)探討這個(gè)問(wèn)題。相反,他們是從游戲玩家或程序設(shè)計(jì)人員的角度來(lái)看待這個(gè)問(wèn)題的。他沒(méi)有找到任何證據(jù)表明參試人員對(duì)實(shí)體的分類(lèi)(類(lèi)別定義)、繼承關(guān)系或多態(tài)性做過(guò)任何描述。
Pane的研究結(jié)果說(shuō)明,考慮到新手對(duì)任務(wù)描述的典型特征,面向?qū)ο蟮乃季S不是“自然的”思維方式。由于對(duì)象是當(dāng)今多數(shù)現(xiàn)代化軟件的基礎(chǔ),他的研究結(jié)果指出了我們?cè)谙驅(qū)W生解釋什么叫做對(duì)象的時(shí)候可能會(huì)在哪些地方遇到困難。Miller和Pane的研究結(jié)果都激勵(lì)我們?nèi)タ紤]如何才能設(shè)計(jì)出適合新手使用的程序設(shè)計(jì)語(yǔ)言,讓他們能夠按照自然的思維方式來(lái)描述計(jì)算步驟,就像使用MIT的Scratch進(jìn)行面向事件的程序設(shè)計(jì)那樣。
在過(guò)去四年里,有一個(gè)多國(guó)研究小組對(duì)“常理計(jì)算思維”作了探討。研究的問(wèn)題有:學(xué)生們?cè)谖覀冎v授這門(mén)課之前已經(jīng)具備了哪些知識(shí)?面對(duì)一項(xiàng)復(fù)雜任務(wù)時(shí),那些不具備程序設(shè)計(jì)知識(shí)的人們是怎樣描述其算法的?Lewandowski等曾經(jīng)發(fā)表一篇論文,文中對(duì)并發(fā)沖突現(xiàn)象進(jìn)行了研究。在一家戲院有多個(gè)售票處的情況下,沒(méi)有程序設(shè)計(jì)知識(shí)的學(xué)生們?nèi)绾尾拍鼙苊馐鄢鰞蓮埻蛔坏膽蚱??他們的研究結(jié)果表明,有97個(gè)解決方案都是正確的(占受試者總數(shù)的69%,他們來(lái)自五個(gè)不同的機(jī)構(gòu));但是只有31%的解決方案(占正確方案的45%)得到了發(fā)行推廣。非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生不可能自然而然地拿出像計(jì)算機(jī)專(zhuān)業(yè)學(xué)生設(shè)計(jì)的那種非常講究的解決方案。然而,這些結(jié)果卻說(shuō)明了學(xué)生們能夠用“自然的”思維方式對(duì)并發(fā)沖突問(wèn)題進(jìn)行正確思考。在實(shí)現(xiàn)并發(fā)沖突程序的過(guò)程中會(huì)遇到的問(wèn)題可能更多地來(lái)自如何用當(dāng)前使用的程序設(shè)計(jì)語(yǔ)言來(lái)描述那些算法,而不是來(lái)自這些算法本身的復(fù)雜程度。
如果我們的目標(biāo)是要讓計(jì)算思維的思想更容易地為新手所接受,那么Pane和Miller的研究結(jié)果都為編程語(yǔ)言的設(shè)計(jì)提供了啟示,即需要重新設(shè)計(jì)程序設(shè)計(jì)語(yǔ)言。Thomas R.G. Green以及其他多名研究人員都對(duì)新型程序設(shè)計(jì)語(yǔ)言做過(guò)測(cè)試。這是一個(gè)相當(dāng)活躍的研究領(lǐng)域[4]。
三、為所有學(xué)生鋪平“計(jì)算思維”的道路
為了讓校園中所有大學(xué)生都能夠接受“計(jì)算思維”,我們就要了解如何才能更好地教授計(jì)算學(xué)科這一類(lèi)課程。計(jì)算教育領(lǐng)域的研究人員應(yīng)該探討人類(lèi)是如何理解計(jì)算思維的,以及他們是如何改善這種理解的。計(jì)算教育是人機(jī)交互學(xué)的一個(gè)近親學(xué)科,因?yàn)槿藱C(jī)交互學(xué)的研究人員是探索人類(lèi)如何與計(jì)算機(jī)進(jìn)行交互活動(dòng)的,以及如何才能改善這種交互活動(dòng)。計(jì)算教育研究人員在國(guó)際計(jì)算教育研究會(huì)(ICER)以及像《計(jì)算機(jī)科學(xué)教育》和《計(jì)算教育資源期刊》這類(lèi)刊物中已經(jīng)占有了自己的一席之地。
計(jì)算教育研究從許多不同學(xué)科中汲取了知識(shí)和經(jīng)驗(yàn),用這些來(lái)改善計(jì)算教育現(xiàn)狀。一些社會(huì)學(xué)科學(xué)家都曾幫助我們了解學(xué)生們?cè)谖覀冋n堂上的體驗(yàn)(這些體驗(yàn)往往與我們作為教師所預(yù)期的效果有所不同),以及如何改變我們的課堂教學(xué),使之更加成功地滿足全體學(xué)生的需要。計(jì)算教育研究人員從教育學(xué)、社會(huì)學(xué)和心理學(xué)領(lǐng)域中尋找方法,以便使用這些方法來(lái)測(cè)量計(jì)算學(xué)科的學(xué)習(xí)效果和了解都有哪些因素在影響著這個(gè)學(xué)習(xí)過(guò)程。改進(jìn)了計(jì)算教育,我們就可以拓寬計(jì)算思維的普及面,增強(qiáng)計(jì)算思維的能力。當(dāng)我們能夠以有益于學(xué)生們各自學(xué)科發(fā)展的方式將程序設(shè)計(jì)和計(jì)算理論教給他們的時(shí)候,就能夠看到,當(dāng)計(jì)算學(xué)科得到全面普及后,它將以什么樣的勢(shì)頭推動(dòng)著整個(gè)學(xué)校的發(fā)展。專(zhuān)家們?cè)缭?0多年前就已經(jīng)預(yù)見(jiàn)到了這一前景。
參考文獻(xiàn):
[1]Perlis,A. The computer in the university[C].M.Greenberger,Ed.,Computers and the World of the Future[M].MIT Press,Cambridge,MA,1962,180–219.
[2]Miller,L.A. Natural language programming:Styles,strategies,and contrasts[J]. IBM Systems Journal,1981,29(2):184–215.
[3]Pane,J.F.,Ratanamahatana,C.,and Myers,B.A. Studying the language and structure in nonprogrammers solutions to programming problems[J].International Journal of Human-Computer Studies,2001,54:237–264.
[4]Sime,M.E.,Arblaster,A.T.,and Green,T.R.G. Structuring the programmers task[J] .Journal of Occupational Psychology,1977,50, 205–216.