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