肖亮英
摘 要:信息時代的發展使得編程成為核心能力,計算機編程從娃娃抓起,不只是對孩子負責,更是對未來負責。從為什么學編程、編程學什么、怎樣學編程三個維度論述“計算機編程從娃娃抓起”這一主題的必要性和可實施性,旨在呼吁中小學信息技術教育加強對學生編程能力和計算思維的培養。
關鍵詞:編程;計算思維;素養
在2015年的“兩會”上,浙江省科技廳廳長周國輝提出了議案:“編程從娃娃抓起,這是對未來負責。”他認為,當下是一個利用互聯網高速發展的數字世界,發展數字世界的核心能力就是編程和數據。編程、數據科學應該從中小學青少年教育抓起,讓代碼和數據成為我國所有青少年兒童的另一種語言。“三十年前,小平同志提出‘計算機要從娃娃抓起,現在的孩子玩計算機都溜得很,但發展到現在這個階段,只會基本的計算機操作已經不夠了,需要更進一步:編程。”周廳長如是說。
無獨有偶,2015年2月,美國總統奧巴馬公開表示,如果美國希望繼續在全球科技創新中保持領先,所有人都應更早地學習如何編程。“編程應當與ABC字母表和顏色同時得到教學”“編程教學如同識字一樣,應成為基礎教育的一部分。”奧巴馬本人更是身體力行,成為首位會編程的總統。
由以上兩例可見,隨著時代的發展及信息技術給社會生活帶來的影響和改變,人們對計算機編程的教育越來越重視。筆者長期執教小學階段的信息技術課程,對培養學生計算思維及程序素養頗有感觸,在此就小學階段的編程教育淺談幾點認識,以起拋磚引玉之效。
一、為什么要學編程
其實,在如今的社會,我們的孩子為什么要學編程,答案是顯而易見的,從國家層面講,未來信息產業的比重將逐步增加,如何搶占下一個互聯網的制高點,核心在IT人員的培養。當然,這是宏觀方面的意義,筆者認為,學編程對于個人的認知和素養的培養還有重要的作用。
1.學編程才能更好地認識世界
世界是數字的,各種信息化產品越來越緊密地將我們的生活聯系起來,物聯網、云技術、大數據,不斷地將我們的世界數字化,各行各業更不可缺少地跟計算機程序相關聯。要推動時代的發展,需要有編程思維,要洞悉時代發展,也需要編程思維,在當前時代中競爭與發展,更不可缺少編程思維。
編程是一種自動化理念,它的思想及解決問題的方法被各個學科借鑒和拓展。生物學借鑒編程對信息的處理,發展出生物信息學,甚至將DNA的配對看作編碼問題來破解。心理學從計算機的運行機制發展出認知心理學,某種程度上將人的認知過程類比為計算機對信息讀取、存儲、處理和輸出的過程。在探討宇宙終極問題上,編程思維同樣起到了啟示作用。在斯蒂芬·沃爾夫勒姆的一篇專訪《宇宙的本質是計算》中,這位傳奇科學家說:“我們的世界就是計算,就是一套簡單的規則生成的復雜現象……很多時候人們說的‘隨機性……只是證明你還沒為這個系統建立完整的模型而已。”假如模型都有了,那么就可以在計算機中模擬宇宙的一切。如果計算機的速度足夠快,快得超過宇宙的運算速度,那么甚至能計算出未來會發生什么,也就是能預測未來。
2.學編程,從科技的消費者轉變為創造者
如今,我們的孩子生活在數字化時代,使用著各類智能產品和互聯網應用,但他們大多數是科技的消費者,而不是創造者。他們被稱為“數字原住民”,但是對科技并不熟悉,他們是經驗豐富的使用者但并不是創造者,就像會閱讀不會寫作一樣。所以需要教學生計算機,讓他們學會充分使用數字時代的科技。
同時,編程為創造力和創造性表達開辟了新途徑。現在的編程學習,可能更像一種高級的樂高積木,學生可以很簡便地了解其規則而創作出豐富的產品。Scratch的創作者在瀏覽Scratch在線網站時,發現很多8~16歲孩子的作品,感慨道:“隨著孩子們創造和分享自己的Scratch作品,他們正在把自己鍛煉成創想者,并同時為這個呼喚創造力的時代做好準備。”是的,在今天瞬息萬變的世界里,沒有什么比創造力更重要。幫助孩子們成長為具有創造力的思考者,那就是給予他們創造的機會。我們不能僅僅讓他們在電子產品上打游戲、和朋友聊天、上網、搜索信息等等,更多的是讓他們創造出自己的游戲、自己的程序。
3.編程可以開發學生的邏輯思維能力和問題解決能力,更好地塑造自己的素養
學生想通過計算機解決某個問題或者實現自己的想法,這并不是瞬間就能完成的事,計算機也并不是智能得通過溝通就能執行命令。在這一過程中,學生需要將自己的問題轉換成數學模型,比如想讓某個對象在程序上運動的本質是讓對象每間隔一定時間坐標位置發生變化,將模型通過計算機語言描述出來,進而上機實踐。從建模到編碼(coding),需要學生有嚴謹的邏輯思維能力,思慮縝密,稍有不慎,程序將有漏洞。而編碼過程,也是提高學生邏輯思維能力和問題解決能力的過程。
二、學編程是學什么
1.學編程不是人人成為程序員
我們將編程看作一種新的素養,就像寫字一樣。我們在人生的任何階段都會用到寫字這項技能:無論是和朋友聯系,列一張購物清單,還是跟日記說心里話。而寫作本身也為人們開啟了新的思維方式。在寫作的時候,我們學會組織和提煉語言,并反思自己的想法。“寫字”對所有人都很重要,而不僅僅是對那些有志成為專業作家的人。
編程也是一樣的道理。編程并不僅僅對未來的程序員或計算機科學家才有用。在學習編程的過程中,我們學會了許多其他的東西,比如學習解決問題的策略,學會設計項目,并交流想法。這些技能對所有人都有用,不管他多大年齡、有什么興趣、做什么工作,但這樣并不意味著人人都成為程序員。
2.學編程不一定是學編碼
學編程(programming)并不是打代碼(coding),不一定要用C、C++,Java等語言,不一定只是用命令形式跟計算機交互。過去數十年計算機科學的發展已經使編程的壁壘大幅度降低,以前可能只是科學家做出的高大上程序,今天一個十幾歲的孩子可以在幾分鐘完成。隨著技術進步,編程技能已經可以被很多人自然掌握,不用進行系統學習或者到專業學校深造。我們關注的是需要具備何種能力去更好更有效地編程,也就是編程背后基本素養的培養,這就是“計算思維”。
“計算思維(Computational thinking)”,這個由時任美國CMU計算機科學系主任的周以真(Jeannette M. Wing)教授在2006提出的概念和一系列計劃,試圖使所有人能夠像計算機科學家一樣進行思考,讓計算思維成為新人類的基本能力。世界各國包括美國、中國等的教育部門正在有計劃地推動這一理念的實施。
計算思維實際上是人類站在機器角度的“感同身受”,從機器角度思考去制造更有效率的機器,同時更有效地指導我們的日常決策。抽象和自動化是目前業界普遍共識的計算思維本質,對于計算機科學專業的學生來說,這兩者的威力不用贅述,實踐證明其對各領域創新作用巨大。計算思維里的層次抽象、分而治之、遞歸、并行和并發,以及經典數據結構(數組、棧、集合、樹等)和機制(流水線、緩沖、API等),到計算可行性和復雜性等,都無一不對我們的日常生活和工作產生巨大影響。我們需要的是在未來人人都具備計算思維,并用這個武器來指導我們,不僅是編程,而更多的是提升工作和生活效率,甚至制訂人生職業規劃。
3.學編程具體學什么
通過計算機編程,學生應該學習信息和計算的原則,數字系統是如何工作的,以及如何通過程序將這些知識用于實踐。基于這些知識和理解,學生能夠進一步使用信息技術來創建程序、系統和一系列的內容。同時,計算機信息處理技術能夠確保學生獲得數字素養,能夠通過信息和傳播技術使用、表達他們自己以及形成自己的觀點。具體來說,學生應該能夠理解和使用計算機科學的基本原則和概念,包括抽象、邏輯、算法和數據表示法,能夠從計算的方面去分析問題,并且獲得為了解決這些問題而重復編寫計算機程序的經驗,包含以下六點:
(1)理解什么是算法,算法是如何作為程序在電子設備上執行的;程序是如何在精確、清楚的指令下執行的;創建和調試簡單的程序,運用邏輯推理來預測簡單程序的行為。
(2)設計、編寫和調試能完成某一特定目的的程序,包括控制和模擬物理系統,通過將問題分解成更小的部分來解決問題;在程序中使用順序、選擇和循環結構,使用變量和各種形式的輸入和輸出;利用過程或函數的模塊化進行程序的設計和開發。
(3)理解一些關鍵算法,這些算法反映了計算思維(例如,排序和搜索);使用邏輯推理去比較針對同一問題的不同算法的實用性。
(4)了解簡單的布爾邏輯(例如,AND,OR 和 NOT)和它在電路和編程方面的某些使用;理解如何用二進制表示數據,并能夠對二進制數進行簡單操作(例如,二進制的加法運算,以及二進制和十進制的轉換)。
(5)了解在一個計算機系統內部指令是如何被存儲和執行的;了解各種類型的數據(包括文本、聲音和圖像),如果用二進制來表示,是如何呈現的,又如何對他們進行數字化操作。
(6)了解構成計算機系統的硬件和軟件的組件,了解它們之間如何互相溝通,以及他們又是如何與其他系統進行溝通的。
三、怎么學編程
很多人都認為編程很難學,學生不易接收,不易消化。如上所述,學編程的核心是培養學生的計算思維,編碼(code)只是學編程的一種方式,卻不是唯一的方式。筆者認為可以從以下方面開展編程課程的學習。
1.在信息技術課程中滲透計算思維
當前的信息技術課程注重軟件應用的培訓,教師往往將過多關注點放在計算機常識性、操作性的目標上,甚至強調某個軟件選項在哪一個菜單里面,畫圖中某個工具的作用,等等。筆者認為,軟件的學習只是“技”,隨著信息技術的發展,軟件的使用將會越來越友好,基本可以不學而會,而信息技術課程更應該強調“道”的學習,即原理性的知識,思維層面的培養。筆者曾設計過小學Excel中關于排序知識點的課程,筆者先與學生玩一個游戲,出示五張撲克牌,請一個學生對五張撲克牌排序,他不能看到撲克牌的點數,但他能有兩個操作:(1)詢問同學,對于給出的兩張撲克牌誰大誰小;(2)交換兩張撲克牌的位置。游戲挑戰學生誰能用最少的交換次數給撲克牌排好序。通過這個游戲,學生自然而然地學習了計算機中冒泡排序、選擇排序、插入排序等,不但啟發了學生的思維,也讓學生認識到計算機背后的工作原理。在對排序原理理解的基礎上,接著講Excel中的排序操作,水到渠成。
關于以游戲或者活動的方式講解計算機原理,國外做了很多探究,其中“Computer Science Unplugged(不插電的計算機科學)”是面向世界范圍的信息科學普及項目,它透過一些既有趣又容易的活動來達到學習計算機科學的目的。這些活動是專門為青少年學習者所設計的。在這些活動中,我們可以學習到計算機運作的一些基本原理,有趣的是,你根本不必用到任何實體的計算機。隨著該項目在世界范圍內的普及,具有各國特色的新穎案例不斷補充進來。這種“玩中學,做中學(learning by playing,learning by doing)”的信息技術學習方法目前在美國、新西蘭、意大利、日本、韓國已產生廣泛影響。
2.開展豐富有趣的編程活動
如今,編程軟件的開發可以不再抽象、繁瑣,對于小學生的學習,我們已經有很多很好的工具來啟發學生的學習,甚至這些軟件就像玩樂高積木一樣,只需要拖拉一些板塊就可以實現了,Scratch無疑是其中的佼佼者。Scratch是一款由麻省理工學院(MIT)設計開發的一款面向少年兒童的簡易編程工具,使用者可以不認識英文單詞,也可以不會使用鍵盤。構成程序的命令和參數通過積木形狀的模塊來實現,用鼠標拖動模塊到程序編輯欄就可以了。在學習的過程中,每一種語言都提供了圖形化的編程環境,不僅是用于教會孩子們一些編程的概念,而且是包含物理和數學知識的模擬及講述故事的一些練習。此外,App Inventor也是一個時尚的選擇。App Inventor是一款谷歌公司開發的手機編程軟件,后面由麻省理工學院托管,與Scratch類似,App Inventor也是通過積木形狀的模塊來實現編程,可以在線生成apk文件在手機中運行,簡單易學,利于培養學生的計算思維。當然,像code.org網站,同樣提供了豐富有趣的在線編程學習資源,學生在簡單的互動中就可以創造出極具創意的作品。
在如此豐富的編程資源面前,編程難、學生接受不了的排斥理由將無地立足,我們應該積極跟隨時代發展,讓孩子們不僅僅是從小玩電腦,更是從小學電腦,將電腦當作創作的工具。所幸,筆者所在的廣州地區頗為積極地在推進小學編程活動,已經將Scratch軟件列入小學信息技術教材,也開展小學虛擬機器人編程比賽活動,極大地激發了學生探索學習的精神。
參考文獻:
[1]周以真.計算思維[J].新觀點新學說學術沙龍文集7:教育創新與創新人才培養,2007:111-116.
[2]何年.電腦編程走進中小學[J].教育,2015(09).
[3]胡忠平.基于計算思維的Scratch課堂教學策略研究[J].浙江教育技術,2015(01).
編輯 趙飛飛