于是快馬加鞭地趕出了下篇。
其實(shí)本來(lái)寫(xiě)完上篇后我腦袋里對(duì)下篇的框架已經(jīng)有了大概的構(gòu)思。但后來(lái)從文章的留言,讀者微信群里的討論,以及大家私下給平臺(tái)小助手、給我發(fā)的微信留言中發(fā)現(xiàn),“咦,原來(lái)大家最關(guān)心的問(wèn)題跟我之前的設(shè)想還是有點(diǎn)兒出入哦~”。于是我稍微做了些調(diào)整,以回答幾類典型問(wèn)題的形式,爭(zhēng)取把大家最想知道的,和我最想說(shuō)的,揉在一起。
——“編程就是學(xué)樂(lè)高嗎?”
——“編程就是學(xué)機(jī)器人嗎?”
——“編程就是學(xué)樂(lè)高機(jī)器人嗎?”
——“一直弄不懂編程,好多積木拼裝也說(shuō)是編程,感覺(jué)好糊涂啊”
……
這是最出乎我意料的一類問(wèn)題,但居然是問(wèn)得最多的。看來(lái)不少麻麻被近幾年兒童教育領(lǐng)域冒出來(lái)的新概念新名詞給攪得有點(diǎn)兒昏菜了。問(wèn)題稍稍有點(diǎn)跑題,我下面的回答可能也會(huì)有點(diǎn)跑題,BUT,沒(méi)關(guān)系,只要是對(duì)娃有用的,咱們就擼起袖子把它啃透徹搞清楚!
首先,樂(lè)高是兒童拼裝搭建積木的大品牌,旗下包括很多很多的系列產(chǎn)品,我把它們按功能分成三大類:
磚塊搭建類大家應(yīng)該非常熟悉,絕大多數(shù)孩子剛開(kāi)始接觸樂(lè)高時(shí)玩的就是這一類。我們平時(shí)給孩子買的很多一盒一盒的場(chǎng)景類、建筑類主題積木,或者散裝的積木桶(Lego Classic系列)都是這種類型。孩子可以按照?qǐng)D紙說(shuō)明一步一步從頭到尾,或者憑自己想象創(chuàng)造拼搭出成品。它最大的特點(diǎn)是——不能動(dòng)。
磚塊搭建玩熟了之后,漸漸地可以讓孩子接觸機(jī)械搭建類,機(jī)械搭建時(shí)會(huì)用到輪子、齒輪、梁、栓、馬達(dá)、控制器等器件。我們平時(shí)給孩子買的很多一盒一盒的汽車、火車、飛機(jī)、變形金剛等等主題積木,或者專門的科技積木套裝(Lego Technic系列)都是這種類型。它最大的特點(diǎn)是——能簡(jiǎn)單地、重復(fù)地動(dòng)。
樂(lè)高機(jī)器人則是在磚塊和機(jī)械搭建的基礎(chǔ)之上,結(jié)合了編程控制。比方說(shuō)上面這個(gè)挖土機(jī)的手臂能通過(guò)齒輪被馬達(dá)所帶動(dòng),它是個(gè)機(jī)械搭建。但如果它還能連接電腦程序,讓它可以自動(dòng)地從指定的A點(diǎn)挖些土搬到B點(diǎn),就是個(gè)機(jī)器人了。它最大的特點(diǎn)是——想怎么動(dòng)就怎么動(dòng),通過(guò)編程來(lái)控制。
所以,回答前面的問(wèn)題,學(xué)樂(lè)高機(jī)器人是包括了學(xué)編程的。
BUT(注意是一個(gè)大大的BUT哦),編程只是樂(lè)高機(jī)器人的一部分,可以說(shuō)是比較簡(jiǎn)單的一部分。比如就挖土機(jī)這個(gè)例子,編程要干的活很少,控制它走到A點(diǎn),挖土,再跑到B點(diǎn),倒土,完了,期間可能需要判斷一下距離,角度,或者調(diào)用一下傳感器,邏輯非常簡(jiǎn)單??稍跊](méi)有圖紙的情況下,怎么搭出這個(gè)能前進(jìn)、后退、轉(zhuǎn)彎,手臂能抬起放下,還能挖土、倒土的機(jī)器卻是難點(diǎn)。沒(méi)有這個(gè)靈活的機(jī)器,程序編得再好也沒(méi)招,叫天天不應(yīng)叫地地不靈。
去年逃逃和幾位同學(xué)一起參加FLL(FIRST Lego League,F(xiàn)IRST樂(lè)高聯(lián)賽),開(kāi)始他們想當(dāng)然地把團(tuán)隊(duì)分成一半一半,一半負(fù)責(zé)搭建,一半負(fù)責(zé)編程,后來(lái)發(fā)現(xiàn)要完成任務(wù)的瓶頸全集中在機(jī)械搭建上,編程則很簡(jiǎn)單,派一人搞定即可。
所以說(shuō)如果想培養(yǎng)孩子的編程能力,我建議最好專門學(xué)編程,玩樂(lè)高機(jī)器人通常可能只有30%左右的時(shí)間會(huì)花在編程上,而且一般不會(huì)很深入(當(dāng)然如果你要整個(gè)機(jī)器人去解魔方,編程的比重就會(huì)很大,但這種Project畢竟是少數(shù))。樂(lè)高機(jī)器人的機(jī)械搭建部分很有挑戰(zhàn),而且非常培養(yǎng)孩子的綜合能力,比如力學(xué)知識(shí)、空間思維、想象力、創(chuàng)造力、美感等等。只是說(shuō)如果你的目的是讓孩子學(xué)編程的話,通過(guò)樂(lè)高機(jī)器人學(xué)編程,有點(diǎn)像報(bào)了個(gè)“平面設(shè)計(jì)”的班來(lái)學(xué)畫(huà)畫(huà)一樣。
——“6歲孩子學(xué)Scratch怎么樣?”
——“那種拖塊塊看起來(lái)像玩游戲,不算正規(guī)編程吧?”
——“11歲學(xué)C++OK嗎?”
——“現(xiàn)在Python很火,是不是該學(xué)Python?”
問(wèn)這類問(wèn)題的麻麻們肯定對(duì)少兒編程比較熟悉了。不過(guò)為了讓大家都能看明白,我還是先解釋一下這些Scratch、C++、Python是怎么回事,為什么會(huì)有這么多編程語(yǔ)言。
在上一篇我談到編程的本質(zhì),用一句話來(lái)解釋,就是和電腦對(duì)話,用電腦聽(tīng)得懂的語(yǔ)言,告訴它我想讓它做的事。可電腦那臺(tái)冷冰冰的機(jī)器能聽(tīng)懂啥???其實(shí)它只能聽(tīng)懂由0和1組成的序列。所以long long ago,程序員寫(xiě)代碼都是靠在紙帶上打孔,打孔代表1,不打代表0…
后來(lái),打孔打得眼冒金星的程序員們受不了了,就紛紛開(kāi)始發(fā)明新的編程語(yǔ)言,于是有了匯編、C、C++、C#、Java、JavaScript,Python…還有和這些語(yǔ)言相匹配的翻譯器。這些翻譯器能把它們翻譯成電腦搞得懂的0、1序列,所以編程時(shí)只管用這些語(yǔ)言就好,剩下的就留給翻譯器去辦。比如在上篇說(shuō)到的那個(gè)娃媽喊娃爸買包子的梗,用C++來(lái)表示就是這樣:
If (看到賣西瓜的)
{
買包子(1);
}
Else
{
買包子(10);
}
再后來(lái),一些有愛(ài)的程序員覺(jué)得這樣的語(yǔ)言小朋友用起來(lái)太難了,那些“if”、”else”什么的很難記,所以又發(fā)明了一類拖拽式的編程語(yǔ)言。編程者不需要手動(dòng)寫(xiě)代碼,只需要將操作界面上的指令方框拖到主界面,并且對(duì)指令框做一些參數(shù)設(shè)置就好。這種拖拽式的編程語(yǔ)言有很多種,比如Scratch、Hopscotch以及國(guó)內(nèi)的編程貓,前面提到的樂(lè)高機(jī)器人,用的也是拖拽式的編程語(yǔ)言。
拖拽式編程語(yǔ)言
OK,有了這些背景知識(shí),現(xiàn)在可以回答前面的問(wèn)題了,主要有這些要點(diǎn):
1、孩子一開(kāi)始接觸編程,建議從拖拽式的編程語(yǔ)言開(kāi)始,難度低,上手快,孩子會(huì)比較感興趣,一般5-6歲左右的孩子就可以開(kāi)始;
2、無(wú)論是拖拽式的Scratch、編程貓什么的,都是正規(guī)在學(xué)編程,其中用到的編程思想和手動(dòng)寫(xiě)代碼是一樣;
3、拖拽式編程語(yǔ)言有個(gè)局限,沒(méi)法編寫(xiě)很復(fù)雜的程序,因?yàn)橐坏┏绦蜻壿嫼軓?fù)雜的時(shí)候,滿屏框框會(huì)顯得很臃腫很混亂。所以當(dāng)孩子學(xué)到一定程度(不一定需要按年齡來(lái)劃分,只要孩子覺(jué)得拖拽式不能清爽地表達(dá)他想要的邏輯時(shí)),就可以轉(zhuǎn)為更加專業(yè)的,需要手動(dòng)寫(xiě)代碼的編程語(yǔ)言了。
4、 究竟該學(xué)C++、C#、Java、JavaScript還是Python呢?
每種編程語(yǔ)言都有自己適用的一畝三分地。廣義的編程可不僅僅是用某種語(yǔ)言編寫(xiě)代碼,更重要的是該怎么用語(yǔ)言去操控它適用的環(huán)境。比如說(shuō)你可能聽(tīng)過(guò)JavaScript用來(lái)進(jìn)行網(wǎng)頁(yè)開(kāi)發(fā),但要真正使用它得熟悉html,DOM,CSS,網(wǎng)頁(yè)生命周期,瀏覽器渲染機(jī)制等等等等;而C++則適合寫(xiě)底層驅(qū)動(dòng),但也必須把操控的資源和硬件接口搞得一清二楚。@#¥%&()*&…逃?jì)屇憔烤乖谡f(shuō)什么?噢,這一小段搞不太懂沒(méi)關(guān)系,我想表達(dá)的是:
因?yàn)楹⒆訉W(xué)的是基本的編程思想,而不是解決某個(gè)領(lǐng)域的特定問(wèn)題,所以學(xué)哪個(gè)語(yǔ)言都無(wú)所謂,因?yàn)榛镜木幊趟枷朐诟鱾€(gè)語(yǔ)言中是相通的。只有當(dāng)真正去從事編程工作時(shí),才需要根據(jù)要實(shí)現(xiàn)的功能選擇一門合適的語(yǔ)言。而且,對(duì)于很多編程高手來(lái)說(shuō),換語(yǔ)言就像從使用Windows電腦換成使用蘋(píng)果電腦一樣,沒(méi)什么難度,只要稍微適應(yīng)一段時(shí)間就好。
如果非要排個(gè)先后次序,我比較推薦Python。Python的語(yǔ)法格式比較簡(jiǎn)單,孩子容易上手。而且從目前的行業(yè)情況來(lái)看,Python的需求量很大,學(xué)好了說(shuō)不定暑假還可以去干個(gè)兼職補(bǔ)貼家用什么的^_^
——“孩子完全沒(méi)基礎(chǔ)該怎么開(kāi)始?”
——“幾歲可以開(kāi)始學(xué)編程?讀繪本玩桌游還是直接用電腦編程呢?”
——“不想孩子老盯著電腦屏幕怎么辦?”
——“推薦一些編程學(xué)習(xí)資源吧~”
有這類疑問(wèn)的麻麻應(yīng)該是想對(duì)孩子的編程學(xué)習(xí)做一個(gè)系統(tǒng)規(guī)劃,所以下面我大致按照孩子的年齡和適合的學(xué)習(xí)方式和大家捋一捋:
1、 4歲以下
有沒(méi)搞錯(cuò),這么小就開(kāi)始學(xué)編程?我之前也覺(jué)得夸張,但在美國(guó)還真有幼兒園專門為孩子設(shè)計(jì)了一些既能Get到編程概念,又有趣好玩的活動(dòng)。比如這個(gè)叫“If then backyard coding game”(“如果…就…” 后院編程游戲)的戶外活動(dòng):
游戲的玩法是:
先選定一位小朋友當(dāng)Programmer(程序員),別的小朋友當(dāng)Computers(電腦)。
Computers要根據(jù)Programmer的指令來(lái)做出正確的反應(yīng)。從簡(jiǎn)單到復(fù)雜可以分為好幾關(guān):
第一關(guān):“程序員”做一個(gè)動(dòng)作,“電腦”們就要做相同的動(dòng)作。練習(xí)“If …then…”的概念,對(duì)應(yīng)的編程語(yǔ)句是:
If(Programmer舉左手)
then { Computers舉左手; }
第二關(guān):“程序員”做一個(gè)動(dòng)作,“電腦”們要做相反的動(dòng)作。練習(xí)邏輯“非”的概念,對(duì)應(yīng)的編程語(yǔ)句是:
if ( Programmer 舉左手)
then { Computers(舉右手);}
第三關(guān):如果“程序員”做一個(gè)動(dòng)作A,“電腦”們就要做相同的動(dòng)作,否則“電腦“們做另一個(gè)動(dòng)作B。練習(xí)”if…else“的概念,對(duì)應(yīng)的編程語(yǔ)句是:
If(Programmer舉左手)
then { Computers舉左手; }
else {Computers 抬右腿;}
逃逃小時(shí)候我們也和他玩過(guò)類似的游戲,每人輪流扮演機(jī)器人,其他人發(fā)號(hào)施令。機(jī)器人每次只執(zhí)行一條指令。比如想讓“機(jī)器人”幫忙拿個(gè)東西,可以說(shuō)“站起來(lái);左轉(zhuǎn)45度;抬左腳往前邁一步;抬右腳往前邁一步”…有時(shí)為了好玩還發(fā)出一些“循環(huán)”指令,比如“在聽(tīng)到下一條指令前請(qǐng)保持直行”,很快機(jī)器人就“撞墻死機(jī)”了,一通爆笑中孩子也大致Get到分解問(wèn)題、順序執(zhí)行、循環(huán),甚至“死循環(huán)”等概念。
這些游戲小寶寶的家長(zhǎng)們可以參考,不過(guò)不要期望太高,處于這個(gè)年齡的孩子才不管你是“if…then”、邏輯“非”還是循環(huán)什么的呢,可以打發(fā)時(shí)間,順便還能隱約Get到一些編程的基本概念就算賺到啦。
2、 4-6歲
如果從小閱讀習(xí)慣培養(yǎng)得比較好的話,這個(gè)年齡段的孩子應(yīng)該對(duì)書(shū)是很感興趣的了。推薦兩本編程的啟蒙書(shū),特別適合剛開(kāi)始接觸編程的小朋友。
一本是《Hello Ruby, Adventures in Coding》,中文名叫《Hello Ruby 兒童編程大冒險(xiǎn)》,它是一本講故事的繪本,卻將計(jì)算機(jī)的很多小知識(shí)悄悄帶入其中,用很多有趣的故事情節(jié)將程序設(shè)計(jì)中用到的概念介紹得很清楚,非常特別。
另一本是DK的《My First Coding Book》,我是在逃逃學(xué)校的圖書(shū)館里看到這本書(shū)的,DK的品質(zhì)沒(méi)得說(shuō),用非常童趣的語(yǔ)言囊括了幾乎所有的編程概念,并通過(guò)翻翻、拖拉等方式模擬跟電腦一樣的分步執(zhí)行,好看又好玩。不過(guò)目前好像還沒(méi)有中文版。
這個(gè)年齡還可以開(kāi)始接觸最簡(jiǎn)單的電腦編程了,推薦由美國(guó)麻省理工學(xué)院媒體實(shí)驗(yàn)室開(kāi)發(fā)的ScratchJr,它是有故事書(shū)一樣翻頁(yè)設(shè)計(jì)的編程工具,程序指令很簡(jiǎn)單,界面卡通可愛(ài),使用起來(lái)非常方便,很吸引低齡孩子。
不過(guò)從理解編程思維方面來(lái)講,我更推薦孩子多玩編程桌游,好處是避免長(zhǎng)時(shí)間對(duì)著電子屏幕,而且該練的能力也能練到。首推Thinkfun家的編程桌游,從啟蒙到系統(tǒng)學(xué)習(xí)級(jí),它家都有一系列的桌游覆蓋,其中適合這個(gè)年齡段的是編程烏龜Robot Turtles,屬于啟蒙級(jí)別的。
3、6-8歲
這個(gè)年齡的孩子可以上真正的編程了,前面提到的拖拽式編程語(yǔ)言就很合適。推薦兩個(gè)非常權(quán)威的編程學(xué)習(xí)網(wǎng)站:
一個(gè)是Scratch,是ScratchJr的進(jìn)階版,孩子可以通過(guò)拖拽方框來(lái)學(xué)寫(xiě)程序,也逐漸開(kāi)始了解循環(huán)、判斷等編程語(yǔ)言的基本功能。
另一個(gè)是Code。這是奧巴馬倡導(dǎo)了全美“Hour of Code”編程活動(dòng),并提出要將編程引入學(xué)校后,美國(guó)教育部門專門創(chuàng)建的一個(gè)教K-12孩子編程的課程網(wǎng)站,非常系統(tǒng)和專業(yè)。
這個(gè)年齡可以使用的編程桌游是Thinkfun的編程大師Code Master,簡(jiǎn)單的關(guān)卡和編程烏龜?shù)耐娣愃疲胶竺嬖O(shè)計(jì)闖關(guān)路徑時(shí)難度會(huì)變大,邏輯和步驟也更加復(fù)雜。
4、8歲+
這個(gè)年齡段孩子的邏輯思維應(yīng)該已經(jīng)發(fā)展得很不錯(cuò)了。如果是這個(gè)年齡才剛開(kāi)始接觸編程,可以從上面提到的Scratch和Code,拖拽式的編程語(yǔ)言開(kāi)始,也可以直接從手動(dòng)編寫(xiě)代碼開(kāi)始。
如果是手動(dòng)編寫(xiě)代碼,我特別推薦蘋(píng)果IPad(只在IPad上,IPhone上沒(méi)有)上的一款編程APP——Playground,它其實(shí)算是從拖拽式編程到手寫(xiě)代碼編程的過(guò)渡。代碼不需要孩子一個(gè)一個(gè)字母敲出來(lái)的,Playground 界面底部會(huì)有可選項(xiàng),直接點(diǎn)擊選擇就好。
孩子雖然不需要敲代碼,但能看到源代碼完整的樣子,這跟他以后真正要寫(xiě)程序時(shí)使用的代碼是一模一樣的,這點(diǎn)會(huì)讓孩子很有成就感。Playground逃逃用了很長(zhǎng)一段時(shí)間,每次通關(guān)都挺得瑟。
當(dāng)然,順利過(guò)渡之后,就可以完全進(jìn)入手寫(xiě)代碼階段了,具體選擇學(xué)什么編程語(yǔ)言可以參照前面“第二類問(wèn)題”中所談到的。
這個(gè)年齡段無(wú)論孩子是否已經(jīng)開(kāi)始學(xué)編程,還是正在學(xué)什么編程語(yǔ)言,我都特別推薦一套桌游——Thinkfun的“編程三劍客”。
這是Thinkfun在2017年推出的一套非常專業(yè)系統(tǒng)、也是一套真正意義的學(xué)習(xí)型編程桌游 ,獲得全美“Hour of Code”編程活動(dòng)的“Perfect Game”(完美編程游戲)殊榮。逃逃用了將近一年,它的難度不低,對(duì)編程的核心知識(shí)點(diǎn)和培養(yǎng)的思維能力覆蓋很完整,把它玩通了,編程中最核心的知識(shí)點(diǎn)也都吃得透透的了。特別推薦給每一位打算開(kāi)始好好學(xué)編程的孩子,今晚推送文章的第二條有這套桌游的詳細(xì)介紹。
至此,兒童編程系列的上、下篇都寫(xiě)完了,希望對(duì)大家有幫助。正如我在上篇中談到的,學(xué)編程不等于一定要當(dāng)碼農(nóng)。我大學(xué)同學(xué)畢業(yè)后頭5年大多都還在IT行業(yè),在寫(xiě)程序,不過(guò)10年后都七七八八地“跨界”去了,我就是其中之一。編程中積累的經(jīng)驗(yàn)和能力讓我們?cè)谄渌袠I(yè)也游走得尚好,因?yàn)樗还馐且豁?xiàng)技能,更是培養(yǎng)一種思維,一種觀察世界、思考問(wèn)題的角度。
所以我建議,每位孩子都應(yīng)該學(xué)習(xí)編程。咦,這句話怎么似曾相識(shí),噢,跟這位大咖說(shuō)的很雷同啊~
PS:我把上面提到的幾個(gè)網(wǎng)站資源整理了一下,有需要的同學(xué)可以私信我,回復(fù)“編程”就能得到,直接點(diǎn)擊就可以訪問(wèn)了。
Thinkfun的“編程三劍客”,這周有團(tuán)購(gòu),感興趣的同學(xué)可以看下^_^
聯(lián)系客服