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