很多初學者都會問到類似的問題“怎么才能學好編程呢?”、“我學了一年了,還是稀里糊涂,自己無法獨立寫出完整的程序”、“學編程有什么技巧嗎?”、“學編程是自學好還是找培訓班好?”。作為一個有著20年編程經驗的老碼農,用自身體會給大家一些建議。

這里我不給大家推薦書籍,也不對哪個培訓機構做評價,其實跟老師學、自己學、看書學、網上找免費課程學,都不是最重要的,最重要的只有三點:

1、 勤動手。編程是個實踐的活,如果你動手的時間太少,就別想著學會了,再好的老師教,看再好的書也沒用?,F在市面上有一些少兒編程機構,每周一次課,一次2小時,孩子學了一年還是不會自己編程,問我“這家機構教的不好啊”?;蛘哔I本書自學,每周拿出一二個小時照著書練,最后書也看完了,然后問“為什么學不會呢?”。

這都是一類原因,就是缺乏實踐,編程必須在實操中尋找感覺,就像學英語,如果你只是背單詞、背語法,最終學出來就是啞巴英語,因為沒有應用到生活中去,英語還好,就算是啞巴英語,應對查閱資料等場景也夠用了,但編程是必須動手的,你必須寫出程序來解決實際問題,不動手怎么行。所以要勤動手,動手的頻率當然是越多越好,如果你太忙,一周至少要拿出二到三次集中的時間來,每次2小時,這樣才能盡快見效。

1、 多積累。有些同學每次上課都會編寫一些代碼,但下次上課卻帶著空杯心態過來,學了一年,看似代碼寫了不少,你問他學了什么,一臉懵逼。

所謂積累是知識的積累,通俗的說,每次學習的結果你是否都保留了?是否有筆記?不管學習什么學科,善于記筆記當然能學好,這個道理大家都懂。這是積累的第一個層次,第二個層次的積累指的是代碼的積累。隨著學習的深入,我寫的代碼越來越多,會發現有很多相似的功能是可以重用的,例如我寫了一個記錄日志的函數,用于將指定的內容記錄到某個路徑下的日志文件中,這是個很通用的功能,以后在其他地方也會用到,那么我就可以把它保留下來,形成我自己的工具庫,下次再遇到要寫日志的地方,直接調用這個函數就行了。一些有經驗的程序員都有自己的工具庫,所以他的效率很高,一個項目,普通人需要做一周,他只需要三天,因為他不是從頭寫起,就這么簡單。所以學編程必須學會積累,什么時候你有自己的工具庫了,你就入門了。

1、 定目標。學編程必須找到編程的感覺,什么是編程的感覺呢?就是一種掌控感,你可以利用這些工具來實現自己的目標。舉個例子,我在剛學python的時候,用一個月突擊了編程語言的基本語法結構,也就是變量、常量、數據類型、類型轉換、運算符、字符串、列表、字典、循環結構、選擇結構等等,接下來就可以實戰了(有人會說,還有面向對象等高級知識呢?先別考慮那些,有了前面的基礎就可以寫任何程序,只不過是效率高低的問題)。

如何實戰呢?就是自己編寫一個最簡單的小項目,方向隨意,只要是你自己感興趣的就行,游戲、工具……都可以。但有一個前提,就是實現這個項目的基本知識你都已經具備了,以python為例,有的人學習了基礎語法后,選擇的項目是做一個圖形化的游戲,這就有問題,因為這個圖形化游戲需要基于pygame之類的庫,那就意味著pygame也變成了你的必備知識才行,所以很多初學者為了做一個完整的項目,不得不學習很多庫,這是不對的。如果你只學習了基礎語法,能做的項目一定是基于命令行的,不要用那些花里胡哨的界面。所以你在選擇項目的時候可以借鑒別人的成熟項目,但僅僅是開闊思路而已,別指望以它為藍本,因為這些成熟的項目往往包含了太多的東西,不僅要考慮功能完善,還要考慮安全性、執行效率等等,所以作者會盡可能的完善它,但對于初學者而言,這卻是夢魘,因為它會把你帶偏,本來你只想利用基礎知識做一個小項目,但擺在你面前的完美項目卻需要你通古博今、博覽群書,怎么可能?所以最靠譜的方式就是自己想一個項目,具備什么樣的功能由你決定。項目選擇好后,就去努力實現吧,因為這是你自己感興趣的項目,所以不用擔心自己會半途而廢。在做的過程中一定會遇到各類困難,沒關系,遇到問題解決問題,查資料、問牛人都可以,有時一個問題會困住你好幾天,百思不得其解,很痛苦,但柳暗花明往往就在這個過程中出現。經歷過后你會發現,你已經上了一個嶄新的臺階!隨著學習的深入,你要持續為自己訂立更高的目標,每一個目標達成都意味著你的一個新高度。

上述三點是從自身的角度來分析如何學好編程,當然我不否定一本好書、一個好老師的作用,但客觀地說,目前市面上的好書、好老師、好課程太少了,真的太少了。本來這里我想延展下我認為的好書、好課程應該是什么樣的,發現內容太多,以后有時間單出一篇文章吧。

來源: 孫老師聊人工智能