衛(wèi)文亮
摘要:“計(jì)算思維”這一說法最早是由周以真教授在2006年提出,其在美國權(quán)威雜志《communication ofthe ACM》發(fā)表了一篇名為“computational thinking”的論文,“computational thinking”即被翻譯為“計(jì)算思維”,論文中詳細(xì)闡述了計(jì)算思維的概念和原理,并由此引起了全世界專家學(xué)者的研究興趣,積極推動(dòng)“計(jì)算思維”進(jìn)入教育領(lǐng)域,不僅高等教育中推廣和普及,更是滲透進(jìn)基礎(chǔ)教育階段,倒逼著基礎(chǔ)教育進(jìn)行改革,以培養(yǎng)學(xué)生適應(yīng)現(xiàn)代社會(huì)需求的計(jì)算思維能力。
關(guān)鍵詞:計(jì)算思維;編程;案例教學(xué)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)30-0183-02
國外很多國家在教育領(lǐng)域推動(dòng)和滲透計(jì)算思維的動(dòng)作是如火如荼,比如:美國在2007年即由“21世紀(jì)技能合作組織”研究制定了“21世紀(jì)技能框架”,此框架詳盡地描述了培養(yǎng)學(xué)生計(jì)算思維能力的重要性,緊接著2011年,美國計(jì)算機(jī)科學(xué)教師協(xié)會(huì)又發(fā)布了《美國中小學(xué)計(jì)算機(jī)科學(xué)標(biāo)準(zhǔn)》,在這套標(biāo)準(zhǔn)中,提出了比較完整的計(jì)算機(jī)教育的框架,即在日常的教學(xué)中將計(jì)算思維和編程等內(nèi)容進(jìn)行融合,以此來開拓學(xué)生的思維視野;另外,新西蘭、澳大利亞和英國等歐美國家也分別幾乎差不多時(shí)間公布了本國的有關(guān)培養(yǎng)學(xué)生計(jì)算思維能力的計(jì)劃或文件。
1概念界定
所謂計(jì)算思維,即計(jì)算思維繼承了思維的一般特征,即具有抽象性,是一種人腦的思維方式,而不是計(jì)算機(jī)的思維。只不過是人類借助計(jì)算機(jī)的技術(shù)和方法去解決問題,從而讓人類思維通過計(jì)算機(jī)實(shí)現(xiàn)“自動(dòng)化”和更具“抽象化”。
一般來說,中學(xué)生的思維較之小學(xué)階段已經(jīng)有很大的發(fā)展,特別體現(xiàn)在邏輯思維能力方面,在解決問題的過程中更傾向于抽象的演繹推理和歸納,善于發(fā)現(xiàn)規(guī)律,擁有了很大的靈活性和開闊性。
2應(yīng)用研究
以下兩個(gè)案例或許可以幫助我們進(jìn)一步窺探計(jì)算思維的本質(zhì)。
【案例一】解一元二次方程
我們知道,計(jì)算思維實(shí)際上所反映的是利用計(jì)算機(jī)技術(shù)解決實(shí)際問題的思維方法。但是,假如對(duì)利用計(jì)算機(jī)技術(shù)解決問題的認(rèn)知出現(xiàn)誤差,那么肯定是不可能解決問題的。例如,有一位編程班的同學(xué)在剛學(xué)了兩節(jié)課C++語言的時(shí)候,想檢驗(yàn)下自己的編程水平,于是找來一道求一元二次方程8x2+5x-2=0的根的題目。用C++語言寫出如下的程序段:
float x;//定義單精度變量
8*x*x+5*x-2=0;//給出方程式,讓計(jì)算機(jī)求解
cout<
結(jié)果上機(jī)一調(diào)試,發(fā)現(xiàn)一大堆的錯(cuò)誤,當(dāng)然根本不可能得到想要的答案。這位同學(xué)卻很納悶的是:計(jì)算機(jī)不是可以幫助人去解決問題的嗎?為何如此簡單的一個(gè)方程都不能求解?這類困惑可能很多同學(xué)在剛開始學(xué)習(xí)的時(shí)候都會(huì)有。問題出現(xiàn)的主要原因是,沒有將普通的數(shù)學(xué)問題抽象轉(zhuǎn)化成信息世界的問題,而導(dǎo)致不能用計(jì)算機(jī)進(jìn)行求解。因?yàn)榇_切地說,計(jì)算機(jī)只會(huì)幫我們“計(jì)算”,至于如何計(jì)算程序員的事情。就本例而言,我們必須得告訴計(jì)算機(jī)如何逐步地去求解方程,然后計(jì)算機(jī)才會(huì)按照我們的要求幫我們一步一步地去計(jì)算。理解了這樣的“計(jì)算思維”,我們才能寫出下面的程序段:
floatxl,x2,d;/定義變量
d=5*5-4*8*(-2);//通過d的值可以判定該方程的根的情況
x1=(-5+sqrt(d))/(2*8);//求根公式
x2=(一5一sqrt(d))/(2*8);//求根公式
printf(“%f,%f” x1,x2);//輸出結(jié)果
跟此案例同樣的還有“雞兔同籠”問題
【案例二】“雞兔同籠”問題
今有雉兔同籠,上有三十五頭,
下有九十四足,問雉兔各幾何?——《孫子算經(jīng)》
問題描述:雞兔同籠,頭共35,足共94,雞兔各幾只?
解法1:(兔的腳數(shù)×總只數(shù)一總腳數(shù))÷(兔的腳數(shù)一雞的腳數(shù))=雞的只數(shù)
總只數(shù)-雞的只數(shù)=兔的只數(shù)
解法2:(總腳數(shù)-雞的腳數(shù)×總只數(shù))÷(兔的腳數(shù)-雞的腳數(shù))=兔的只數(shù)
總只數(shù)-兔的只數(shù)=雞的只數(shù)
解法3:總腳數(shù)÷2-總頭數(shù)=兔的只數(shù)
總只數(shù)-兔的只數(shù)=雞的只數(shù)
關(guān)于此題的求解,數(shù)學(xué)方法很簡單。由此導(dǎo)致有的同學(xué)出現(xiàn)疏忽,輕了敵。(因“雞兔同籠”是小學(xué)數(shù)學(xué)題,所以采用小學(xué)的scralch軟件編程)
由圖1可以看出,學(xué)生并沒有理解計(jì)算機(jī)是怎么計(jì)算的。由于沒有“計(jì)算思維”,導(dǎo)致編程出現(xiàn)了偏差。如果有計(jì)算思維,學(xué)生們就可以畫出如下的流程圖(如圖2)或者用能用自然語言描述出問題,后續(xù)的程序編寫出來也就不是難事了。
S1:輸入雞和兔的總數(shù)量M
S2:輸入雞兔腿的總數(shù)量N
通過以上兩個(gè)例子,我們可以看出計(jì)算機(jī)并不是可以完全替代人腦去思維,如果人都不知道怎么解決問題,計(jì)算機(jī)就更無從知曉了。某種意義上說,計(jì)算機(jī)只是協(xié)助人去計(jì)算,特別適合數(shù)量級(jí)很大的計(jì)算,而且算的速度非??欤虼?,在數(shù)量和速度方面,計(jì)算機(jī)確實(shí)是可以勝人一籌的。但是,計(jì)算機(jī)永遠(yuǎn)都是在人腦的指揮下工作的!
3小結(jié)
那么,中學(xué)生的計(jì)算思維能力一定要通過編程來培養(yǎng)嗎?答案當(dāng)然是否定的。我們作為一線的教育工作者必須明白兩點(diǎn):一、編程只是培養(yǎng)學(xué)生計(jì)算思維的其中一個(gè)方法,信息技術(shù)也只是培養(yǎng)學(xué)生計(jì)算思維能力的學(xué)科之一,語言、歷史、數(shù)學(xué)等學(xué)科和知識(shí)都可以培養(yǎng)不學(xué)生的計(jì)算思維;二、信息學(xué)科常常在編程課中滲透培養(yǎng)學(xué)生的計(jì)算思維,但并不代表只有編程課可以培養(yǎng),而且不能不顧及不同學(xué)生的認(rèn)知體驗(yàn),強(qiáng)行把他們往程序員方面培養(yǎng)。計(jì)算思維的培養(yǎng),從小的方面說,對(duì)學(xué)生的成長和發(fā)展來說意義重大,從大的方面說,對(duì)國家和民族的未來更具有深遠(yuǎn)的影響。如果說,科技是第一生產(chǎn)力,那么人才則是科技的第一要素。因此,我們需要培養(yǎng)學(xué)生思維方面的創(chuàng)新能力和解決問題的能力,提升他們的核心素養(yǎng)。