1
我接觸編程是在本科的時(shí)候,學(xué)的是C語(yǔ)言。但我所在的數(shù)學(xué)專業(yè)用不上編程,所以課程結(jié)束我就沒(méi)再寫過(guò)代碼。直到讀碩士后,我需要寫代碼解決實(shí)際問(wèn)題。不會(huì)編程成為我的一個(gè)非常嚴(yán)重的短板,讓我寸步難行。
我決定重新學(xué)習(xí)編程。對(duì)比各種語(yǔ)言之后,我選擇學(xué)習(xí)Python。我在電腦上安裝了Python,把教程上的代碼一行一行地敲進(jìn)去,然后運(yùn)行得到反饋,就這樣學(xué)了一個(gè)多月。后來(lái),我發(fā)現(xiàn)DataCamp,這個(gè)網(wǎng)站提供闖關(guān)模式供人自學(xué)Python。接著,我又找到Python Tutor。這個(gè)程序把代碼執(zhí)行的中間過(guò)程可視化,讓我有更直觀的理解。
后來(lái),導(dǎo)師給我分配任務(wù),在一個(gè)個(gè)項(xiàng)目的實(shí)戰(zhàn)過(guò)后,我寫代碼越來(lái)越熟練。有時(shí)遇到新語(yǔ)言,比如Matlab,學(xué)習(xí)Python的經(jīng)驗(yàn)讓我輕松上手。從此,我再不用擔(dān)心編程會(huì)成為我的短板了。
當(dāng)然,人們也不用擔(dān)心編程成為他們的短板,因?yàn)榫幊陶兊迷絹?lái)越容易。一方面,編程語(yǔ)言的迅速發(fā)展使得上手越來(lái)越快。比如完成標(biāo)準(zhǔn)制定的HTML5使得網(wǎng)頁(yè)開發(fā)更加簡(jiǎn)單;很多新的編程語(yǔ)言的出現(xiàn),比如Lua,Go,Julia等,也使得編程變得更加容易。另一方面,一些優(yōu)秀平臺(tái)的出現(xiàn)極大地降低了開發(fā)的門檻。如Java Studio使得Java開發(fā)輕松不少;PhoneGap讓任何人使用HTML、CSS、JavaScript輕松開發(fā)出能同時(shí)運(yùn)行在iOS、Android、Windows Phone上的App;Xamarin讓任何人使用C#也可以開發(fā)出跨平臺(tái)的App。
2
但是對(duì)于小孩子呢?該如何讓他們相信編程是一件輕松愉快的事情?
為了回答這些問(wèn)題,我開始關(guān)注針對(duì)K12學(xué)生的編程教育。其實(shí)現(xiàn)在少兒編程教育的學(xué)習(xí)工具非常多,比如CodeMonkey、Scratch、MIT App Inventor、CodeCombat、code.org、Alice、Tynker、Kano、Osmo Coding等。下面我簡(jiǎn)單介紹比較主流的CodeMonkey、Scratch、MIT App Inventor。
CodeMonkey是游戲化的編程教育工具,故事情節(jié)和卡通界面充滿趣味,闖關(guān)式的游戲設(shè)計(jì)把編程知識(shí)化整為零,主題和內(nèi)容充滿正能量,很適合培養(yǎng)孩子學(xué)習(xí)編程的興趣。
Scratch是由MIT媒體實(shí)驗(yàn)室終生幼兒園小組開發(fā),該小組還開發(fā)了適合5-7歲的孩子學(xué)習(xí)編程的ScratchJr。Scratch可用來(lái)設(shè)計(jì)動(dòng)畫、游戲等創(chuàng)作,開發(fā)者還可以把程序分享給其他人。
MIT App Inventor由MIT移動(dòng)學(xué)習(xí)中心開發(fā),使用圖像化的編程界面,讓沒(méi)有編程基礎(chǔ)的人也可以開發(fā)Android應(yīng)用。開發(fā)者還可以把App上傳到Google應(yīng)用商店供人下載。
這三款都是在線的編程教育工具,使用非常方便。同樣是針對(duì)8-16歲的孩子,我認(rèn)為CodeMonkey更適合用于編程教育的啟蒙。雖然與CodeMonkey相比,Scratch和MIT App Inventor可以讓孩子更加自由的發(fā)揮,但小孩子們要先掌握編程的基本指令和語(yǔ)法,才能開發(fā)屬于自己的項(xiàng)目。而CodeMonkey卻不需要孩子獨(dú)自創(chuàng)建項(xiàng)目,并且在游戲中提供了清晰的指導(dǎo),更容易入門。
好了,說(shuō)了這么多,接下來(lái)我向大家重點(diǎn)介紹CodeMonkey。
3
CodeMonkey誕生于以色列,這個(gè)國(guó)家非常重視科技教育。這種重視可能來(lái)自以色列人腦海里深深的危機(jī)感。以色列人中獲得博士學(xué)位的比重很高,工程師占比是世界人口當(dāng)中最高的,超過(guò)美國(guó)和日本。世界上20%左右的諾貝爾獎(jiǎng)獲得者來(lái)自于以色列。最近因被特斯拉電動(dòng)汽車Model S搭載而開始熱門的輔助駕駛系統(tǒng),最先進(jìn)的核心技術(shù)來(lái)自于Mobileye,這家來(lái)自以色列的公司研發(fā)的輔助駕駛系統(tǒng)還應(yīng)用在寶馬、通用、沃爾沃等全球知名汽車公司的多款車型里。
以色列人追求先進(jìn)的傳統(tǒng),使得CodeMonkey這個(gè)產(chǎn)品在發(fā)布之前經(jīng)歷過(guò)多次改進(jìn)。創(chuàng)始團(tuán)隊(duì)剛成立時(shí),這個(gè)項(xiàng)目就幸運(yùn)地進(jìn)入MindCET(以色列最大教育企業(yè)之一)的孵化器中。MindCET里的一線教師和學(xué)生給了創(chuàng)始團(tuán)隊(duì)很多反饋,使得CodeMonkey在實(shí)踐中得到很大的改進(jìn)。此外,CodeMonkey還引起了以色列教育部的注意,后者在全國(guó)范圍內(nèi)推薦這個(gè)STEM產(chǎn)品。
緊接著,CodeMonkey成功進(jìn)入硅谷的Co-Lab教育孵化器,獲得了更多媒體和資本的關(guān)注,并進(jìn)入全球市場(chǎng)。作為CodeMonkey的導(dǎo)師之一,Zynga這個(gè)全球在線游戲發(fā)行商給CodeMonkey團(tuán)隊(duì)帶來(lái)了很多游戲設(shè)計(jì)上的指導(dǎo)。使CodeMonkey改進(jìn)為編程教育游戲,變得更加有趣。
后來(lái),CodeMonkey前往英國(guó),進(jìn)入了Pearson的孵化器中。Pearson有著豐富的面向?qū)W校教育的經(jīng)驗(yàn),這促使該團(tuán)隊(duì)將CodeMonkey轉(zhuǎn)變成一家面向?qū)W校和機(jī)構(gòu)的教育公司。在Pearson的指導(dǎo)下,該團(tuán)隊(duì)為學(xué)校和機(jī)構(gòu)里的編程老師們開發(fā)了與CodeMonkey編程游戲緊密結(jié)合的課堂指導(dǎo)教案和教師端管理工具。這第三次改進(jìn)讓學(xué)生們的編程教育變得更加專業(yè)。
2014年5月,CodeMonkey發(fā)布。7個(gè)月后,就有25萬(wàn)的孩子們通過(guò)CodeMonkey平臺(tái)學(xué)習(xí)編程。2015年3月初,CodeMonkey成為進(jìn)入SXSW教育峰會(huì)總決賽的十個(gè)產(chǎn)品之一,受到更多的矚目。如今CodeMonkey在全球擁有超過(guò)250萬(wàn)粉絲,其團(tuán)隊(duì)對(duì)于進(jìn)入中國(guó)市場(chǎng)非常期待。
4
CodeMonkey是一款在線編程教育課程、闖關(guān)模式的編程游戲。游戲的主角是一只猴子,它最愛(ài)的香蕉被強(qiáng)壯的猩猩搶走,而游戲的目標(biāo)是幫助猴子奪回香蕉。這個(gè)題材和形式充滿正能量,配上溫馨的卡通風(fēng)格的界面和自然環(huán)境的立體音效,很容易讓孩子接受并喜歡上編程。
在游戲中,孩子的任務(wù)就是通過(guò)編程、發(fā)揮想象力通過(guò)一道又一道關(guān)卡,過(guò)程中還有猴博士的指導(dǎo)。孩子在闖關(guān)中由易到難地學(xué)習(xí)編程,不知不覺(jué)提升了編程能力。這和我在DataCamp上學(xué)習(xí)Python的體驗(yàn)一致。
CodeMonkey采用的編程教學(xué)語(yǔ)言是CoffeeScript,這是JavaScript的一種轉(zhuǎn)譯語(yǔ)言,執(zhí)行效率非常高。其代碼指令簡(jiǎn)潔、可讀性強(qiáng),非常接近自然語(yǔ)言,很適合作為編程教育的啟蒙語(yǔ)言。CodeMonkey的畫面和操作都很簡(jiǎn)單。孩子只需在CodeMonkey的代碼窗口里編寫圖形化的代碼指令,點(diǎn)擊運(yùn)行后,后臺(tái)自動(dòng)將CoffeeScript代碼編譯成JaveScript指令執(zhí)行命令,接著孩子便在動(dòng)畫窗口里看到代碼的運(yùn)行結(jié)果。
令我驚奇的是,CodeMonkey會(huì)高亮代碼窗口里每次執(zhí)行的那一行代碼,并且在動(dòng)畫窗口上有所反饋,讓孩子直觀地理解代碼在執(zhí)行過(guò)程中發(fā)生了什么。這和我用Python Tutor直觀理解代碼的體驗(yàn)一致。我覺(jué)得這是CodeMonkey區(qū)別于其它工具的最大亮點(diǎn)。
目前CodeMonkey的故事模式一共有200關(guān)。涵蓋計(jì)算機(jī)編程領(lǐng)域里的大部分概念和知識(shí),包括變量、對(duì)象、函數(shù)調(diào)用、參數(shù)、循環(huán)、數(shù)組、函數(shù)定義、布爾類型、For循環(huán)、While循環(huán)等。考慮到8-16歲左右的孩子很可能沒(méi)有編程基礎(chǔ),CodeMonkey最開始的關(guān)卡設(shè)計(jì)非常簡(jiǎn)單。
比如第1關(guān),孩子只需要修改猴子前進(jìn)的步數(shù),即「step 10」中的10,就可以讓猴子吃到香蕉順利通關(guān)。如果不知道距離是多少,CodeMonkey還提供了尺子用以測(cè)量。這樣,孩子不僅學(xué)會(huì)了控制角色移動(dòng),還對(duì)距離有了初步的認(rèn)識(shí)。再比如第3關(guān),孩子不僅需要用尺子測(cè)量猴子前進(jìn)的距離,還需要控制猴子前進(jìn)的方向。后續(xù)關(guān)卡中會(huì)出現(xiàn)多個(gè)香蕉,猴博士會(huì)指導(dǎo)孩子簡(jiǎn)化程序。比如,如果猴子多次走10步,孩子可以定義變量「a=10」的方式來(lái)簡(jiǎn)化程序。再如果猴子反復(fù)執(zhí)行某一套動(dòng)作10次,孩子可以用循環(huán)10次來(lái)執(zhí)行這套動(dòng)作,而不用重復(fù)寫10次代碼。孩子還可以把這套動(dòng)作的指令寫成一個(gè)函數(shù),只需要調(diào)用這個(gè)函數(shù)就可以做一系列復(fù)雜而有序的操作,起到“四兩撥千斤”的效果。
隨著孩子在通關(guān)中積累了越來(lái)越多的代碼指令、編程思想,后續(xù)的關(guān)卡會(huì)教給孩子更豐富的指令,更復(fù)雜的編程思想,并對(duì)孩子的想象力提出了更高的要求。如要想方設(shè)法避開障礙物、靠烏龜和鱷魚過(guò)河、在最少步驟內(nèi)吃到所有香蕉等等。除了這些,CodeMonkey還注重培養(yǎng)孩子優(yōu)化代碼的良好習(xí)慣。每次通關(guān)后,猴博士會(huì)給孩子的代碼評(píng)分。如果沒(méi)有獲得滿分3顆星,孩子會(huì)收到猴博士給出的代碼優(yōu)化的提示,孩子可選擇重玩對(duì)代碼進(jìn)行調(diào)整。
Codemonkey還通過(guò)不斷增加新的關(guān)卡,推出在線游戲創(chuàng)建工具,設(shè)計(jì)更豐富的游戲形式來(lái)增加內(nèi)容的豐富性和多樣性,并鼓勵(lì)小孩子們自己創(chuàng)立游戲關(guān)卡。微量的社交元素也是Codemonkey的一大特色,孩子可通過(guò)在臉書上分享自己解決問(wèn)題的方案,還可以創(chuàng)建、發(fā)起挑戰(zhàn),并邀請(qǐng)好友來(lái)完成任務(wù)。
5
那么孩子們會(huì)在CodeMonkey里收獲到什么呢?
首先,CodeMonkey編程游戲帶給孩子無(wú)盡的快樂(lè),通關(guān)模式的設(shè)計(jì)讓孩子充滿成就感。這種快樂(lè)和成就感讓孩子覺(jué)得學(xué)習(xí)編程是一件輕松愉快的事情,這是學(xué)習(xí)里最重要的收獲。
其次,CodeMonkey還會(huì)讓孩子形成編程思維,培養(yǎng)他們寫出整潔代碼的好習(xí)慣。孩子的這種思維和習(xí)慣不僅體現(xiàn)在編程里,還會(huì)體現(xiàn)在今后的人生當(dāng)中。
還有,孩子還會(huì)通過(guò)CodeMonkey學(xué)到一門新語(yǔ)言-CoffeeScript。一門新的語(yǔ)言給孩子打開一扇門,讓他們看到不同的世界。CoffeeScript是孩子和計(jì)算機(jī)交流的一種語(yǔ)言,并且和JavaScript有緊密聯(lián)系,這對(duì)于孩子以后學(xué)習(xí)JavaScript提供了緩沖。JavaScript是一個(gè)簡(jiǎn)單但強(qiáng)大的語(yǔ)言,不僅可以用于在PhoneGap寫手機(jī)應(yīng)用,還可以結(jié)合Ruff開發(fā)套件開發(fā)好玩的智能硬件。
當(dāng)然,收獲遠(yuǎn)遠(yuǎn)不止這些。總之,我覺(jué)得CodeMonkey是最適合作為孩子學(xué)習(xí)編程教育的啟蒙。對(duì)于那些希望孩子早點(diǎn)接觸編程教育的家長(zhǎng)們來(lái)說(shuō),這個(gè)暑假讓孩子玩玩CodeMonkey是個(gè)不錯(cuò)的選擇,說(shuō)不定就讓孩子看到一扇色彩斑斕的新世界。
轉(zhuǎn)載請(qǐng)注明:來(lái)自微信公眾號(hào)“君君玩科技”。