上一篇文章中(從娃娃抓起,五歲就可以學(xué)編程)我介紹了codeSpark學(xué)院,其中順帶提到了另外幾款編程教學(xué)游戲Hopscotch、Scratch和Swift Playgrounds,這次我來做一個(gè)詳細(xì)的對(duì)比,講講這幾款游戲分別適合多大的孩子,各有什么優(yōu)點(diǎn)和缺點(diǎn)。 適合四到六歲兒童的codeSpark學(xué)院和ScratchJrScratchJr和Scratch都是MIT Media Lab開發(fā)的,ScratchJr是iOS和安卓上的App,適合低齡兒童,而Scratch是在電腦上玩的,功能復(fù)雜得多,適合高年級(jí)小學(xué)生和初中生。 codeSpark學(xué)院主是解謎闖關(guān)模式,自制小游戲的功能目前比較弱(還在持續(xù)開發(fā)迭代中),而ScratchJr是專門用來自制小游戲的,所以正好互補(bǔ),這兩個(gè)游戲可以一起拿給孩子玩。 其實(shí)這個(gè)年齡段的孩子駕馭不了太復(fù)雜的邏輯,也做不出什么復(fù)雜的游戲來,所以ScratchJr的功能是比較簡單甚至簡陋的,因而也不需要任何語音或文字講解,試一試就知道怎么玩了。比如下面這個(gè)自制小游戲: 小馬被點(diǎn)擊時(shí)就叫一聲同時(shí)晃兩下,小豬和小雞被點(diǎn)擊時(shí)也有各自的動(dòng)作,就是這么個(gè)游戲。盡管簡單,孩子也能從中體會(huì)到一些編程思維,比如:
由于只能制作很簡單的游戲,孩子可能很快就玩夠了,相比之下解謎闖關(guān)可能更有意思一些。所以我覺得孩子從codeSpark學(xué)院能學(xué)到更多,ScratchJr只能作為一點(diǎn)補(bǔ)充。關(guān)于codeSpark學(xué)院的詳細(xì)介紹請(qǐng)參考我的上一篇文章(從娃娃抓起,五歲就可以學(xué)編程)。 適合七到十歲兒童的Hopscotch和ScratchHopscotch和Scratch都是讓孩子通過自制小游戲來學(xué)習(xí)編程。這個(gè)年齡段的孩子應(yīng)該能夠管理一定的復(fù)雜性,Hopscotch和Scratch提供的功能單元遠(yuǎn)比ScratchJr豐富得多,孩子可以更自由地發(fā)揮想象力做出各式各樣的小游戲。 Hopscotch在蘋果的App Store下載,iPhone或iPad都可以。下圖是Hopscotch的編程界面: Scratch是網(wǎng)頁版的,在網(wǎng)站上玩,地址是 https://scratch./ 。下圖是Scratch的編程界面: 相比Scratch,我更喜歡Hopscotch,因?yàn)椋?/p>
Hopscotch的缺點(diǎn)我認(rèn)為主要是以下幾個(gè):
Scratch由于功能更復(fù)雜,可以做出比Hopscotch復(fù)雜得多的游戲,但我不認(rèn)為這是什么優(yōu)點(diǎn),我想說:Scratch是否沿著這個(gè)方向走得太遠(yuǎn)了? 首先,用拖曳的方式搭出下圖這樣復(fù)雜的代碼,還能說它比真正的編程語言寫出來的代碼可讀性更強(qiáng)嗎? 其次,學(xué)編程是否應(yīng)該像學(xué)琴、學(xué)畫畫一樣,無論把技巧練得多純熟也只是為了自娛自樂?不,學(xué)編程應(yīng)該是為了解決實(shí)際問題的:
低齡兒童可能本來就沒什么解決實(shí)際問題的需求,唯一的需求就是好玩,只有“好玩”才能激發(fā)好奇心和學(xué)習(xí)興趣,學(xué)會(huì)之后,寫程序也只是為了“更好玩”。 但我認(rèn)為高年級(jí)的孩子就不應(yīng)該繼續(xù)沿著這個(gè)方向越走越遠(yuǎn)了。在掌握了Hopscotch或Scratch之后,應(yīng)該早點(diǎn)上手真正的編程語言,而不是繼續(xù)呆在Hopscotch或Scratch的環(huán)境中,在這樣的環(huán)境中無論堆砌出多么漂亮的程序,別人必須使用同樣的環(huán)境才能運(yùn)行,可是除了學(xué)生有幾個(gè)人在用這些環(huán)境呢?所以這樣的程序價(jià)值就不大,僅供自娛自樂。 與之相對(duì)的是,網(wǎng)頁程序可以直接在手機(jī)或電腦的瀏覽器中打開,App可以直接在手機(jī)或Pad上安裝運(yùn)行,這樣的程序無論是工具還是游戲,都比Hopscotch或Scratch程序有價(jià)值得多。 可以真刀真槍寫代碼的Swift PlaygroundsSwift Playgrounds是蘋果自家的App(所以只有iOS版沒有安卓版),是一個(gè)開放平臺(tái),任何開發(fā)者都可以在這個(gè)平臺(tái)上發(fā)布自己做的編程教程。一個(gè)明顯的局限性是:只支持Swift編程語言,這種編程語言的優(yōu)點(diǎn)是比較適合初學(xué)者(語法清晰、強(qiáng)類型),缺點(diǎn)是除了開發(fā)macOS/iOS App之外沒有其它用武之地。 蘋果自己發(fā)布的Learn to Code教程如下圖所示,適合從零基礎(chǔ)開始一步一步學(xué)習(xí)Swift編程語言。 學(xué)生可以寫簡單的代碼控制運(yùn)行環(huán)境中的小人移動(dòng)和收集寶石。由于講解是純文字的,需要一定的閱讀能力,只適合高年級(jí)的學(xué)生。 Swift Playgrounds跟前面的Hopscotch、Scratch有一個(gè)重要的區(qū)別:跟著教程學(xué)會(huì)使用Hopscotch、Scratch之后,就可以自由編寫自己的小游戲了;而Swift Playgrounds是專門用來學(xué)習(xí)教程的,不是用來自由編程的,自己編寫一個(gè)教程的難度等同于開發(fā)一個(gè)App,需要專業(yè)的開發(fā)者來做。 比如上面的Learn to Code教程,學(xué)生只是寫幾句簡單的“moveForward()、collectGem()”來控制小人,而整個(gè)游戲場景的渲染、以及學(xué)生調(diào)用的那幾個(gè)函數(shù)的實(shí)現(xiàn)代碼是這個(gè)教程的開發(fā)者寫的,其實(shí)在“高級(jí)”菜單中就可以看見這些代碼,一看就明白初學(xué)者是寫不了的: 不過,這也為教程的多樣性提供了無限豐富的可能。很多第三方開發(fā)者做出了形形色色的教程,比如Sphero提供了控制R2-D2玩具的教程,樂高提供了控制樂高機(jī)器人的教程,使得學(xué)生編寫的代碼不僅能在iPad上運(yùn)行,還能控制硬件。 有人搜集整理了一個(gè)教程列表:https://github.com/uraimo/Awesome-Swift-Playgrounds ,內(nèi)容涉及算法、數(shù)據(jù)結(jié)構(gòu)等方方面面,任何計(jì)算機(jī)系的課程甚至數(shù)學(xué)課,都可以被精心設(shè)計(jì)成教程,學(xué)生下載到這些教程后,可以上傳到自己的iCloud Drive,然后在Swift Playgrounds里打開,跟著學(xué)習(xí)。 后記,小編朋友研發(fā)了一個(gè)游戲化的少兒編程在線課程(5-12歲),游戲化教學(xué)結(jié)合scratch(一款在線少兒編程工具,類似樂高的積木拼搭),我家娃娃學(xué)了幾次課,非常喜歡(超預(yù)期),16次課才200多塊錢,對(duì)鍛煉孩子的思維能力和動(dòng)手動(dòng)力很有幫助。 |
|