當前位置:
首頁 > 科技 > 為什麼我 11 歲的兒子說要放棄編程,卻又轉戰 Python

為什麼我 11 歲的兒子說要放棄編程,卻又轉戰 Python

2016 年 12 月,我寫了一篇關於教 10 歲的兒子編程經歷的文章[1]。 一年半之後,他的編程之旅仍在繼續,且伴隨著許多起伏和曲折的劇情。

「爸爸……我很無聊!」

身為家長或老師,我們可能經常聽孩子這樣抱怨。 與大多數人一樣,兒童的注意力很短暫,所以往往對新玩具、遊戲或活動高度感興趣一段時間後,就會失去興趣。 一旦新奇勁兒消失,他們便會感到無聊,繼而尋找新的東西。這實際上聽起來與前端 Web 開發人員很類似。

我的兒子也不例外。

2016 年底,在我發布了第一篇文章以後,我兒子對編程的熱情便很快消退了。到 2017 年初時,他進入了學習 Web 開發的艱難期。

如果你不了解 Web 開發對於初學者有多嚇人的話,請打開 freeCodeCamp 的課程(CSDN 編者註:國外在線學習編程網站),然後看下預計完成時間(300 個小時),而且這僅僅是前端 Web 開發哦!這就像你爬到山頂卻發現自己站在另一座山的山腳下。

對一個 11 歲的孩子來說,面對這種情況並不是很有動力。

你可能在想……「我為什麼讓他從 Web 開發開始學呢?

在簡單介紹了 Scratch(CSDN 編者註:MIT 設計開發的少兒編程工具)和 Python 之後,我最終選擇了 JavaScript 和 HTML,因為我是一名 Web 開發者,這是我所擅長的領域。當時我就想,「還有什麼比 24 小時貼身老師更好的呢?」事實證明,還是有很多的。

Web 開發對孩子來說並不是很好

事後看來,我認為 Web 開發對於孩子過渡到基於文本的編程不是一個很理想的起點。孩子天生在逆向工程方面很出色,但是現代的 Web 開發中,看到一個你喜歡的網站,然後照樣建一個比看起來困難得多。從頭開始複製現代網站需要很多 JavaScript 和 HTML 之外的技能,包括 CSS、JS 框架、開發工具、資料庫、伺服器端語言等等。

現代 Web 開發的複雜性對初學者來說太難了,更不用說對一個年僅 11 歲且時間有限的孩子了。總有一些東西需要不斷學習,很難跟得上。

那麼,我是如何參與的

「學習編程」不應該感覺像一份工作。我從不強迫孩子編程。我是一名有工作的家長,沒興趣管理一家編程學校。對於盡情玩耍、讀書、學校的作業,或有時什麼也不做(孩子嘛,偶爾什麼也不做也是可以的)來說,學習編程永遠是次要的。

學習編程需要一種內在的動力,否則就無法堅持下去。這個過程中,我的角色已經發展成了管理、教導和鼓勵。

一個新的機會

到 2017 年 1 月的時候,我兒子的學習編程之路止步了。在學習了大量的 HTML 並學習了 JavaScript 之旅第三部分之後,似乎前途茫茫永無止境。他放棄了編程,跑去讀小說了——特別是 Rick Riordan 系列叢書。對我來說,這也不錯。

直到 2017 年 7 月,在一次偶然的關於棒球統計的討論中,事情又出現了轉機……

「擊打率是多少?」他問道。

「命中次數數除以擊打次數。」

「什麼意思?」

我的兒子不玩也不看棒球,但他喜歡籃球。所以我開始用籃球做例子解釋……

「這與籃球投籃命中率相似,總命中次數除以總投籃次數。這是對球員投籃能力的簡單衡量。」

我看到事情出現了轉機,我想,「也許我們可以干點什麼。」

接下來幾個星期里,但凡遇到統計數據的例子我就會指出來,同時觀察我兒子是否感興趣。電視廣告、YouTube 廣告、廣告牌、圖書等等,統計無處不在!我扮演著鼓勵兒子的角色,並最終買下了《漫畫解讀統計學》(Cartoon Introduction to Statistics,作者:Grady Klein / Alan Dabney),也因此激發了我兒子的學習興趣。

2017 年 8 月左右,我兒子讀完了這本書,我開始尋找下一個學習資源。

作為孩子自發學習的倡導者,我需要謹慎地管理學習內容。無論學什麼網上都有海量的學習資源。我們需要做的是找到適合自己的孩子學習風格的優質資源。我建議你首先自己試試看這些材料(觀看一些視頻課程,閱讀幾章書),從而避免選擇的東西過於枯燥、過快、過慢或製作不佳。不良的學習材料可能會對孩子對整個主題的看法產生負面影響。所以一定要明智地選擇。

回到 Python

2016 年 12 月,數據科學是科技媒體中的熱門話題,而且作為 Web 開發我想擴展一下自己的知識,於是加入了一個專門學習數據科學、R、Python 的網站。我瀏覽了一些課程,和我的兒子聊起了這點。

「還記得 Python 嗎?」我問他。

「記得一點,」他臉上帶著多疑的表情回答道。

「你知道世界各地的統計學家,甚至 Google(我不得不提到 Google)的數據和統計科學家都在用 Python 嗎?而且你不需要再敲括弧和分號。你想試試看嗎?」我問道。

「不學 JavaScript 了?」他問道。

「暫時不學了。」我回答說。

「好的。」他答應了。

於是,我兒子從 2017 年 8 月開始參加了 Python 數據科學入門的課程,並取得了很大進展(主要是在周末學習幾個小時)。

一個月後,他完成了第一門課程。在課程結束時,我兒子已經掌握了 Python 的語法、列表、函數、包和 NumPy。

再攀高峰

隨後,兒子繼續開始學習中級 Python 數據科學,但是在 10 月的時候中斷了,他很少登錄學習,並最終放棄了。

我只好介入了……

「課程怎麼樣了?你遇到什麼困難了嗎?「我問道。

「我很喜歡,但我真的不知道如何使用。」

兒子如是說。

編程的上下文環境

我們倆進行了很長一段談話,但是主要內容是「怎樣(How)」。我經常注意到孩子學編程的一個問題是:缺乏上下文環境

學習編程結構和演算法沒問題,但是孩子無法領會抽象概念,除非與他們現實世界的某些東西相關聯。

Scratch 之所以在孩子中間這麼流行,不僅是因為它用「連接塊」形象地比喻了編程語句,而是因為它的設計僅僅圍繞創建和共享故事、遊戲以及動畫。這很有趣,而且目的明確:即為孩子們帶來雙贏。

從 Scratch 過渡到基於文本的編程時,最難的障礙之一就是喪失了這種背景。你無法再為社區創建有趣的東西,你在純文本、代碼編輯器和「Hello World!」世界裡寫自己的代碼。

這是一個很大的轉變。

所以,我兒子真正的問題是:「這對我有什麼用?Python 怎樣才能賦予我超級力量?

尋找新的機遇

我需要一些可以激起兒子好奇心的東西。 一種可以讓他回到編程之旅的方法。

人工智慧和機器學習在 2017 年主導了科技媒體,我跟兒子分享了許多那一年的有趣的新聞。他對大部分並不感興趣(孩子們似乎不喜歡讀郵件),但是根據與學校的來回討論,以下是一些他覺得有意思的故事:

人工智慧通過觀看別人玩遊戲,學會了重建超級瑪麗兄弟[2]

人工智慧演講生成器可以假冒任何人的聲音[3]

新型人工智慧可以寫出跟人類作曲家一樣好的音樂[4]

日本的人工智慧寫了一部短篇小說,差一點獲得了文學大獎[5]

發現問題了嗎?

所有上述故事都是機器學習代碼完成人類工作的例子。它們賦予了我們超級力量!

「如果你能寫一個程序來幫助你做作業,所有那些閱讀摘要和日記,怎麼樣?」我說。

「真的嗎?怎麼做?」兒子的臉上閃著亮光。

「你可以用 Python 學習人工智慧和機器學習。」

孩子真的可以理解機器學習嗎?

坦白來說,很少有為孩子設計的機器學習。孩子喜歡鑽研事物,但是真正了解機器學習需要很多數學和統計學方面的前提知識。

作為一名 Web 開發者,我的線性代數和統計學知識都有點生疏了,這讓我很難規劃內容並提出有趣的代碼來做比喻。所以我潛心研究了幾周,儘可能地學習機器學習方面的基礎知識。

機器學習方面的資源量非常龐大:視頻、博客、數據、研討會、課程等等。經過一些測試後,基於結構化的學習和好的實踐環境(在開始像機器學習這樣大型的主題的時候,這尤為重要)的考慮。在對主流在線學習網站的課程進行了最後的審查之後,我選擇了其中具有高度針對性的微型學位,並明確定義了前提條件,而且還未深度學習微型學位設定了長期目標的一個,因為知道兒子在開始這門課程之前可能需要幾年的準備時間。

重中之重……回到統計

深度學習的微型學位的課程甚至超過了我的水平(更別說我兒子了),所以我利用前提條件和要求建立了一個課程地圖。這是第一個周期:

圖:機器學習課程地圖的第一個周期

因為兒子完成了 Python 數據科學的入門課程,所以達成了對 Python 的要求。他立即開始了統計課程。

一個重要的里程碑

我兒子真的很喜歡統計。 2017 年 9 月他完成了網站提供的描述性統計課程,並開始了推理統計學課程。

這是一個重要的時刻。這是第一次,他獨自闖入了一個超出我的水平的學科領域。我在大學裡只上過一門統計學的課程,而且那都是很多年前的事兒了。我無法再立即回答他的問題,它必須自己尋求答案。這一刻,我這個編程老師的角色徹底淡出了。

正如我所料,兒子與這些課程愛得痴纏,他很努力的學習,比我預期的還要努力。2018 年 1 月,他完成了推理統計課大約三分之二的課程。然後,他心滿意足地暫停休息了一下,一直到 2018 年 4 月。

一個新的機會

2018 年 4 月,我看到了新一期的用 Python 進行人工智慧編程的微型學位課程。此時距離我兒子編程已經有幾個月了,這個課程對他來說是一個很好的回顧 Python(NumPy、Pandas、Matplotlib)概念的方式,課程還需要一些額外的機器學習的知識的條件(線性代數和神經網路)。而且想到可以拿到結業證書的時候,我兒子也非常積極,於是我們那天就註冊學習該課程了。

圖:2018 年 6 月重寫編寫的課程地圖,並更新了進度

接受現實

但是,因為課程和實驗非常嚴格,兒子很快就落後於推薦的完成期限了。因為原則上每周需要花費 10 小時才能按時完成課程,所以我並不感到驚訝,但我不想遏制兒子的熱情。由於學習量非常大,兒子一整學年每周都需要花費 2-4 小時學習。

圖:兒子在學習的用 Python 進行人工智慧編程的微型學位課程中使用 Jupyter notebook

現實的期望

對於那些剛開始向孩子介紹編程的父母,請將其視為附加的課外活動。編程不應優先於其他活動,如學校作業、自由玩耍或安安靜靜做小朋友。編程有點抽象,而且並不總是那麼有趣,但從長遠看來非常有益。

就個人而言,我兒子願意學習編程讓我感覺很自豪。我並沒有期望他會很快就會成為超級明星程序員。我希望他能夠建立新的心理模型,幫助他從不同角度來處理將來的問題。

我們這代人大多是在命令式編程的世界裡長大的,解決問題時需要按順序定義每個步驟。孩子的世界是不同的。無處不在的人工智慧和機器學習能夠讓計算機根據適當的數據和演算法定義這些步驟。希望我兒子能為此做好準備。

前方的路

對於那些感興趣的人,我計劃在大約六個月內再發表一篇文章,總結我兒子的最新進展和問題。誰知道呢,也許屆時他已經轉戰其他新東西了……如今的孩子們啊。

我還計劃寫一寫教我的小女兒寫代碼(6 歲和 9 歲)的經歷。我的大女兒目前在玩 Scratch,是 Scratch 年輕一代中最小的一個。

參考資源:

[1] https://hackernoon.com/how-my-10-year-old-learned-javascript-d8782b586db7

[2] https://www.theverge.com/2017/9/10/16276528/ai-video-games-game-engine

[3] https://gizmodo.com/this-artificially-intelligent-speech-generator-can-fake-1794839913

[4] https://futurism.com/a-new-ai-can-write-music-as-well-as-a-human-composer/

[5] https://www.digitaltrends.com/cool-tech/japanese-ai-writes-novel-passes-first-round-nationanl-literary-prize/

英文:Why My 11-Year Old Stopped Coding . . . Then Switched to Python

鏈接:https://hackernoon.com/why-my-11-year-old-stopped-coding-then-started-again-ccc259f2f1a5

作者:Rich Klein,Web 開發,作家。興趣包括全棧 Web 開發、Laravel、JavaScript、Vue.js 和機器學習。

譯者:彎月,審校:沭七


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

動輒350億被盜,區塊鏈安全真就如此不堪一擊?
再升級!這份AI工程師必備能力清單了解一下!

TAG:CSDN |