我一直認(rèn)為接觸很多新的事物,才能更好的認(rèn)識(shí)世界。每一個(gè)新領(lǐng)域都能給我們帶來新的知識(shí),裝載著這些新知識(shí)的我們自然也會(huì)獲得新的思維,新的能力,新的看待世界的角度。學(xué)編程也如此。
編程的本質(zhì)是什么?用一句話來解釋,編程就是和計(jì)算機(jī)對(duì)話,用電腦聽得懂的語(yǔ)言,告訴它我想讓它做的事。
當(dāng)我們嚶嚶學(xué)語(yǔ),我們的父母教給我們的是漢語(yǔ),也就是中國(guó)的語(yǔ)言。在成長(zhǎng)的過程中,我們用漢語(yǔ)來溝通,但隨著年齡的增長(zhǎng),我們開始接觸英語(yǔ)、日語(yǔ)等其他國(guó)家的語(yǔ)言。我們通過不用的“語(yǔ)言形式”和他人溝通,以此來完成我們的目的。
語(yǔ)言有很多種,包括漢語(yǔ)、英語(yǔ)、法語(yǔ)、韓語(yǔ)等,盡管輸出的形式不同,但可以達(dá)到同樣的目的。同樣,我們也可以通過”語(yǔ)言“來控制計(jì)算機(jī),讓計(jì)算機(jī)為我們做事情,這樣的語(yǔ)言就叫做編程語(yǔ)言。
今年兩會(huì),教育依舊是民眾關(guān)注的熱門領(lǐng)域。調(diào)查顯示,在受訪者期待的各類兩會(huì)議題中,教育僅次于。科技素養(yǎng)對(duì)人工智能時(shí)代的重要性已經(jīng)不言而喻,我國(guó)對(duì)科技人才的布局也是刻不容緩。
所以,要跟電腦溝通對(duì)話的前提,我們也必須讓自己變得理性、嚴(yán)謹(jǐn)起來,從電腦的角度去思考問題,這就是所謂的編程思維。這種思維能帶給孩子什么好處?下面我用一個(gè)大家都很熟悉的游戲“貪吃蛇”作例子,我們一起來看看吧:
編程如何培養(yǎng)孩子的能力
拆—拆分問題的能力
要做一個(gè)“貪吃蛇”游戲,這是一個(gè)很大的問題,該怎樣入手呢?如剛才所講,得想辦法讓電腦把這件事情搞明白,有哪些步驟,每一步該干什么,哪步在先哪步在后。所以我們首先需要把這個(gè)大問題進(jìn)行拆解。
拆解
在這個(gè)程序中,計(jì)算機(jī)主要處理兩件大事:
1.處理輸入–收集用戶操作信息
2.輸出響應(yīng)–根據(jù)不同的輸入,做出不同的響應(yīng)
再拆解
1.輸入-用戶的操作可以有按上、下、左、右鍵四種
2.輸出-相應(yīng)地,貪吃蛇也要做往上、下、左、右走的動(dòng)作
我們將第二點(diǎn)再拆解
貪吃蛇每走一步,可能有這幾種情況:
1.吃到蘋果
2.撞到墻
3.撞到自己
4.什么都沒發(fā)生
我們不難發(fā)現(xiàn)具備這種有拆解能力的人做事情是耐心的、有條不紊的。
整—發(fā)現(xiàn)并且整合“重復(fù)規(guī)律”的能力
“找規(guī)律”就是觀察和找到那些重復(fù)發(fā)生的規(guī)律。
比如“貪吃蛇吃蘋果”所發(fā)生的一系列動(dòng)作,是程序中多次會(huì)發(fā)生的,無論蘋果在左上方還是右上方,無論蛇是從上面吃還是從下面吃,都是同樣的一組動(dòng)作,那么我們就可以把這組動(dòng)作打包,給它取一個(gè)名字叫“吃蘋果”。
每次蛇遇到蘋果時(shí),就可以直接把“吃蘋果”拿出來用,而不用重新把它所包含的一系列動(dòng)作再想一遍,搞不好的話還會(huì)有紕漏。
在編程的過程中,孩子得一直在做這樣的訓(xùn)練,發(fā)現(xiàn)一些可以重復(fù)的單元,把它整合起來,讓計(jì)算機(jī)去重復(fù)它。
觀察那些做事效率高的人,他們就具備了這個(gè)能力。很多孩子解題快,就是他善于發(fā)現(xiàn)和總結(jié)“重復(fù)規(guī)律”,腦袋里自備了一個(gè)裝有很多類似于“吃蘋果”那樣的方法庫(kù),遇到時(shí)直接調(diào)用,不用再?gòu)念^到尾想一遍,也不會(huì)錯(cuò)漏。
析—邏輯思維能力
邏輯思維中有個(gè)非常重要的原則叫做MECE(Mutually Exclusive and Collectively Exhaustive),意思就是“相互排斥且整體完備”,也就是“不重復(fù),不遺漏”。
在編程過程中,處處要考慮和遵循MECE原則。
比如在貪吃蛇的程序里,蛇每往前走一步,可能會(huì)出現(xiàn)4種情況:
a.吃到了蘋果
b.撞到墻
c.撞到自己
d.什么都沒發(fā)生
這4種情況是互斥的,比方說吃到蘋果的時(shí)候就不可能撞到墻,那么程序中就不能讓蘋果出現(xiàn)在墻上;而且,這4種情況覆蓋了所有可能性,在寫程序時(shí)如果只考慮了其中的2種或3種,就不“完備”了。這些思考對(duì)孩子的來說都是非常好的邏輯訓(xùn)練。
改—調(diào)試糾錯(cuò)能力
這點(diǎn)是最重要,也是孩子最需要的能力。
任何事情都很難一次就完成得盡善盡美,程序運(yùn)行起來發(fā)現(xiàn)不對(duì)有問題,這時(shí)就需要孩子去尋找出錯(cuò)的地方,并將它一點(diǎn)一點(diǎn)去改正。
實(shí)際上程序中很多bug都不是一下就能找到的,常常需要從頭到尾把程序的運(yùn)行順序一步一步地跟走一遍,觀察每一步的運(yùn)行結(jié)果(專業(yè)術(shù)語(yǔ)叫“單步調(diào)試”)。這需要很多的耐心、觀察力和專注力,對(duì)孩子的抗挫折能力也是一種磨練。
當(dāng)調(diào)試經(jīng)驗(yàn)豐富之后,孩子在寫程序時(shí)還會(huì)懂得給那些“有可能會(huì)出錯(cuò)”的地方先做個(gè)記號(hào),方便回頭來檢查糾錯(cuò)。他更關(guān)注于提高自己糾錯(cuò)的技能,而不是害怕、回避或者掩蓋錯(cuò)誤。孩子會(huì)越來越懂得,有錯(cuò)很正常,只要能把它揪出來,改正就好。
有些人總是在進(jìn)步,因?yàn)樗S時(shí)懂得回溯、調(diào)試、糾錯(cuò),進(jìn)而提升自己。
少兒編程越來越火,側(cè)面說明了社會(huì)對(duì)于編程的需求越來越重要,或者說是對(duì)編程知識(shí)的渴望越來越強(qiáng)烈。無論是以前的英語(yǔ)熱,還是考研熱等,話題越來越火的背后,實(shí)際上是大家對(duì)這個(gè)方向的學(xué)習(xí)需求。以上這些能力,其實(shí)并不是編程特有的,但它們卻是在編程這件事情上集體出現(xiàn)的。如果你問我:孩子有沒必要學(xué)編程,我會(huì)很肯定地回答,有必要。