近年來,編程似乎成為了家長(zhǎng)朋友茶余飯后的新話題,朋友圈也會(huì)不時(shí)刷出各種培訓(xùn)信息,很多家長(zhǎng)也給孩子嘗試過線上課程,盡管如此大家對(duì)少兒編程存在著很多疑問:"編程究竟學(xué)什么?學(xué)了有什么用?"、"該如何學(xué)習(xí)?"、"我不懂這個(gè)領(lǐng)域,孩子可以學(xué)嗎?
不論孩子學(xué)習(xí)什么課程,家長(zhǎng)不需要全懂,了解一些本質(zhì)的東西,也就可以了。比如:學(xué)習(xí)的目的?對(duì)孩子有何幫助?編程究竟是一種什么樣的思維?
搞清楚這些問題,就可以基本選擇適合孩子的學(xué)習(xí)資源,也比較容易判斷孩子的學(xué)習(xí)效果。
首先,編程≠當(dāng)碼農(nóng)。它不光是一項(xiàng)技能,更是通過學(xué)習(xí)培養(yǎng)一種思維,一種思考問題的角度。
每一個(gè)新的領(lǐng)域都能給我們帶來不同的新知識(shí),手握新知識(shí)的我們同樣也會(huì)獲得新的能力,獲得看待世界的新角度。編程也同樣如此。
編程的本質(zhì)就是:和電腦對(duì)話,用電腦聽得懂的語(yǔ)言,告訴它我想讓它做的事。
與電腦溝通時(shí),就不可以像我們平時(shí)與人溝通一樣去交流,咱們?nèi)祟惖奶煨岳锍錆M了感性、隨意、散漫、喜歡八卦、愛聽故事。而它需要有更多的條理性。所以,要和電腦溝通對(duì)話,我們同樣需要把自己變得理性嚴(yán)謹(jǐn)起來,從電腦的角度去思考問題,這就是我們所說的編程思維。
這種思維可以給孩子帶來什么好處呢?以貪吃蛇為例:
貪吃蛇游戲規(guī)則:用上下左右鍵控制蛇的方向,尋找吃的東西,每吃一口就可以得到一定的積分,在這個(gè)過程中,蛇的身子會(huì)越吃越長(zhǎng),蛇身越長(zhǎng)難度就會(huì)越大,蛇的頭部不可以碰墻,也不可以碰到自己的身體,到了一定分?jǐn)?shù),即可過關(guān)。
1. 拆解問題的能力
要寫一個(gè)關(guān)于"貪吃蛇"的游戲,剛拿到這個(gè)題目,該如何入手?就像上面說到的,要想法子讓電腦聽懂你的想法。要先做什么,有哪些步驟等,我們先要做的是把這個(gè)大問題給拆成小問題。
拆解
在這個(gè)程序中,電腦主要處理兩件大事:
1.處理輸入- 收集用戶操作信息
2.輸出響應(yīng)- 根據(jù)不同的輸入,做出不同響應(yīng)
再拆解
1.輸入- 用戶的操作可以有上、下、左、右四種鍵位
2.輸出- 相應(yīng)地,貪吃蛇也要往上、下、左、右四個(gè)方向走動(dòng)
我們繼續(xù)拆解第二點(diǎn)
當(dāng)貪吃蛇每走一步,可能會(huì)出現(xiàn)以下幾種情況:
1.吃到蘋果
2.撞到墻
3.撞到自己
4.什么都沒發(fā)生
再把*點(diǎn)吃到蘋果抽出來進(jìn)行拆解
在這個(gè)步驟中,電腦可能做的事情:
蛇張開嘴巴-蘋果被咬掉-播放吃蘋果的聲音-蛇閉上嘴巴-身體長(zhǎng)長(zhǎng)一截
看起來很簡(jiǎn)單的一個(gè)小程序,拆分后居然會(huì)有這么多步驟,但是這僅僅是其中一條分支。孩子學(xué)習(xí)編程的過程,就是不斷地訓(xùn)練他把復(fù)雜、龐大的問題拆解理順的過程。
在生活中,這種思維也可以用到,通過拆解大問題,從而轉(zhuǎn)化為一個(gè)個(gè)小問題,一一攻破,這樣大問題也就解決了。具備這種能力,在之后做事過程中也會(huì)比較有耐心,處理事情方面也可以做到有條不紊。
2. 發(fā)現(xiàn)并整合"重復(fù)規(guī)律"的能力
比如在"貪吃蛇游戲中吃蘋果"這一動(dòng)作,在程序中會(huì)多次發(fā)生,無論是從哪個(gè)方向,都是同樣一組動(dòng)作,那么這組動(dòng)作就可以打包一個(gè)組為"吃蘋果"。如果需要可以直接運(yùn)用這個(gè)組,而不用再把它包含的動(dòng)作想一遍。
在編程學(xué)習(xí)過程中,孩子可以一直進(jìn)行這樣的訓(xùn)練,發(fā)現(xiàn)一些可以重復(fù)的單元,把它整合起來,讓計(jì)算機(jī)去做重復(fù)。這樣一來不僅節(jié)省時(shí)間,還可以大大提高我們的做事效率。
那些做事麻利效率高的人,很多就是具備了這個(gè)能力。
創(chuàng)新不一定是做出一個(gè)前所未有的新產(chǎn)品,對(duì)現(xiàn)有的模式進(jìn)行優(yōu)化改進(jìn),也是一種創(chuàng)新。而發(fā)現(xiàn)并整合"重復(fù)規(guī)律"的能力更容易讓我們找到創(chuàng)新的機(jī)會(huì)。
3. 邏輯思維能力
邏輯思維中有個(gè)非常重要的原則叫做MECE(Mutually Exclusive and Collectively Exhaustive),意思就是"相互排斥且整體完備",也就是"不重復(fù),不遺漏"。比如下面右圖是遵循了MECE原則的,左圖就沒有。
在編程過程中,處處要考慮和遵循MECE原則。比如在貪吃蛇的程序里,蛇每往前走一步,可能會(huì)出現(xiàn)4種情況:
a. 吃到了蘋果
b. 撞到墻
c. 撞到自己
d. 什么都沒發(fā)生
這4種情況是互斥的,比方說吃到蘋果的時(shí)候就不可能撞到墻,那么程序中就不能讓蘋果出現(xiàn)在墻上;而且,這4種情況覆蓋了所有可能性,在寫程序時(shí)如果只考慮了其中的2種或3種,就"缺胳膊少腿"了。此外,編程過程中還會(huì)涉及到很多處理"與"、"或"、"非"等不同邏輯操作。比方說"蛇沒有吃到蘋果"與"蛇沒有撞到墻",就等價(jià)于,"蛇撞到自己"或"什么都沒發(fā)生"。
這些思考過程對(duì)于孩子來說,都是非常好的思維邏輯訓(xùn)練。
4. 調(diào)試糾錯(cuò)能力
壓軸總要放到*后講:
前面所提到編程能帶給孩子的幾項(xiàng)能力,相比這點(diǎn)來講,糾錯(cuò)能力是*重要的,也是每個(gè)孩子所需要的。
做任何事情,都無法做到一次就完成得盡善盡美,在運(yùn)用程序過程中發(fā)現(xiàn)問題,這時(shí)就需要孩子去發(fā)現(xiàn)并且解決。
程序的世界很純粹,對(duì)就是對(duì),錯(cuò)就是錯(cuò),沒有什么模糊的概念。不像藝術(shù)等觀眾仁者見仁智者見智,不一定可以證明你的作品不好或者是哪里出現(xiàn)了問題,自己也不知道如何改進(jìn)。
然而,程序中的bug也不是那么輕易就可以找得到,常常需要跟著順序再走一遍,觀察每一步運(yùn)行結(jié)果。這中間需要很多耐心、觀察力和專注力,對(duì)孩子的抗挫折能力也是一種很好的磨練。
久而久之,他更關(guān)注于提高自己糾錯(cuò)的技能,而不是害怕、回避或者掩蓋錯(cuò)誤。孩子會(huì)越來越懂得,有錯(cuò)很正常,只要能把它揪出來,改正就好。
有些人總是在不斷進(jìn)步,因?yàn)樗麑W(xué)會(huì)了如何回溯、調(diào)試、糾錯(cuò)進(jìn)而提升自己。