那些大佬是怎麼入門編程的

			我在入門計算機時候

			 走了很多彎路 
 
			 這是我太上會長share過的一篇文章
				
			可操作性很強
				
			畢竟不是誰都是輪子哥
 
			 現在重新來看 感悟很多 
  
			 我找到了文章出處  並註明在文末
  • 學習編程, 既要考慮詩和遠方, 也要考慮眼前的苟且。

    • 每年像你這樣的學生不計其數,大一剛進校,一門C語言,學校發一本垃圾C語言教材,按時上課,老師在那裏念念PPT,講講浮點型變量,malloc啥的,你若認真聽了,那你可能懂了,但是發現不會寫,你若沒聽,玩手機了,你是既不懂,也不會寫,上來上去,矇在鼓裏的人出不來,水平就一直這樣,龜速增長。

    • 有的學生學的一頭霧水,開始懷疑自己,準備轉專業,放棄計算機,有的學生學懂了,寫程序一直報錯,開始懷疑自己,有的學生覺得教材寫得不好,去書店轉了一圈,買了三四本C語言的書,但最後厚厚的灰塵蓋在了書上,再也沒翻過。這三種學生,如果繼續這樣,最後都要涼涼。

    • 馬克思教給我們要具體問題具體分析,那我今天就來分析一下,計算機專業的學生,到底應該怎麼學計算機,才能效果最好,進步最快。

    • 如果你要學習物理,我推薦你順着物理的發展史學習,先學習牛頓經典物理,再學習熱力學,電磁學這些不那麼經典的,再學習相對論,量子力學這種徹底推翻經典物理的,再學習量子電動力學這種硬核的,比較前沿的,整個學習過程,是自底向上。但是學習計算機,真的適合這樣嗎?

    • 先學習電路,馮諾依曼結構,造一臺計算機?然後再用匯編寫個小操作系統?寫個小編譯器?最後一步一步往上走,最後開始用高級語言編程?
      你要是這麼學,必然爆炸。計算機的學習最好應該是自頂向下。
      這個頂,頂到什麼程度?
      有人說,C語言就是高級語言了,從C語言開始學就好了。

    • 但是如果讓我教計算機,我第一節課教學生們的,絕對不是C語言,而是教大家如何使用Github,Stackoverflow,告訴世界上正在發生什麼,程序員之間是如何協作的,告訴你在這個大社區,你可以讀到這個世界最牛逼的程序員寫的代碼。

    • 我還要告訴大家如何使用雲服務,告訴大家可以買一個一個月十塊錢的學生服務器,自己做點有趣的事,我還要推薦大家去用Visual Studio
      Code,而不是簡單粗暴的在機房裝一個VC6,或者CodeBlocks,美其名曰,“我們當年用記事本還XXXX,現在的學生被慣壞了”這種話。
      如果可以,我還會教同學們如何科學上網,讓英文編程環境成爲習慣,讓遇到問題google,而不是百度成爲習慣,讓大家在第一節課上完,就能進入這個世界編程大社區,哪怕什麼都不懂,你也能保證所在的社區,就是世界程序員的大家庭當你進入Github,看着各種有趣的項目的時候,相信我,你的視野就會在此爲起點,快速打開,不斷增長,進入一個良性循環。

    • 而當剛上大一的學生第一次進入github時候,被眼前的各種沒聽過,沒見過,但感覺很厲害的項目所吸引的時候,當他兩眼冒光的時候,我就知道,他這四年,成了。
      有人會這樣說我:“Github還用教?剛纔你說的那些學生,如果能被C語言的困難打倒,那他也不適合做程序員,轉行正好。”像這種話,我想說,在很多時候,佛和魔僅在一念之間,你在最開始的時候點到了,給了他引導,他以後可能會馬上進入一個正反饋狀態,如果你沒點到,馬上可能就負反饋了。

    • 我一直覺得國內的計算機專業的學生很可憐。
      當VScode表現越來越優異的時候,學生們還在機房用着VC6,看着密密麻麻的報錯無可奈何。

    • 當Google搜索可以精準定位你的問題的時候,學生們還在爲百度搜索出來亂七八糟的搜索結果無可奈何。
      你用百度,用中文搜索,你連stackoverflow都搜不出來。
      但是你可以去問問,做一個調查,有多少大一結束的學生,沒上過stackoverflow,不知道怎麼在github裏提交issue和pull
      request,你統計一下,看看這個比例有多大?
      你再統計一下有多少比例的大一結束的學生沒用過google,並且對其用不了的原因不太清楚?視野打不開,一切都完了。

    • 有人說,剛開始直接學了python這種很簡單的高級語言,以後遇到C肯定被嚇跑了。

    • 事實恰恰相反,在你瞭解到python的性能問題時,你纔會瞭解python是解釋型語言,C是編程型語言,你纔會思考爲什麼C更快,進而,如果需要用C,去學C。

    • 在你在編程語言中涉及到了“原子性”,“同步”,“異步”,“線程”,“進程”,“內存分配“等概念的時候,你會自然而然地產生很多疑問,進而去學習操作系統,在學操作系統的過程中,你之前的一系列疑問逐漸被解決,這個過程是很爽的。

    • 當你發現某個算法,人家的實現比你快很多的時候,你會自然地去思考,爲什麼我的程序運行這麼慢,然後發現對方用的數據結構與你不同,甚至用了一些算法,比如動態規劃等,這也會驅使你去學習算法,學習數據結構。

    • 有了需求和疑問,再去學,這樣一個過程,是學習的金鑰匙。

  • 你指望學生自己打開視野,但是那些自己打不開,需要你幫忙開下門的呢? 在你的視野被打開之後,我還希望你懂這些: 比如你學C語言,與其去做那些OJ題,不如在github上找個C語言項目,然後閱讀,理解,修改,模仿。

  • 個人認爲在知識爆炸的年代,兩不要: 學個啥都要買本教材,試圖線性地,從頭讀到尾。 (真實情況:經典教材都能下載到免費pdf,語言,框架,文檔往往已經寫的很好,而且最新,github上有無數優質開源學習資源) 不讀優質代碼,不參考最佳實踐,啥都要自己從頭開始搞。

  • 三個要: 要讀文檔,英文文檔 做知識輸出,用文字總結自己的學習內容。

  • 多用命令行 我曾聽過一種論調,說程序員不會用命令行也沒關係。

  • 我想說的是,第一,這個世界沒有那麼美好,什麼都要給你做一個圖形界面,第二,對於命令複雜,命令多的工具,就算做出來圖形界面,往往比命令行更難用,而且命令行可以用命令行腳本進行批文件自動化執行。

  • 兩個原則: 有問題,先文檔,再stackoverflow,再技術文章 要用實例驅動學習,不要說你會什麼,要說你做了什麼 我希望所有程序員明白一個事實是,”我會什麼”這句話,其實是最沒用,最虛飄飄的東西,你說你會java,python,c,rust,go,然後呢?你怎麼證明?寫個hello world?會用api?

  • 但是你要說,XX著名項目作者,那你就牛了,我也不需要讓你證明什麼了。

作者:牛岱     搬運工:szuwaterbrother
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章