兒童學編程的原因以及方法
無論你的孩子在長大後能否成為下一個紮克伯格,編程對他或者她來說都是一個非常有用的技能。它會幫助你的孩子提高解決問題的能力、創造力和溝通能力。同時,這對你來說也是一種樂趣。這裏有一些經過檢驗的優秀的應用程序,可用來輔導任何年齡段的孩子學習編碼。
沒有比現在更合適的時候了。
如果我們讓孩子學習維修技術,那麽很難想象等他們年齡大點的時候能開發出驚人的應用程序和工具。但最重要的是,當你向你的孩子介紹編程的時候,他/她不光光是在學習編程,而且還是在通過編程學習其他東西,麻省理工學院教授Mitchel Resnick這麽寫道。
我個人認為,我應當培養女兒編程的興趣,就跟培養閱讀或繪畫的興趣一樣。在她7歲的時候,因為年齡太小,還不會用“If-then”語句,但她學習編程的動力未變:她想要做一個遊戲或動畫,但她甚至都不知道使用那些工具已經超出了她的能力範圍。現在,一些優秀的應用程序激起了她的好奇心,並以探索和遊戲的方式教她編程基礎。這種學習方法再好不過了。
以下我將介紹了一些應用程序,有些是我們已經試用過的,有些是LifeHackers網站或者其他家長強烈推薦的。其中有很多是基於iPad的,因為觸摸屏對於年幼的孩子來說更為直觀。對於各個年齡段的學生來講,都是有桌面和網絡類的應用程序的。
為最年輕的學生準備的編程遊戲
一款優秀的為小孩子設計的應用程序一般都會比較專註於圖形和簡單動畫的表達方式,而不是專註於編程本身。雖然大多數這類寓教於樂的應用程序都是針對年齡在8歲及以上的孩子設計的,但如果你的孩子會閱讀,能夠理解因果關系,並且有動力去學習,那麽你甚至可以將下面的這些遊戲介紹給學前班的孩子。
Daisy the Dinosaur(恐龍黛西,iPad,免費):這是一款恐龍體育運動遊戲,Elise在幾年前自己發現了這個應用程序並安裝了它。該應用程序指導孩子們通過循環、事件和其他方法(例如,在觸摸的情況下,向前移動恐龍)來操縱一個角色:黛西。這是一個非常簡單而又基本的程序,但簡單性正是吸引低齡兒童的最大的優勢。在這個應用程序中還有一個自由運動的版本,你可以讓黛西在空中跳躍或者任意向後走。(但是,一旦孩子們知道了Toontastic這個兒童動畫工具,那麽恐龍黛西這個應用程序的吸引力馬上就會消失。Toontastic教的不是編程,而是如何創作卡通故事)。
Move the Turtle(移動烏龜,iPhone/iPad,$3.99):與恐龍黛西類似,移動烏龜通過操縱一個圖形對象進行闖關來教孩子們基本的編程概念。是的,就是一只可愛的小烏龜(就像60年代末到80年代的Logo語言中的海龜一樣)。這個應用程序是由幾個Lifehacker Twitter追隨者推薦的,但Elise拒絕去嘗試,因為這個遊戲的概念與恐龍黛西相同,只能用烏龜去做某些事情,而她想用更多的角色做任何想要的事情。換句話說,基於單任務的教育應用程序已經滿足不了她了。然而,通過移動烏龜這個遊戲,孩子們可以學到大量的邏輯編程概念。
適合於各個年齡段初學者的圖形工具
除了簡單的單角色控制類應用程序之外,你還能找到一些通過拖放界面編程塊來教孩子們學編程的應用程序。比如包含編程功能的樂高。在這些遊戲中,你的孩子可以使用代碼部件來控制多個對象(還能訪問更多的命令、變量和事件)並創建動畫或遊戲。
Hopscotch(iPad,免費):出自恐龍黛西的制造商,Hopscotch是針對8-12歲兒童的可視化編程入門軟件。孩子們可以選擇預設的角色或自己創建文本對象,並通過拖放方塊來控制它們。例如,你可以在X-Y軸上以指定的距離移動對象,改變對象的大小或重復動作。該應用程序為孩子的入門提供了一定數量的控件。他們做的很有限,但這意味著孩子們可以自己玩iPad,並了解每種基本方法的工作原理。(所以,當你的孩子問你“如何讓猴子向後移動”時,你不必內疚地說“你自己想辦法”)。Elise在一個星期內使用Hopscotch自己做了十八個動畫,並用她喜歡的動畫角色代替了文本塊。這個應用程序裏大多數的動畫都是按照用戶自己的想法來對對象的做簡單的探索,但她還是學到了如何用數學和時間事件來放置對象。
Scratch(Web,免費):這是一個由麻省理工學院推出的專門為8至16歲的兒童設計的項目,Scratch已被世界各地的教育者和家長使用,以幫助孩子們通過拖放代碼塊的方式來開發動畫、互動故事和遊戲。這是我在幾年前參加編程課程時介紹給女兒的第一個編程工具。我記得我對女兒說:“嗨,Elise,改一下這個代碼塊,我可以讓這只狗像貓一樣喵喵叫。”。從那以後,她就迷上了這個應用程序。
Scratch仍然是我們最喜歡的編程工具,主要是因為它提供了非常多的控件。它跟前面提到的Hopscotch類似,但是更強大;跟App Inventor也很像(下文會提到),但是用戶界面更友好。在Scratch中,有一個超級大的對象庫可以使用或定制。 (不要低估孩子對這個角色進行著色的重要性)。由於包含了大量的方法,你可以讓他們做任何事情。 Elise想做一個名為“蜘蛛奔跑”的遊戲(就跟神廟逃亡差不多,但改成了機械蜘蛛追趕你,並且地上有釘子,能讓你減慢速度),而且到目前為止,我們討論過的可以實現這個遊戲唯一的工具就是Scratch。盡管不能把遊戲轉成手機移動程序,但你孩子的可以保存到網上,並在網上分享。
Stencyl(Windows、Mac、Lunux;免費):Scratch是我們目前最喜愛的程序,但是自從在Thorin Klosowski上知道了Stencyl之後,我們就打算要用用這個試試。它向“Scratch”表示了敬意,但專門為創建遊戲而設計,並可以發布到每個平臺上(iOS,Android,Flash,HTML5,Windows和Mac)。使用Stencyl創造了超過12,000個遊戲,我迫不及待地想去嘗試了。
其他建議:Google+上的Robert Hirsch還有一些其他的建議(基於iPad):
DynamicArt [$2.99]很像scratch,但更側重於制作程序圖紙。
Kodable [免費]是一款非常適合小孩子的應用程序,它通過讓孩子編程來解決謎題。
還有一個類似的應用程序叫做A.L.E.X [免費],你可以控制機器人做一些動作。Codea [$9.99],一個iPad上的Lua解釋器,我不認為這個適合7歲的孩子。它包含了許多很酷的東西,但它是面向對象的,這可能對於一個孩子來說這個有點難,除非你碰巧知道Lua。
為年齡更大的兒童(或者心理年齡比較年輕的成人)準備的更強大的編程工具
以下介紹的應用程序更為先進,側重於編碼本身,並通過可視化的界面來展示其工作原理。
App Inventor(Web,免費):以前是Google的一個項目,現在由MIT托管。App Inventor像Scratch一樣,可以拖放代碼塊。然而,它包括了用來創建Android應用程序所需的所有方法、功能和其他編程元素。在使用App Inventor開發後,你最終會得到一個真正的Android應用程序。
這款在線工具真的非常強大,但是界面對年幼的孩子來說並不友好。對於至少初中以上(或大人)的孩子來說,這可能是最好的,沒有指引,而且功能的使用並不直觀。
Alice(Windows,Mac,Linux; 免費):這款Carnegie Melon開發的運行在Windows、Mac和Linux平臺上的桌面應用程序使用了獨特的3D編程環境來教孩子編程基礎。它比其他針對小孩的編程工具更先進,對於年齡較大的孩子來說也是如此。它有一個受歡迎的功能:孩子們可以在軟件中看到項目背後的代碼。有一個不受歡迎的地方:你需要Java Runtime才能運行Alice。
來自Pluralsight的視頻課程(Web,免費):在線培訓網站Pluralsight為孩子們提供了三個視頻課程,教他們如何在Visual Basic、Scratch、App Inventor中用C#進行編程。如果你孩子的年齡足夠大,可以坐著看完視頻教程,那麽這些視頻可以為他們的動手訓練做補充板面。
Codecademy和Khan Academy(Web,免費):這些互動的在線工具更適合於年齡較大的孩子(可能是中年級及以上)和大人。但是,它們是學習代碼的最佳方式之一,因為你可以在分屏中看到內容更改後的效果。Codecademy包含了Web方面的基礎知識,jQuery、JavaScript、Python、Ruby、PHP等。Khan Academy的編程環境使用的是JavaScript。
關於教孩子編程,我們學到了什麽
我們在使用上面這些應用程序時充滿了歡樂,但我認為,這是因為我們不是以“讓我們學習編程”的心態來看待這些程序,而是以“嘿,想要做某事嗎,我們可以用這個程序來實現”的心態來看待。Sarah Mei在她的Ruby to Kids演講中談到,當你準備要開始冒險的時候,你應該設定一個具體的目標,例如,“我想讓莉莉在她自己探索的時候感到開心”。對於我們來說,學習編程並不是最終結果,而是為了實現某個目標。
所以,一直以來,我已經學會了作為一個家長保持沈默。最難的地方是要避免徘徊在孩子的肩膀之上,並阻止自己說“不,使用這個功能,不是那個”。相反,我現在正在學習她在用的那個應用程序,所以我可以說,“嘿,看看這是做什麽”或者“如果我們這樣做會發生什麽”。現在,我們是在這裏一起探索編程。
兒童學編程的原因以及方法