選單

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

開始今天的文章之前,我們先一起來頭腦風暴一下。

在商場門口,揮動著手臂跟大家打招呼的吹氣人,它的手臂為什麼能上下揮動呢?

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

來做個實驗吧。

有這樣一個長條形的塑膠袋子,我們想象它是吹氣人的手臂。跟所有的袋子一樣,它一頭是封閉的,一頭是開口。

現在用剪刀,在它封閉的那頭頂端,剪出一個小口子。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

然後,用吹風機,從開口的那一頭往裡吹風,會發生什麼?

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

在腦海裡執行一下吧。

沒錯,風會把袋子抬起來,變成直直的一條。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

好,如果這一次,這個洞口我們不開在袋子的頂端,而是開在側面。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

然後,把洞口朝下,還是同樣,用吹風機往裡吹風,袋子會怎麼樣呢?

在腦海裡執行一遍吧——

風吹進袋子:

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

袋子變直了:

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

風從洞口吹出來:

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

風的反作用力,把袋子抬起來

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

袋子彎折,空氣的通路被阻擋,袋子掉下來,接著重複上面的過程。

就這樣,袋子像一隻手臂,不停的上下揮動:

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

來看看它的程式:

風吹進袋子——袋子變直——風從洞口向下出來——袋子被抬起——風被阻斷,袋子掉落——回到第一步,不斷迴圈。

你看,這就是

程式設計

聽起來高大上的程式設計,其實充斥在我們的生活之中。

經常有讀者問我,“程式設計思維到底是什麼?要不要給孩子學程式設計?”

說實話,我也一直覺得程式設計挺高深的。

妞爸程式設計很厲害,他是世界上第一個把人工智慧影象識別用於搜尋脈衝星的科學家。我倆剛談戀愛的時候,他送給我一個用我名字命名的專屬聊天程式,類似於MSN,專門用來和我跨洋聊天。(嗯,理工直男的浪漫,就是這麼……不花錢……)

每次我看到他在電腦前敲下一排排程式碼,就能讓電腦從千萬個訊號中找到太空中的星星,都會覺得太不可思議了,有時會拉著他問東問西。

這段時間在考察章魚老師的數學思維課,我經常跑去他們辦公室。章魚老師的聯合創始人凳子老師是北大的計算機碩士,我纏著他請教了一次,頗有豁然開朗之感。

正好這兩天我在B站上偶爾看到了日本著名的NHK教育臺製作的科普節目

《Texico》

NHK的節目向來經典,《像烏鴉一樣思考》、《啊!設計》就是他們製作的。《Texico》是講程式設計思維的,做的實在太好太魔性了,牆裂推薦給大家,我是一口氣看完的,經常有那種“喔,原來是這樣”的發現新知識的爽感。

我就藉著這個節目,加上我的理解,來跟大家聊聊程式設計思維吧。至於要不要上程式設計課、怎麼選,至少我們要對程式設計思維有個基本瞭解才能去做判斷,否則太容易被忽悠了。

內容很多,我會分成幾篇文章和大家聊。但我首先得承認,我的理解還是很初步的,這背後的廣袤,咱們一起慢慢學習吧。

一、程式設計思維到底是什麼?

說到程式設計,其實我們大部分人指的是“計算機語言”,像Scratch、Python、C++,都是計算機語言。計算機語言只能說是狹義上的程式設計。

計算機語言是什麼呢?就是計算機能聽懂的話,我們用這些話告訴計算機,在什麼情況下做什麼事情。

最底層的計算機語言,其實是二進位制碼,就是用一串0和1組成的字元,來告訴計算機做什麼。

舉個形象的例子,在下面這張圖裡,“10111”這串字元代表字母“W”,“101”這串字元代表字母“E”。那麼“10111 101”就是“WE”——我們。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

可以想象,用二進位制碼來寫程式,該有多複雜。好在我們現在有了“高階語言”,Scratch、Python、Java、C++都是高階語言,用這些語言寫出程式之後,它們會再被翻譯成二進位制碼來讓計算機執行。

那這些語言有什麼區別呢?

這就好像我們要跟一個外國人說話,可以用英語、法語、德語,區別只是這個語言好不好懂、好不好用。

這裡面最好懂的就是Scratch,它是大白話的中文,不需要孩子懂英語,也不需要會打字,因為它的指令被做成了一個個的圖示,只要用滑鼠把指令拖到一起就行了。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

像上面這些程式,是不是一看就懂?

Python就需要孩子會說英語、會打字了,好處是語法結構比較簡單,讀起來就跟讀英語句子差不多,妞爸就是Python的深度愛好者。

但這所有的計算機語言,學的不過是語法罷了,是一種工具。

這就好像你要叫一個外國人幫你做一件事情,你掌握了英語的語法,但到底要叫這個人去做一件什麼有趣的事,怎麼樣一步步做成這件事,還做的快、做的好、做的漂亮,後面的這些,才是程式設計思維。

就像前面提到的商場門口不停揮手的充氣人。你要想到目的是讓小人揮手,想到剪出一個洞的方法,想到充氣後“手臂伸直-抬高-落下-迴圈前面動作”的一步步的過程,這才是程式設計思維。

而且,程式設計思維並不僅僅是和電腦對話。我們生活中很多東西都是程式設計的結果。

二、無處不在的程式設計思維

比如說郵遞員送信。

信件在派送之前,要由專人進行“重組”,按照一個特別的表格重新排序。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

但是,這張表格並不是簡單的按照某某路1號、2號、3號的地址順序進行排序,而是按照一定的程式來進行編排的。

是什麼樣的程式呢?

我們先來看看沒有被“程式設計”的信件,放在地圖上是什麼樣子:

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

是無序的散落。

那按照程式重組之後呢?

擺在地圖上,就像是一筆畫一樣連了起來。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

這就是配送時的最短路徑。這條路線還考慮了單行道、禁止右轉等等交通狀況,是一條經過了程式化設計的路線。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

再舉個搬箱子的例子。

有按順序擺放的1、2、3、4號箱子,要搬到對面,怎麼搬呢?

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

你是這樣打算的嗎?

先分四步一個個抬到對面。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

但是,這樣的結果是,箱子順序反了……

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

接下來只能再一個個調整箱子的順序。

怎麼最佳化流程呢?

其實,只要加上一個手推車就行了。

把箱子放上手推車,1號在最下面,4號在最上面,箱子的順序反了。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

接著,從手推車上把箱子再一個個搬下來: 4號先搬下來,放在最下面; 1號最後一個搬下來,放在最上面。

哇噢,箱子的順序又正過來了。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

一步步分解流程、想到結果,再進行最佳化,這就是

程式設計

思維

啊。

之前我看到一個新聞,有個大學生去幹快遞,他對快遞路線、流程、車子的裝卸方法進行了重新的最佳化設計,很快就做到了公司管理層。這就是程式設計思維的生產力。

我曾經在文章裡說過,文憑改變命運的時代已經過去了,將來是

思維改變命運

的時代。

我覺得未來的機會藍海並不在白領行業,而是在藍領行業。大學生可以用自己的知識、思維,去做藍領行業的領頭羊,去改造藍領行業,把它變成創新、創業的機會。

在什麼行業並不重要,重要的是你在這個行業裡所處的位置。

這也是為什麼我們一直強調底層能力,一直反對用刷題填充孩子的時間,反對為了一時的成績去閹割孩子的思維的原因。

只要你看到無處不在的機會,看到思維的生產力,就不會那麼焦慮了。

再來看一個有趣的例子。

有一個小車,只有右邊的輪子會轉。把它放在地上,會發生什麼呢?

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

小車一直在向左打圈圈。

把小車邊上的金屬條按下去,就變成只有左邊的輪子會轉了。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

現在,在地上放一個箱子,然後放開小車,會發生什麼呢?

在腦海裡執行一下吧。

放在地上——只有右邊輪子在轉——向左轉彎——碰到箱子——然後呢?

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

原來這就是掃地機器人的程式啊。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

所以,程式設計思維,並不是指讓孩子去學習計算機語言,讓每個孩子都會寫程式碼,都去做碼農。

當我們說到每個孩子都應該懂點程式設計,指的是每個孩子都應該具有這種廣義上的程式設計思維。這是一種思考的模式,一種解決問題的方法,一種創造力。

具有程式設計思維,即使將來不學工具性的計算機語言,把它用在別的領域也一樣會很有生產力。

而程式設計思維是可以被鍛鍊的,

它是邏輯學、數學和計算機科學的結晶,背後是一整套的核心思維方法。

這些核心思維方法是什麼,在之後的文章裡,我們再慢慢來說。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

謝謝你關注帝呱呱星球,這裡有傳說中的海淀、順義媽媽。因為地域和工作的原因,我們得以接觸優質的教育資源和先進的育兒理念,希望和你分享雞娃時代裡不一樣的育兒新認知、帝都新生活。

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案

糾結要不要給孩子學程式設計?糾結怎麼選?先搞懂這個問題,你心裡才能有答案