為什麼矽谷精英鼓勵每個孩子學會編程,因為它教會我們如何思考

在這個國家裡的每一位國民

都應該學會編程

這能讓你懂得如何去思考

——史蒂夫·喬布斯

比爾·蓋茨,扎克伯格等矽谷精英鼓勵每個人都來學編程。很多美國公立學校在一年級就開設了Scratch編程課。

▲6周6節在線課,完成孩子的編程啟蒙

▲Scratch,麻省理工學院的兒童編程工具

▲每晚在線答疑,知識就該急不可耐

▲僅限300人,共同學習更有氛圍

▲適合小學2年級以上孩子

為什麼每個孩子都應從小學編程

文 | 王木頭

(北大軟體工程碩士,少兒科普節目主播)

這段時間,兒童編程非常流行,在很多地方都有創客教育、STEAM教育,都會涉及到教孩子編程。我想很多家長都聽說過了,甚至自己的孩子已經上過相關的課程了。可是兒童編程到底是什麼東西,對孩子的成長具體有什麼好處,恐怕家長們都還不是很清楚。

兒童編程不需要寫代碼

我想肯定也有家長自己就是程序員,對編程技能和編程思維已經很熟練了,當說到教孩子編程的時候,很多時候他們是皺眉頭,覺得這事不靠譜。因為他們想到了自己是如何一開始學習編程的,對當時經歷過的困難還記憶猶新,認為學習編程超過了孩子的理解能力。

其實兒童編程和成人編程是不太一樣的,至於那裡不太一樣,會不會因為降低難度而讓知識縮水,後面我會慢慢來講,然後大家可以有一個自己的判斷。

我們先來看看編程是什麼。

但凡說到編程,尤其是對於不太熟悉編程的人來說,想到的肯定是滿屏幕看不懂的代碼,有各種很怪的英文單詞。這個想像出來的畫面是很多家長覺得孩子不適合學編程的最大阻礙,總覺得寫字都還不熟練,學編程豈不是更加吃力。而且整個屏幕都是這樣的代碼,一定很枯燥,自己孩子肯定堅持不下來。

其實這幅畫面並不準確,在兒童編程中根本不需要學習寫代碼。因為藉助麻省理工學院(MIT) 設計開發的兒童編程工具Scratch,就可以降低門檻,解決很多兒童編程的問題。

Scratch的操作界面非常簡單

大家可以仔細看一下這個圖,即使沒有學過編程你也可以一下子看懂。

關鍵是學編程思維

終於不用敲代碼了,而是通過像積木一樣的拖拽來實習編程。這又會帶來另一個擔心——會不會簡化後就淪為玩具,學不到什麼真正的東西?

這個我們一點點來聊。我們就先來看看成人學編程重點是學什麼。我想肯定有不少人聽過,編程學什麼語言不重要,只要真正的學會了一門語言比如說JAVA,再學其他的什麼C語言啊,Python啊,就會快很多。所以,學習編程語言不是目的,編程語言是實現某個想法的技術手段,關鍵是要具備編程思維。

所以,如果兒童編程可以很好的幫助孩子們掌握了編程思維,以後等需要的時候就可以很快的的掌握正式的的編程語言,那麼目的就達到了。到底能不能呢,我們先來一起看看什麼是編程思維。

我把編程思維簡單地分成了兩個主要部分,一個是建模,一個是演算法優化。

舉個例子,比如我們想要做一個程序,這個程序會自動把大象裝進冰箱里。那麼建模是什麼呢?就是我們要知道把大象裝進冰箱分幾步,經過分析,知道了是分成三步,打開冰箱,把大象裝進冰箱,關上冰箱。

建模其實就是把一個複雜的問題拆分成更小的問題,保證小問題是可以用程序解決的。那麼演算法優化呢,就是看看如何可以更有效地解決這些小問題。

這其實就有些像是寫文章,建模就是在構思整個文章的大綱和思路,演算法優化呢,就是如何具體地潤色每一句的措辭。只要具備了這樣的思維,至於用什麼語言寫,是漢語還是英語,是C語言是JAVA,其實問題都不大。

那麼兒童編程可以培養編程思維嗎?不一定,這也是大家在報班學習的時候需要邁過的坑。有兩個方法會影響到編程思維的培養,一個是編程工具,真實的編程語言和Scratch相比,我推薦Scratch,後面會解釋為什麼。也會列舉一些其他兒童編程的產品,幫大家分析那些可以幫助訓練和提高編程思維。

另一個影響因素是,教學方式,就拿Scratch來舉例,很多學習班教的是如何使用Scratch這個軟體,而不是培養編程思維。就像是教人下圍棋,只是教了圍棋的規則,並沒有教圍棋相關的技巧和思考。

講到這裡,可能有些家長就首先有個疑問。覺得自己的孩子未來又不需要當程序員,為什麼還需要專門培養他們的編程思維呢?

編程思維是一種元認知能力

現在程序員成為了一種非常重要的工作,薪水高,職位多,好找工作。雖然這是個事實,單並不是為什麼學編程的主要原因。

我想從更普遍的角度來說明下編程思維並不只是對編程有好處。

大家應該還記得我剛才講過的編程思維最重要的兩個能力——建模和演算法優化,這兩種思維對於個人的重要程度是不相同的,尤其是對於不想成為專業程序員的人來說。

還是從剛才寫文章的例子來比喻。我可以說一說我自己,碩士從北大畢業了,肯定不是文盲了,都完成了好幾萬字的畢業論文,但是等到了工作中發現自己根本不會寫郵件,更不要說寫一份清晰的文檔。即使硬著頭皮寫了一份郵件,也肯定是思路混亂,讓人看了不知所云,找不到重點。

我可以肯定我郵件中的每一句話都是通順的,甚至沒有標點符號的錯誤。但是當所有的句子聚在合在一起的時候,還是不能清晰地表達出我腦子中的意思,甚至我腦子本身就是混沌的。

後來我實在是對自己這方面不滿意,在一位前輩的推薦下看了一本書,麥肯錫的《金字塔原理》,然後就豁然開朗了。

這本書主要是講,不論是商務寫作還是闡述自己的觀點,都最好遵守一個金字塔原理。也就是任何事情都可以歸納出一個中心論點,而此中心論點可由三至七個論據支持,這些一級論據本身也可以是個論點,被二級的三至七個論據支持,如此延伸,就像是個金字塔。

更關鍵的是對於論據,有一個額外的要求,就是相互獨立,完全窮盡。

等我看到『相互獨立,完全窮盡』幾個字之後我一下子就開竅了。這不就是我們編程時對一件事建模的方法嗎?

編程的時候需要先採集需求,也就是用自然語言從各方面描述一個問題。比如「我想做一個小遊戲,裡面有隻貓,我們可以控制它抓魚吃,魚會隨機從一邊游到另一邊,在這個過程中可能會被貓抓住,也可能會成功逃走。還要有定時的功能,在固定的時間內看看誰可以抓住更多的魚。」

這樣的表達是我們平時的口語表達,語義模糊,人交流可以,編程就不行了。因為那是人和機器的溝通,任何模糊的和重疊的語句都是不被允許的。

於是為了實現這個小遊戲,我就需要分析需求,拆分問題,看看這個遊戲裡面都有幾個角色,貓有什麼行為,魚有什麼行為,魚和貓是如何互動的等等。

也就是說,編程思維其實和麥肯錫的金字塔原理有些共通,都是拆分問題,用『相互獨立,完全窮盡』的方法保證語義的準確描述。這樣程序才能實現。

可如果沒有學過編程的話,即使明白了這些原理,也需要經過大量的訓練才可以熟練掌握。

這也就是為什麼說,編程思維中建模的能力和優化演算法的能力在某種程度上是不對等的。

優化演算法是一種專業技能,需要有大量的專業知識和數學知識。而建模是一種理性思維,建模能力是一種元認知能力——掌握這個方法,遇到未知問題都可以利用這種認知方式去應對。

這才是學習編程的本質。至於學習年齡,編程這種可以訓練元認知的課程,會比較適合小學二三年級以上的孩子。

為什麼推薦Scratch

講到這裡就要說一下,為什麼不是所有的編程都適合給孩子學,為什麼會推薦Scratch。這是因為Scratch是越過了編程思維中的有關演算法的訓練,直接訓練孩子建模能力。

如果有家長了解過編程的話應該知道,學習編程的時候一般都是先學數字的使用,例如比個大小,在數組裡排序之類的。這其實都是演算法問題。

可是在由麻省理工學院(MIT) 設計開發的兒童編程工具Scratch中就不會,設計它的目的就是為了讓孩子們可以擺脫這些繁瑣的技術細節,直接將自己的想法進行建模並實現,而這些複雜的技術細節只需要一條語句就可以做到。

儘管簡化的代價是無法像正式的編程語言一樣普遍適用,但卻非常適合孩子們用來設計遊戲、MV、動畫和交互程序,這就已經足夠了。

現在市面上有各種各樣的兒童編程工具,其中很多都是Scratch的衍生品,因為Scratch是開源的,很多機構會做自己的定製。這些都是大同小異,可以選擇自己方便的來學習。

但是還有另外一些編程課可能就不會像Scratch這樣能很好地訓練建模思維了。其中最多的可能就是機器人課程,尤其是搭建有編程功能的機器人。

這些課程當然會對孩子的動手能力有訓練,不過在建模思維上的訓練並不會太多。更多訓練的是孩子的定量思維能力,以及遇到問題試錯改正的能力,可能更適合那些有理工氣質的孩子們。

而Scratch,很多文學氣質或是畫畫好的女孩子也會很感興趣,因為不需要太多的編程技術,就可以做出自己的動畫繪本。

總之,在精力有限的情況下,推薦Scratch。如果是在這方面特真的別有天賦,或者是興趣極大,也推薦去嘗試其他課程。

給孩子的第一堂編程課

主講

主講人:王木頭

北京大學軟體工程碩士

博雅小學堂少兒科普節目

《王木頭講萬物簡史》主播

給孩子的第一堂編程課

課程介紹

第1課 領養一隻程序貓做寵物

欣賞高手們做的程序,演示和介紹我們課程的終極目標——小遊戲貓吃魚。並用拆解問題的方式把複雜問題拆分成簡單問題,打消掉太難學的顧慮。

帶小朋友探索Scratch中的運動相關的指令。

第2課 訓練貓可以唱歌和畫畫

進一步探索外觀和聲音指令,完成課程之後,可以程序中的角色製作音樂和小故事。

探索畫筆相關的指令,還有了解循環語句的嵌套使用。

第3課 把貓訓練的更聽話

探索偵測功能,人有眼耳鼻舌身5感,程序也可以從外界獲的感覺。明白選擇語句的用處。可以讓程序中的角色看起來智能一些。

探索事件的功能,可以讓程序中的角色不在循規蹈矩,面對突發事件程序可以隨機應變。

第4課 讓貓在程序里交朋友

加入多個角色,重點理解多個角色之間如何進行互動和協作。

消息機制,如何讓多個角色直接互相可以交流。在消息機制下重新理解多個角色的互動和協作。

第5課 有記憶的貓更聰明

讓程序中的角色更充滿,不只是聽從命令,還可以有自己的記憶,講解Scratch中的變數問題。優化打字小遊戲,增加計時功能。

更強大的記憶功能——鏈表存儲,還有XY坐標定位方法。結合鏈表、坐標和畫筆的功能做一個寫字猜字的小遊戲。

第6課 和貓一起做遊戲

介紹克隆功能,簡單的複製很多的角色。

完成終極任務,小遊戲貓吃魚。

僅限300人


推薦閱讀:

編程貓Kids:4歲開始玩轉編程
作為普通中國人(非官員),拳匪之亂八國聯軍進京之後,如何最大地減少損失獲得利益?
Leetcodes Solution 43 Multiply Strings
加碼編程,少年創學院尋找新業務增長點
惟江上之清風,與山間錕斤銬。

TAG:孩子 | 編程 | 思考 | 矽谷 | 精英 | 鼓勵 | 教會 | 我們 | 學會 |