下文經焦教授同意授權,轉載於公眾號「EduTech自留地」,以饗讀者。
昨天上午,經朋友介紹,認識了在香港工作的 Mo 先生,在簡短地早餐會之後,Mo x先生便開始介紹他們編程學習的平臺、項目和課程。原本計劃一個小時的會談,被我們聊得拖延了兩個半小時。
回到賓館,回想我們國內的兒童編程教育,還真是蠻有意思的事情。
1984年2月16日,鄧小平同志參觀上海展覽館的十年科技成果展時,親暱地用手摸了摸計算機小操作手李勁的頭,說了這麼一句話。「計算機普及要從娃娃抓起。」從那之後,計算機教育開始在中國的學校裡慢慢地開始受到重視。
不過,在那個時候,計算機教育基本上就等於編程教育了。那個時候人們學計算機,就是學習程式語言,甚至大多數人沒有機會摸到計算機,就已經開始學習計算機程式語言了。從 BASIC,到FORTRAIN, C,C++,這一路走來.
慢慢地,隨著計算機圖形界面的普及,尤其是可視化程式語言的興起和流行,人們開始從枯燥地編寫代碼,轉化成了可視化的、模塊化的編程學習。程序教學開始逐漸地由純粹代碼的編程(Text-Based Programming)向可視化的模塊化拖拽式編程(Drag and Drop Programming)轉變。
由此,湧現出了一大批的可視化編程的工具,從當年的LOGO語言,到現在異常流行的Scratch,再到 Tinker,BYOB/Snap!、Pocket Code、Blockly、Hopscotch、GameSalad、Code.org、Touch Develop、MIT App Inventor、Alice、BeetleBlocks、Starlogo-TNG我們幾乎可以列舉出數百個可視化編程的應用。
於是,一個新的問題出現了。
當我們擺脫了純粹代碼編寫的碼農式編程學習,開始更多地依賴可視化的、模塊化的、甚至傻瓜化的編程的時候,
一方面使得編程成了四歲以上的每一個孩子都可以學習的技能,在機器人、創客教育、STEAM的熱潮下,使得編程教育再度流行起來了;
另一方面,這種發展態勢在提升了編程學習的趣味性和低門檻的同時,是不是也使得我們的編程教育走向了一種更加表層、膚淺的道路?
這實在值得我們深思。
我的問題來了:
【1】、你最喜歡哪款可視化編程的工具?
【2】、國內著名的可視化編程平臺有哪些?
【3】、可視化編程是編程的未來嗎?為什麼?
【4】、可視化對兒童程序教育非常有幫助,這毫無疑問,但是,會有哪些風險和可能的弊端?
期待您的參與、評論、和分享!
焦教授在文章中提出了四個問題,我們有必要對此深究,在這裡粗淺地談談自己的看法,請諸君批評指正。
領域內可視化編程工具確實非常多,計算機程式語言(程序設計語言)的發展經歷了四個階段,分別是機器語言、彙編語言、高級語言和非過程化語言。非過程語言也被稱為第四代程式語言,即編碼時只需說明「做什麼」,而不需描述算法細節。可視化編程工具就是在非過程化語言的發展階段產生的,簡單來說指的是編程的過程中隨時可以查看到代碼的運行結果。可視化編程的這種「所見即所得」的特性,是程序設計語言發展的方向。具體到兒童編程領域,我們接觸到的幾乎所有的編程工具或系統都是可視化的,按照和機器交互方式的不同,可以分為圖形化編程和命令式編程。圖形化編程較為容易,只需拖動和組合相應功能的代碼塊(圖形塊)即能實現學生的創意,以Scratch、App Inventor、編程貓為代表;而命令式編程則需要輸入編程代碼,更為接近真實的編程學習,但藉助良好的遊戲化設計和輔助支持(如3D遊戲闖關),使得小學生也可以學習,Swift Playgrounds和CodeCombat是其中典型的代表。這些工具的應用大大降低了編程學習的難度,讓兒童對編程學習產生了濃厚興趣,同時培養和訓練了他們的邏輯和計算思維能力,使得在基礎教育階段開展編程教育成為可能。如果說最喜歡哪一款,我挺喜歡編程貓的,原因不表。喜歡是沒有原因的(皮一下)。
根據我淺薄的閱歷來看,國內應用較為廣泛的兒童編程工具或系統有Scratch、Scratch Jr、App Inventor、micro: bit、編程貓、Arduino(mixly、S4A)、網易咔噠、Codecombat(極客戰記)、Koov、Swift Playgrounds等等(未做任何排名)。
針對第三個問題,在我看來,初學者是希望利用可視化編程工具來學習編程的,這樣的確會降低編程學習的難度,技術的發展就是為了提高效率,不是嗎。當隨著學習的深入,你的水平完全不需要可視化工具的輔助,那你就可以選擇純代碼的編程了。我覺得這是多了一種選擇,是好事。對兒童來說,對編程的學習從來都不是為了掌握編程本身,更多的是鍛鍊思維,所以可視化這麼好的工具無疑是發展的方向。
第四個問題我確實沒有很好的想法。兒童在採用可視化編程工具編程時,隨著代碼行的增多,代碼的運行效果就會變得複雜,可視化編程工具出現之前,要驗證這些代碼的運行效果,必須經過繁雜的步驟才能看到結果,程式設計師會儘可能在編程過程中鍛鍊自己「用腦運行儘可能多的代碼「的能力;但是當可視化編程工具出現後,我們可以隨時查看代碼的運行效果,會不會讓我們變得「懶惰」和「不願意思考及想像代碼運行的結果」,對思維的訓練反倒不是有益的影響,這確實是一個值得研究的話題啊。
不知道諸君對焦教授「關於兒童可視化編程四問」有什麼看法,歡迎跟帖討論。
掃描下方二維碼關注我們
快樂|學習|編程|社群
本站部分素材來自「編程貓官網」,侵刪。