摘要:計算思維是21世紀每個人必須具備的基本技能,而面向?qū)ο笏枷霃母旧暇褪峭耆嫌嬎闼季S規(guī)律的。從計算思維的特點入手,在深入研究面向?qū)ο笏枷氲幕A(chǔ)上,詳細討論了如何在面向?qū)ο笳n程中加強計算思維能力的方法,從而指出面向?qū)ο笏枷胱裱嬎闼季S的核心,二者是一致的,應(yīng)該把計算思維思想貫穿在講授的每一堂課中。
關(guān)鍵詞:計算思維;面向?qū)ο?;抽象;邏輯思維
作者簡介:馮洪玉(1977-),女,河南新鄉(xiāng)人,河南科技學(xué)院信息工程學(xué)院,講師;李艷翠(1982-),女,河南新鄉(xiāng)人,河南科技學(xué)院信息工程學(xué)院,助教。(河南新鄉(xiāng)453003)
基金項目:本文系2011河南省社科聯(lián)調(diào)研課題(課題編號:SKL-2011-1563)的研究成果。
中圖分類號:G642.0#8195;#8195;#8195;#8195;#8195;文獻標識碼:A#8195;#8195;#8195;#8195;#8195;文章編號:1007-0079(2012)13-0070-02
計算思維(Computational Thinking)是一種新的思維方法,它利用計算機科學(xué)的基礎(chǔ)概念去解決問題、進行系統(tǒng)設(shè)計并理解人類行為。計算思維一詞由周以真(Jeannette M.Wing)教授于2006年提出,Wing教授認為:“計算思維不僅僅屬于計算機科學(xué)家,它將和閱讀、寫作和算術(shù)一樣,是21世紀每個人必須具備的基本技能?!蹦壳?,計算思維受到了廣泛的重視。美國的卡內(nèi)基·梅隆大學(xué)早在2007年就建立了計算思維中心,目的是研究計算機科學(xué)與其他學(xué)科交叉研究的新方法。ACM在2008年公布的《CC2001計算機科學(xué)教學(xué)指導(dǎo)草案》中指出,應(yīng)該將計算思維作為計算機學(xué)科教學(xué)的重要組成部分。
作為計算機專業(yè)人才,他們不僅要具備扎實的計算機學(xué)科基礎(chǔ)知識和編程能力,也應(yīng)該具備擅長抽象和分解問題的計算思維。面向?qū)ο蟪绦蛟O(shè)計思想是目前主流的程序設(shè)計方法,其解決問題的基礎(chǔ)就是抽象,從具體事物中抽象出共性,它的三大特性就是封裝、派生和多態(tài),每一個特性都是計算思維的深刻體現(xiàn)。直接面對現(xiàn)實世界中的客觀事物進行軟件開發(fā)正是面向?qū)ο蠓椒ǖ幕驹瓌t,面向?qū)ο笏枷胧欠先藗兂R?guī)思維習(xí)慣的,故在教授“面向?qū)ο蟪绦蛟O(shè)計”課程時,更容易滲透和強化學(xué)生的計算思維。在講授該課程時,如何培養(yǎng)學(xué)生的計算思維,正是本文所討論和分析的重點問題。
一、計算思維的概念及其重要性
1.計算思維概念
計算思維的概念是美國卡內(nèi)基·梅隆大學(xué)的周以真教授提出的。他在計算機權(quán)威期刊《Communications of the ACM》雜志上指出:計算思維是一系列的思維活動,包括描述問題、系統(tǒng)設(shè)計和解決問題等等。從求解問題的層面上看,它與數(shù)學(xué)思維有著相似點,要通過抽象、約簡、遞歸、建模等方法先把復(fù)雜的問題描述清楚。然后通過編程讓機器實現(xiàn)全部操作。在計算機世界里,計算思維體現(xiàn)得淋漓盡致,比如一個遞歸算法就能很快地解決經(jīng)典的漢諾塔問題。利用并行處理思想就能很好地解決計算速度問題,利用冗余、糾錯思想就能將系統(tǒng)進行恢復(fù)。但是計算思維并不是計算機的思維,是人類賦予了計算機這種能力,然后利用計算機來為人類解決日常問題。
計算思維是解決問題的一個有力工具,而且它無處不在,這種能力就像閱讀、算數(shù)能力一樣。只有真正掌握了計算思維,它才能更好地為人類服務(wù),所以在每一堂課程中,都應(yīng)該注意對學(xué)生計算思維的培養(yǎng)。
2.計算思維的重要性
數(shù)學(xué)遵循的是嚴謹?shù)倪壿嬎季S,物理學(xué)體現(xiàn)的是驗證思維,其實計算機學(xué)科的誕生,更多地蘊含在其中的是計算思維。國防科技大學(xué)的朱亞宗教授也曾經(jīng)指出,計算思維應(yīng)歸類為三大科學(xué)思維之一(三大科學(xué)思維即:實驗思維、理論思維、計算思維)。因此,計算思維也是計算機教育屆的重要研究課題,被國際計算機界廣為關(guān)注。在國外,參與研究的機構(gòu)有卡內(nèi)基·梅隆大學(xué)、美國數(shù)學(xué)研究所(AIM)、美國計算機協(xié)會(ACM)等組織。我國教育機構(gòu)也在積極研究計算思維在教學(xué)中的創(chuàng)新作用。在2009年,我國工程院院士李國杰也提到,計算思維選擇了合適的方式來表述問題,建模并實現(xiàn)問題的解。計算思維和其他學(xué)科的交叉研究也正在不斷拓展和深入。例如納米計算、計算生物學(xué)、量子計算和計算博弈理論等新興研究領(lǐng)域的發(fā)展正在逐漸地改變化學(xué)、生物學(xué)、物理學(xué)和經(jīng)濟學(xué)領(lǐng)域研究的思考方式。
二、如何在“面向?qū)ο蟆闭n程中提高計算思維
如何培養(yǎng)計算思維是目前計算機教育界廣泛關(guān)心的問題。例如,現(xiàn)在不僅高等院校開設(shè)計算機課程,有些中學(xué)甚至小學(xué)也都有計算機課程,學(xué)生從小就接受計算思維的培養(yǎng)。因此就像數(shù)學(xué)和物理一樣,計算機也屬于基礎(chǔ)教育。在大學(xué)計算機專業(yè)的教學(xué)中,程序設(shè)計課程是一門必修課程,這門課中處處體現(xiàn)了計算思維。計算思維就是解決問題的一種思維方式,程序設(shè)計課程中從問題求解、數(shù)據(jù)定義、算法編程等地方都是培養(yǎng)計算思維的重要方式。面向?qū)ο蟮木幊趟枷霃钠渌枷氘a(chǎn)生到其解決問題的方式都體現(xiàn)著計算思維。下面將從三個方面說明如何在該專業(yè)課程中培養(yǎng)計算思維。
1.從面向?qū)ο笏枷虢嵌扰囵B(yǎng)計算思維
面向?qū)ο笏枷霃母旧暇褪峭耆嫌嬎闼季S規(guī)律的。計算思維是大腦思維過程或功能的計算模擬方法論。那么從思維角度看,計算思維注重什么呢?通過對人腦思維規(guī)律的認識,從而建立與人腦思維模式比較相似的計算方法正是計算思維的核心。軟件開發(fā)從本質(zhì)上講,也是對問題的一種認識并描述的過程。而面向?qū)ο笏枷氲母揪褪菑娜藗兊娜粘K季S習(xí)慣入手,將人們的日常表達方式應(yīng)用到軟件開發(fā)中,直接描述出現(xiàn)實世界中存在的客觀事物的狀態(tài)。因此面向?qū)ο笏枷胧管浖_發(fā)從過分專業(yè)化的方式回歸到了客觀世界,是一種返璞歸真的開發(fā)方式??梢娒嫦?qū)ο笏枷胱裱嬎闼季S的核心,二者是一致的,從開始求解問題時就注重對人腦思維規(guī)律的認識。它與面向過程編程有本質(zhì)的區(qū)別,面向過程是函數(shù)式的編程方式,在學(xué)生一開始接觸面向?qū)ο蠓椒〞r,就應(yīng)該把這個區(qū)別和概念清楚地灌輸給學(xué)生,這更有助于計算思維的形成。所以在學(xué)習(xí)面向?qū)ο笏枷霑r就是在學(xué)習(xí)計算思維。
那么什么是面向?qū)ο蟮姆椒兀克紫葘ν愋偷目陀^事物進行抽象,形成“類”。類中包含有靜態(tài)數(shù)據(jù)和動態(tài)行為,靜態(tài)數(shù)據(jù)主要描述事物的外觀、顏色、形態(tài)等特點;動態(tài)行為主要描述事物可以用來做什么?!邦悺边€設(shè)置了外部接口用來與外界通信聯(lián)系。但“類”是一個抽象概念,將“類”具體化就是對象。這也是面向?qū)ο筮@個稱呼的由來。比如,電器類可以包括電視機、洗衣機、電冰箱等等電器,其中一臺具體的洗衣機就是一個對象了,洗衣機的大小、重量、顏色、形狀等就是它的靜態(tài)數(shù)據(jù);那么洗衣機的洗衣服功能就可以看作是它的動態(tài)行為;洗衣機面板上的“洗滌”、“脫水”、“定時”等按鈕就是外部接口,只有有了這些外部接口,洗衣機才能與外部聯(lián)系,否則它就成為一個與世隔絕的黑匣子了。在講授該門課程時,首先就要把面向?qū)ο蟮母舅枷霛B透給學(xué)生,讓學(xué)生在潛移默化的學(xué)習(xí)過程中既掌握了軟件開發(fā)方法,也掌握了計算思維。
2.從抽象概念角度培養(yǎng)計算思維
計算思維的本質(zhì)是抽象和自動化。抽象,是人類認識問題的最基本手段之一。計算思維中的抽象表現(xiàn)在使用形式化語言和完全使用符號系統(tǒng)上。一般的程序由標識符、常數(shù)、變量、語句、函數(shù)等組成,其中變量的數(shù)據(jù)類型就是一個抽象特例?;镜臄?shù)據(jù)類型有整型、浮點型、字符型等。在面向?qū)ο笾杏幸粋€很重要的數(shù)據(jù)類型,就是“類”,而面向?qū)ο笳Z言也可以看作是“類”的語言。在現(xiàn)實世界中,“類”是對一組具有共同的屬性特征和行為特征的對象的抽象。例如“人類”,每個人的性格、愛好、職業(yè)和特長等各有不同,但是基本特征是相似的,都有相同的生理構(gòu)造,都有名字、性別、年齡、籍貫、身高、體重等等靜態(tài)行為,都能吃飯、說話、走路等動態(tài)行為,所以抽象出人類這個統(tǒng)稱。因此“類”就是從現(xiàn)實中抽象出來的一種數(shù)據(jù)類型。加強對“類”設(shè)計的練習(xí)和訓(xùn)練,可以培養(yǎng)學(xué)生的計算思維能力。
與數(shù)學(xué)思維相比,計算思維中的抽象顯得更豐富也更復(fù)雜。周教授指出:“像計算機科學(xué)家那樣去思維意味著遠遠不止能為計算機編程,還要求能夠在抽象的多個層次上思維?!薄邦悺北旧硎浅橄蟮模⑶摇邦悺边€具有繼承性和多態(tài)性。“派生”和“繼承”是計算思維的又一種體現(xiàn),萬事萬物都是有聯(lián)系的,不存在完全獨立的個體,繼承性體現(xiàn)了現(xiàn)實世界中事物的聯(lián)系。比如定義了“學(xué)生”這個父類后,在定義“大學(xué)生”這個類時為了避免重復(fù)定義,可以繼承“學(xué)生”類,然后再添加大學(xué)生的一些共同屬性和行為特征。這樣“大學(xué)生”類就具有了學(xué)生的所有特征,并具有自己的個性特征。多態(tài)性體現(xiàn)的是人腦的正常的邏輯思維,比如可以說“大學(xué)生是學(xué)生”,但說“學(xué)生是大學(xué)生”就是不正確的。計算機把這種人類的正常邏輯應(yīng)用到了面向?qū)ο笏枷胫?,就是多態(tài)性??梢娫诿嫦?qū)ο蟪绦蛟O(shè)計中,無處不體現(xiàn)計算思維的思想,所以在講授該課程時,不僅要講出一般的程序設(shè)計方法,更重要的是把面向?qū)ο蟮乃季S方式灌輸給學(xué)生。學(xué)習(xí)程序設(shè)計課程不是讓學(xué)生照抄程序,關(guān)鍵是讓學(xué)生理解這種編程方式的本質(zhì),會自己寫程序,達到學(xué)以致用的目的。
3.從邏輯思維角度培養(yǎng)計算思維
計算思維體現(xiàn)的是一種形式規(guī)整的思維。算法和程序的基本要求是算法確定性,算法的實現(xiàn)一定會使用定義好的符號系統(tǒng)進行問題描述和問題求解。算法確定性要求算法的每一步操作必須是明確定義的,沒有任何二義。所以,從算法要求的角度看,計算思維體現(xiàn)了嚴謹?shù)倪壿嬎季S。算法的確定性要求程序不能出現(xiàn)無限循環(huán),要求單入口單出口,尤其不能有二義性。那么二義性是如何產(chǎn)生的,又應(yīng)該如何解決,這是專業(yè)的計算機學(xué)生應(yīng)該了解和掌握的。在問題的產(chǎn)生和解決過程中可以更好地培養(yǎng)學(xué)生嚴密的邏輯思維。在面向?qū)ο笏枷胫?,有幾個需要注意的二義性問題。比如在多重繼承時,從最遠父類繼承的成員不能明確其繼承路線,會產(chǎn)生二義性,從而面向?qū)ο螽a(chǎn)生了虛基類來解決這個問題。面向?qū)ο笏枷胫械淖饔糜蛳薅ê吞摶惣疤摵瘮?shù)等等方法很好地解決了二義性問題。那么在講授二義性問題之前,可以首先發(fā)揮學(xué)生的主觀能動性,讓學(xué)生在調(diào)試程序的過程中去發(fā)現(xiàn)問題和解決問題。最難發(fā)現(xiàn)的程序問題往往是邏輯性錯誤,而不是語法錯誤。所以加強計算思維可以從算法角度入手,加強學(xué)生調(diào)試程序的能力,比如可以在程序中設(shè)置一些邏輯性錯誤讓學(xué)生來調(diào)試,從而提高學(xué)生的邏輯思維能力。
面向?qū)ο蟪绦蛟O(shè)計課程中處處體現(xiàn)著計算思維的思想,教師在講授這門課時,可以在每一堂課,每一個細節(jié)去滲透計算思維,讓計算思維融入到生活中,成為解決問題的有力工具。
三、結(jié)論
計算思維的培養(yǎng)是貫穿于整個教育過程中的,不是某一門課程的教學(xué)就能解決的問題。對于計算機專業(yè)學(xué)生來說,應(yīng)在各門專業(yè)課中強化計算思維的培養(yǎng)。目前,關(guān)于改革計算機基礎(chǔ)課程或計算機導(dǎo)論課程方面的研究頗多,主要是通過改革教學(xué)內(nèi)容、教學(xué)方法等來突出計算思維。面向?qū)ο蟪绦蛟O(shè)計課程中處處蘊含著計算思維,而討論面向?qū)ο笏枷牒陀嬎闼季S的聯(lián)系方面的研究還很鮮見。本文在研究了面向?qū)ο笏枷氲幕A(chǔ)上,提出可以從3個方面加強計算思維,即從面向?qū)ο笏枷氡旧怼⒊橄蟾拍罱嵌群瓦壿嬎季S角度培養(yǎng)學(xué)生的計算思維,從而使學(xué)生能夠更好地利用計算思維去處理問題和解決問題。
參考文獻:
[1]Wing J M.Computational Thinking[J].Communications of the ACM,2006,
49(3):33-35.
[2]任化敏,陳明.計算機應(yīng)用型人才的計算思維培養(yǎng)研究[J].計算機教育,2010,(5):61-63.
[3]Phillips P.Computational Thinking[J].A Problem-solving Tool for Every Classroom,2008.
[4]牟琴,譚良.計算思維的研究及其進展[J].計算機科學(xué),2011,38(3):
10-15.
[5]朱亞宗.論計算思維——計算思維的科學(xué)定位、基本原理及創(chuàng)新路徑[J].計算機科學(xué),2009,36(4):53-55.
[6]陳杰華.程序設(shè)計課程中強化計算思維訓(xùn)練的實踐探索[J].計算機教育,2009,(20):84-85.
(責(zé)任編輯:宋秀麗)