林暉等
編程真是社會“團寵”,適合所有學生嗎?美國麻省理工學院的教授米切爾·雷斯尼克(Mitchel Resnick)這樣說:“當你學會編程,你會開始思考世界上的一切過程?!蔽以踢^高中、初中、小學學生學習編程,在長期的教學過程中,我發現好的編程學習因人而異,也有著相當大的年齡差距。
對于小學生來說,內容主要側重于不同年齡層次的體驗。8歲以上的孩子學習編程具有明顯的具象性,他們要通過形象的模塊進行編程,完成互動故事。當模塊“咬合”到一起后,人物可以移動、跳躍、舞蹈、唱歌等,簡潔的過程滲透入最初的程序概念。對于初中生而言,讓學生在寫代碼中學習思考世界。在具備了一定的數理知識后,初中生已經具備一定的邏輯思維能力,此時應該注重代碼和算法的學習,而不僅僅是去體驗實物的運動過程。對于高中生而言,我會更側重于讓其了解程序的源代碼,通過對計算機的核心過程進行解析,使其了解計算機,如何去精準地編寫適宜的生活化的程序。
縱觀時下的宣傳,有機構鼓吹幼兒園不學編程,孩子就輸在了起跑線上;有人認為編程的益處可以無敵化,甚至代替數學、科學等學科;有的機構混淆編程、機器人、人工智能的概念,讓家長無所適從。而筆者據自己的教學經驗認為,遠非如此。
編程低齡化是否可行?編程吸引人之處在于,它需要具有分析能力、解決問題的能力和創造力,這些是基本的能力要求,所以學習者必須具備一定的基礎知識,而過于低齡化的編程學習,混淆了程序和一般結構語言的概念,誤導了部分學生。所以,低齡化的編程教學需要三思而后行。按個按鍵,小車就跑兩步的操作,絕不是真正意義上的編程。
編程全民化是否能行?編程教學是需要基礎門檻的,也并非所有的學生都可以成為程序員,或在編程競賽中獲獎。部分邏輯思維能力超強的學生,可以依據自身的能力進行有目的的深入學習,而那些相對不擅長此類思維的學生,可以選擇適宜難度的語言進行學習。如果非要讓文科生去找程序的Bug,無異于畫虎不成反類犬。
編程綜合化是否該推行?編程是訓練孩子解決問題的方式之一,但絕非全部。條條大路通羅馬,解決問題的策略是多層次、多角度的,不能給學生灌輸編程唯一論,從而神化了編程的初衷。編程無法承載我們對人工智能新世界的所有希望。無論是創客教育、STEM教育,還是編程教育,都與語文、數學、外語等學科的學習是一樣的。說到創造力和邏輯思維的培養,寫作文、繪畫、譜曲、解數學題一樣能培養創造力和邏輯思維能力,并不單單只有編程能實現。所以,應該給編程學習降降溫,只有有了一定的各學科知識后,才能學好編程。
目前比較流行的編程語言有Scratch、Python、VB、C++、Java等,筆者依據多年的編程教學經驗,提出一些適宜的編程語言供大家參考:
Scratch是一款適合8~14周歲的孩子的編程工具。它無需使用鍵盤,用鼠標拖動指令模塊到腳本區就能編程。程序模塊化,命令和參數通過積木形狀的模塊來實現。Scratch讓編程和說母語一樣簡單,它是目前最佳編程入門語言。
10歲以上的孩子,如具備較好的數學基礎,可以嘗試學習Python。它的語言簡潔易懂,適合初學者使用。目前用Python的研究機構日益增多,一些知名大學已經采用Python來教授程序設計課程。
對于12歲上的學生來說,Visual Basic是常見的語言。VB可以輕易地使用DAO、RDO、ADO連接數據庫,輕松地創建Active X控件,用于高效生成類型安全和面向對象的應用程序。
對于擅長邏輯思維的學生而言,C++是良好的選擇。它是C語言的繼承,是許多程序員必備的編程工具,也是NOIP、IOI競賽使用的語言。C++是信息學奧賽的競賽語言,對升學有一定的益處。
對于編程發燒友來說,Java是一門面向對象編程語言,它具有C++語言的優點,同時摒棄了C++里難以理解的多繼承、指針等概念,是程序員比較喜愛的編程語言。
作為一名信息技術學科的程序教學教師,我一方面感慨于時下的編程教學受到前所未有的重視,另一方面也為規范程序教學而步步小心。希望我們鐘愛的程序教學,能夠以適宜的方式,造福莘莘學子。
七嘴八舌熱議進行時:
魚和熊掌可否兼得?
王雙雙
博主的擔心不無道理,如今編程風再次升溫,程序設計競賽、機器人競賽等在功利的驅使下受到家長、孩子們的追捧,而且呈現低齡化趨勢,這對信息技術教師來說當然是一件利好的事情,但我們在興奮的同時,也要冷靜下來認真思考,編程教學應該以怎樣的方式開展,才是最適合學生的?正如博主所說,讓程序教學能夠以適宜的方式造福學生。
作為一名從事信息技術教學二十多年的信息技術教師,我經歷了編程教學的種種變化的過程,VB、Pascal、C語言,都進入過信息技術教材,這些程序語言對大多數學生來說入門就很困難,僅僅是語法,就會讓很多學生絆倒在編程的門檻上,隨著難度的加深,大多數學生漸漸對編程失去興趣。
經過實踐,我認為編程教學可以分為兩個層面:一是精英化,針對數學基礎好、擅長邏輯思維的學生,對編程有濃厚興趣的學生,可以成立興趣小組或社團對這些學生開展編程教學,走所謂的“精英路線”,組織他們參加信息學競賽;二是普適化,針對全體學生進行普適性編程教學,以點輻面,以興趣代替專業。
精英化,比如現在初中教材常采用的Python語言。Python寫出來的程序看上去簡單易懂,學生入門容易,而且對于部分編程“精英”來說,將來深入學下去,編寫更加復雜的程序也不在話下。尤其是Python編寫程序語法簡潔,沒有很多條條框框的限制,初學的學生不用在語法上花費大量的精力,這對沒有任何編程基礎的學生來說,可謂一大福音。
普適化,比如“編程貓”?!熬幊特垺逼瘘c低,界面簡單,在編程教學中,我借助編程貓平臺上的“海龜編輯器”進行程序設計教學,海龜編輯器可以讓學生在代碼編程模式與積木編程模式之間自由切換,在教學時教師能照顧到不同層面的學生,對理解能力強的學生,直接使用代碼,對學有困難的學生,可以借助積木讓其學習代碼。
魚和熊掌可否兼得,需要在實踐中摸索探尋。編程教學要能夠同時照顧到普適性教學和精英教學這兩個層面,這應該是學校、家長、學生共同希望的。
教亦有道 無間之道
韋國
博主關注的編程熱,是時下的社會現象,值得一線信息技術教師反思。作為一名小學教師,我認為全民編程,有違教育規律。在我身邊有一股“信奧熱”,為走捷徑進入名校,大批家長不管自己孩子的基礎和興趣愛好,花費大量時間和精力要求孩子超前學習編程,盲目跟進的結果是不容樂觀的。尤其是低齡編程,如同拔苗助長。在我從事小學編程教學的前十年,從三年級起選拔編程學生,要求數學基礎良好。教學語言跟隨比賽指揮棒進行,從Basic、Pascal走到C++,目標就是讓學生參加信息學競賽,走的是精英路線。
在中國文化背景下成長起來的學生,由于英文等知識儲備不足、抽象思維能力缺乏等問題,通過幾周或者幾個月的學習,相當一部分會興趣索然,喪失學習信心,因而也就不可能取得編程學習的成功,因此,能獲得優異成績的只是極少數學生。小學生年齡尚小,身心發展還不成熟,高級程序編程所必需的知識還不具備,自我控制能力也差,我們雖然從中培養了一些精英,但卻挫傷了更多學生的學習積極性,他們從此不再愿意接觸編程,所以這樣做得不償失,無異于拔苗助長。由此可見,編程教學不是學習者年齡越小越好。
適度編程,應遵循學生特點。近幾年圖形化編程軟件的興起,對于小學生學習編程來說確實是一件幸事,他們無需背記繁瑣的命令。學生設計好流程、選定背景、添加角色,再把需要的語句塊拖到腳本區,設定參數,整個程序就可以運行,直觀檢查運行的結果與設想是否一致。即使有了圖形化編程工具,也不是越早學編程越好。學生需要有相關的知識儲備,有一定的思維能力,才可能完成編程。編程重在厘清問題內容,再求解。現在有些機構針對幼兒開設的所謂的編程課,其實從來沒有完整的程序結構,而是像玩游戲一樣操作,這不是真正意義上的編程學習。
圖形化編程教學可以與開源硬件結合,讓學生得到更為直觀的體驗。江蘇省中小學信息技術教材已經把開源機器人和物聯網的內容編入其中。在教學中,學生設計方案,結合工程學知識進行外觀和機械搭建、選用模塊、編寫程序,調試修改。學習過程充滿了挑戰,學生也感受了智能技術,提升了學習力。
所以,編程教學應因人而異,切莫穿越認知層、思維層,只有這樣才能使其為學生的終身發展服務。
編程攻略如“意”傳
秦晶
博主的文章具有很強的現實感,作為一名基層的中小學信息技術教研員,我對“編程熱”的感受是喜憂參半的:喜的是中小學普遍開啟了編程教學模式;憂的是“攻略”不足難以如“意”。
在深入學校指導教師上課時發現,有些教師注重編程教學,自認緊跟時代的步伐,但聽課效果確實不盡如人意。究其原因是教師對編程教學的理解有偏差。在視導中,聽到的聲音往往是學生如何難教、教材如何落后、生源如何不濟……作為教研員,我更希望教師能從學生難教的埋怨中解脫出來,成為內容的開發者和設計者,根據學情,自編適合教學的內容。
例如,一位教師給小學低年級學生上編程課,起初按部就班,教學生“通關”,雖然學生們非常感興趣,可教學缺少學生認知遷移建構的過程。改進后的教學設計中,從語文課上的《江南》古詩導入,通過模仿小魚游動,體會古詩中的“東西南北”四個方向,隨即自然過渡到編程軟件中的四個方向模塊,再與學生一起分析第一關的步驟分解,從動作分解到對應模塊,再到上機調試運行,學生們從中體會到了最初的算法和計算思維的養成,后面的幾個關卡自然也就迎刃而解了。如此攻略盡如人意。
再如,八年級的一節信息技術課上,教師以“元旦裝扮我設計”為活動主題,教學生學會利用編程來實現LED燈的各種閃爍效果。經過大家的指導,教師改為采取小組合作的形式,讓學生們先商量好最終需要小燈或燈帶達成的造型和效果,再逆推出程序流程圖以及程序指令,這樣學生的思路就非常清晰,做出來的效果也是異彩紛呈。
因此,編程全民化顯然是不妥的,教師務必要因“人”制“疑”,學生的基礎怎么樣?學生對什么感興趣?學生需要從編程學到什么?而對于不同年級、不同班級甚至每一位學生來說,教師應該做到心中有數,要有通盤的考慮和整體的課程架構,并在具體實施過程中不斷迭代優化,以達到最務實最有效的教學目標。
總而言之,“與其坐而論道,不如起而行之”,如意之攻略,不在于需不需要教“編程”,而在于如何制訂“攻略”,讓編程更加如“意”,方能成就彼此。