自學編程,Pick 這條學習路徑助你 C 位出道!
文- 李大狗,在線學習深度用戶
說到學編程,我相信很多小夥伴並非是科班出身,有些是半路出家文科生,有些是轉行來學編程,興沖沖買了一大堆書,報了五花八門各種網課,想要從零開始學,結果有時候都學不下去,要麼就是兩天打漁,三天曬網。
除了缺乏自制力,你還缺乏一個合理的學習路徑
閱讀今天這篇文章只需5min,但卻能幫你理清思路,選擇一條比較受用的學習路徑,讓你在編程的路上少掉些坑,助你 C 位出道!
#自學編程——有什麼是必須的?
自學編程,需要科學的方法論,科學方法論主要由以下五點構成。掌握了這4點,自學編程不是問題!
(1)認識編程價值:我為什麼要學習編程
(2)消除畏懼心理:程序像天書一樣,我能看懂嗎
(3)選對學習目標:那麼多編程語言,我該pick誰
(4)正確的學習方案:從零開始,如何當一名機器學習工程師
#1 認識編程價值
未來社會是構建在「程序」的基礎上的。人工智慧、物聯網、無人駕駛……在未來,程序只會變得越來越無孔不入。所以,做一個「程序員」便不會像某些傳統領域一樣存在領域整體過時的問題,同時如果細分方向選得好,水漲船高,跟著趨勢便能順利地成就事業。
另一方面,即使不做程序員,學習編程也是有好處的。對於很多工作來說,編程都能提高其工作效率。一件事情原來要做3個小時,現在我們學會了編程,只要1個小時甚至15分鐘就能做完,那麼省下的時間就能做自己想做的事情,例如通過學習提升自己。
#2 消除畏懼心理
對於初學者來說,首先要消除「畏懼心理」,破除「編程需要有天賦」這個錯誤的觀點和「編程相當於數學」這個錯誤的類比。
事實上,程序是一個有輸入和輸出的黑盒,編程,即是這樣一個過程:
觀察輸入是什麼,再觀察輸出是什麼。知道輸入和輸出,我們就了解了黑盒的使用方法。然後我們拿到了好多這樣的盒子。如果碰到A情況,就用A盒子;如果遇到B情況,就用B盒子。最終我們熟悉了盒子的用法,就是學會了編程。
所以,編程一點都不難,只是學會使用正確的盒子罷了。
#3 選對學習目標
入門,選擇語言是第一步,那麼,初學者該從哪種語言來入門編程?
在大學課程上,老師們往往會使用 C 語言作為編程入門。這是一個古老的傳統,是有歷史原因的。在過去,計算機技術點還不發達的時代,我們看看到屏幕上出現「hello,world」就會「驚嘆」。然後獲得正反饋,好好去學習編程。
但在當前時代,計算機技術已經大大發展了,平板電腦和智能手機已經大大普及了,這種「驚嘆」已經過去了,在屏幕上看見「Hello,world」之後不禁不會驚訝,反而覺得有些土。這種時候再用 C 語言入門,只會讓初學者疲憊,覺得入門門檻過高,而且得不到正反饋。
那麼,我們編程入門該從什麼語言開始呢?
可以Pick Python 或者 Javascript 。
選擇 Python,是因為它很接近於自然語言,寫起來很舒服,作為入門很合適。而且庫很多,能在不用造輪子的情況下就實現很多炫酷的功能,給初學者正反饋。
Javascript 呢,雖然沒有 Python 的語法那麼「親民」,但是它有一個極大的優點:適用於前端開發,前端做出來的是可以向所有人展示的網頁,所以它的正反饋是最強烈的,或者說給予初學者的成就感是最好的。
#4 正確的學習方案
大家如果上過學校里的編程課,就會知道我在說什麼。十二周的課里,先用八周講了許多枯燥無聊的基礎知識。例如說 C 語言(不好意思又diss你了)裡面的「指針」概念,完全不知道這個東西是幹什麼的。又不允許練習或者說實踐,唯一沾得上點邊的是一些無聊的編程習題,這些習題往往跟數字相關。
非常慘無人道的是,這個過程不允許學生去耐性,又一直不給學生正向反饋。直到最後交給學生一個小模板讓學生模仿,這個模板通常又非常無聊,例如:課程管理系統,一聽上去就讓人昏昏欲睡。在這樣的課程設計下,最多有人考試能考高分,但是編程是肯定學不好的。
和「錯誤的課程設計」相對應的,是「錯誤的教材設計」。我們到書店裡或者網站上會得到很多這樣的教材,用前3/4的內容講一大堆無聊的原理,讓讀者都沒興趣。然後讀者打一遍書上的代碼,發現項目又跑不起來,只能放棄。
所以,編程入門失敗很可能是由於錯誤的學習方案,正確的學習方案是成功入門的重要因素。那麼正確的方案是什麼呢?
就是一定要找一本實用案例多多的教材,而且案例都是確定能跑通的。然後快速去實現案例,把所有案例都實踐了之後,再翻過頭來看理論。
這樣子,學習有足夠快的初速度,也有足夠強的正反饋,初學者才不至於「從入門到放棄」。
Learning by Doing,Python開始的編程學習路徑
如果以Python作為切入點,首先當然是要掌握 Python 基本語法啦。
這時候可以上 Udacity 的 Python 入門課程。如果英文還行,那麼也可以看下 《Think Python》 這本書。在這個階段,推薦一個 Python 庫——turtle,一個用小海龜畫圖的庫。這個庫能讓你獲得樂趣的同時掌握Python 語法。
在掌握 Python 的基本語法之後,如果你對做網站有興趣,那麼可以學習基於 Python 的後端框架——Flask。因為你已經經過了一段時間的學習,所以直接閱讀 Flask 官方文檔即可。但是,對於網站來說前端也是必不可少的一環,所以,同時要開始學習前端開發了。前端開發包括 HTML 標記語言、CSS 標記語言和 Javascript 三個部分。前端框架很多,我給大家推薦 Vue 框架和 Bootstrap 開源工具包,對於新手來說他們非常友好,可以讓你快速做出漂亮的網站。
除去做網站,Python 還有很多玩法,一條著名的路徑是機器學習。機器學習的學習路徑是這樣的:
首先要熟悉一下 Python 的機器學習版本 Anaconda 和其中的 Jupyter notebook。然後通過 Kaggle 上的「泰坦尼克號生還者分析」這個項目切入—— Kaggle 是一個提供機器學習項目、舉辦機器學習比賽、進行相關討論的機器學習領域的全方位網站。從這個項目中,可以學到最基本的機器學習內容,包括數據清洗、數據基本情況分析、數據的一些重要參數、交叉驗證與線性回歸,以及這些內容如何通過 Python 來實現。
然後再學習監督學習(即在訓練集中「輸入數據與輸出數據之間的對應關係」已經給出的情況的機器學習)。監督學習中包括決策樹模型、支持向量機模型等多種常見模型。同樣,可以上 Kaggle 去尋找相應的項目,在項目實踐中進行學習。
學完監督學習,可以繼續學習無監督學習(直接對輸入數據集進行建模的機器學習),無監督學習演算法包括聚類、主成分分析等。
之後,你或許會對無人駕駛比較感興趣,那麼你可以進一步的學習強化學習(Reinforcement Learning),其它的機器學習演算法都是通過學習器學會怎樣做是正確的,而強化學習是在嘗試的過程中學習到在特定的情境下選擇哪種行動可以得到最大的回報——這就是無人駕駛的原理了。
或者,有的小夥伴對深度學習——這種模擬人類神經元的機器學習方式比較感興趣,那麼可以試試深度學習。深度學習在圖像識別、AR遊戲、自然語言處理等諸多方面均有應用。深度學習比較吃GPU,如果計算機配置不夠的同學,可以租遠程機器來跑。
學習路徑就是以上這樣啦,看完有收穫嗎?
人生苦短,我用 Python!簡潔高效,新手友好!來自矽谷的「Python 編程入門」基石納米學位課程,已經開放報名,限量課程席位!點擊「閱讀原文」,免費預覽和體驗課程。
python基礎教程_python培訓班_python快速入門-優達學城(Udacity)官網推薦閱讀: