江蘇省南通市通州區(qū)教師發(fā)展中心 朱 艷
教育是什么?《說文解字》中對“教育”的解釋是:“教,上所行,下所效也”,“育,養(yǎng)子使作善也”。比對教育的概念,編程教學好像只能算是茫?!敖獭焙5囊粭l溪流。有哲學家說,“存在,即合理”。那么編程教學對初中學生的教育意義在哪里呢?筆者在組織江蘇省信息學奧林匹克競賽初賽及復賽這項工作中,在對部分初中參賽選手的數(shù)學成績進行持續(xù)觀測后,驚喜地發(fā)現(xiàn)編程這一“小眾”的技能學習會給那些學生打開一扇門,開啟一個全新的世界,助他們自信地走向自主學習之路。究其根本,我認為還是編程提升了他們的思維品質,量變引起了質變。
百度百科上是這樣描述思維品質的:“人們在思維活動過程中表現(xiàn)于不同方面的特點及其差異,就構成其思維品質。”思維的主要品質有很多,比如:思維的邏輯性、廣闊性、深刻性、獨立性……個人認為編程教學會對學生思維的邏輯性、創(chuàng)造性、預見性、獨立性產生較為深遠的影響。
我們經(jīng)常用“靈”這個字來評價一個聰慧的孩子,這樣的孩子顯著的特征是很會隨機應變、見“招”拆“招”,根據(jù)不同的情境解決問題。世間有萬事萬物,但是這萬事萬物之間皆有關聯(lián),如何關聯(lián)?邏輯是橋梁。初中階段是編程學習的初級階段,學生學習了程序的三種基本結構:順序結構、選擇結構、循環(huán)結構。順序結構是依據(jù)問題的求解的關鍵值來安排進程,比如為了最終解決問題,需要先做什么后做什么;選擇結構則是用來賦予計算機以“決策”的能力,就需思考如何設計好條件表達式,讓計算機有更多的“選擇”權,更具智能;至于循環(huán),則更需要學生具備火眼金睛,他們需要從題干中提煉出諸如:循環(huán)多少次結束?循環(huán)執(zhí)行什么?除了循環(huán)設計外,還需要綜合考慮循環(huán)之前的準備工作,以及循環(huán)之后的結束工作。事情的發(fā)展順序,解決問題的方法及步驟,學生都需全盤考慮。邏輯在哪里?個人認為藏在問題分析的過程中,藏在解決問題的運籌帷幄中。編程解決問題,問題不再是平面的文字,它們被學生轉化為各種立體的線索,最終他們用計算機語言去表達,去實現(xiàn)。
何為創(chuàng)造力?創(chuàng)造力,是人類特有的一種綜合性本領。創(chuàng)造力是指產生新思想,發(fā)現(xiàn)和創(chuàng)造新事物的能力。學編程的學生們都有一股子不服輸?shù)膭艃骸M瑯咏鉀Q一道題,比如搜索類的經(jīng)典問題迷宮,有的學生用深搜去解決,有的學生有寬搜解決。用寬搜算法解決的,又有學生用STL去寫代碼,有學生用數(shù)組模擬隊列去寫代碼。洛谷上有各種題解,想要“學習”他人的代碼是特別容易的事。但是,他們更樂于去寫有自己的思想與方法的代碼去解決問題。他們更享受自己原創(chuàng)的題解,通過洛谷管理員的審核,與更多志同道合的人去探究、去碰撞、去創(chuàng)造。他們用計算機“聽”得懂的語言,去征服計算機,讓計算機幫助他們解決看起來“紛繁復雜”的問題??萍紡妵?,在人工智能高速發(fā)展的今天,這群孩子步伐堅定地朝著遠方走去。他們深知,代碼是有靈魂的,COPY的代碼是沒有生命力的。通過自己的代碼去改變世界,是他們在編程解決若干題后被喚醒的夢想。實踐,讓夢想不再遙不可及。
預見性是指一個人對事物發(fā)展的預判和前瞻。一個人預見性的強弱往往決定著一個人的能力大小。學習編程會提升學生的預見性思維能力?在我關注“教師們怎么教,學生怎么學”的過程中,發(fā)現(xiàn)了一個有趣的算法:遞推算法,這個算法讓我聯(lián)想到預見性這三個字。遞推算法是根據(jù)事物發(fā)展的規(guī)律,找到其遞推關系式,然后編程解決相關問題。比如爬樓梯問題、兔子繁殖問題,經(jīng)過推理發(fā)現(xiàn)問題的本質是斐波拉契數(shù)列規(guī)律相似。
在這一節(jié)全區(qū)初中教學公開課上,教師精心設計教學流程,學生推導發(fā)現(xiàn),最終發(fā)出這樣的感悟:大自然太神奇、人類太偉大了,推理可以發(fā)現(xiàn)規(guī)律,但規(guī)律并不局限于某一事物發(fā)展規(guī)律。由此發(fā)散出去:人所生活的物質的世界,規(guī)律、定理也一定不僅局限于某一事物。比如能量守恒定理,有得必有失;比如月滿則虧,水滿則溢,房價股價漲跌皆有其規(guī)律。有專家說計算機科學的盡頭就是哲學,經(jīng)典算法是計算機科學家智慧的結晶,系統(tǒng)的算法學習必然會給學生們帶來更多的頭腦風暴,讓他們對這個世界有更高層次的認識。
經(jīng)研究發(fā)現(xiàn):在學科學習中學得輕松且高效的學生都有這樣的特點:他們善于獨立地發(fā)現(xiàn)、分析和解決問題。他們在課堂上,眼里有光,胸中有竹,他們的思維是具有很強的獨立性的。具有獨立性思維品質的學生,他們在學科學習上游刃有余。為什么說編程可以提升學生的獨立性思維能力呢?比如,學生用編程解決一道這樣的數(shù)學題:
“有一次,小魚要從A 處沿直線往右游,小魚第一秒游7 米,從第二秒開始每秒游的距離只有前一秒的98%。有個極其邪惡的獵人在距離A 處右邊S米的地方,安裝了一個隱蔽的探測器,探測器左右X米之內是探測范圍。一旦小魚進入探測器的范圍,探測器就會在這一秒結束時把信號傳遞給那個獵人,獵人在一秒后就要對探測器范圍內的水域進行抓捕,這時如果小魚還在這范圍內就危險了。也就是說小魚一旦進入探測器范圍,如果能在下1 秒的時間內馬上游出探測器的范圍,還是安全的?,F(xiàn)在給出S 和X 的數(shù)據(jù),請你判斷小魚會不會有危險,如果有危險輸出Y,沒有危險輸出N。”在編程之前,他們得首先從題目中提煉關鍵字,找出解決問題的核心。在這個階段,平面的文字并不利于分析問題,學生們會使用數(shù)學中常用的辦法——畫圖。
圖畫出來之后,才能更快捷地找出解決問題的關鍵:小魚花了多少時間游至探測器邊界(速度會衰減),進了區(qū)域之后,小魚1 秒游行的路程是否能超出探測器區(qū)域,如果未能沖出探測器區(qū)域小魚即是有危險的,否則就是安全的。

有了解題思路,接下來就是思考如何用程序去實現(xiàn),在程序編制中,學生需要考慮抽象幾個變量,需要用什么程序結構……程序編制出來,還需要進行調試,調試成功后,在線評測測試是不是對任何給定的S 與X,都能得到正確的解。如果未能,還需思考是否在某些細節(jié)上未能考慮周全,比如本題中探測器所在的位置在距離A點7米以內,小魚是絕對有危險的。這是一道模擬算法題,學生在學完順序結構、選擇結構、循環(huán)結構后可完成。洛谷此類題萬千,教師不可能一一講解,學生們要體驗Accept的成就感,只能通過學習借鑒教師的解題方法,獨立思考,勤于實踐。積跬步而至千里,方法、知識融會貫通后,遷移將是自然發(fā)生的。筆者對我區(qū)某初中參加信息學奧林匹克競賽的二十多個學生的數(shù)學成績進行持續(xù)觀測后發(fā)現(xiàn),這些學生數(shù)學成績提高率比沒有參加競賽的學生的提高率高出20%。
任何一門學科,對學生的影響都是“潤物細無聲”的,不是一蹴而就的。教師悉心地教,學生潛心地悟,才能感受程序的魅力,才能真正愛上編程,從而提升個人的思維品質。編程教與學從來就不是一件功利的事,而是教師與學生皆漸入佳境的事。唯有熱愛,才能發(fā)現(xiàn)其間的樂趣,體會其中的益處。作為通州區(qū)教師發(fā)展中心的信息技術研訓員,我將竭盡所能地培養(yǎng)更多熱愛編程教學、專注于編程教學研究的教師,進而為更多的學生打開代碼世界的大門,幫助他們找到開啟提升思維品質的鑰匙。