說說學(xué)編程的一些經(jīng)驗(yàn)
程序員學(xué)的知識分為兩種,一種是偏理論的,例如計(jì)算機(jī)原理,計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫原理、以及操作系統(tǒng)原理,這些知識都是以理論為基礎(chǔ),注重的理解能力。
另一部分主要以實(shí)踐為主,就是平常當(dāng)工具用的,例如 linux 日常命令工具、數(shù)據(jù)庫SQL操作、還有寫代碼,這些知識學(xué)起來沒什么技巧,ctrl c ctrl v,拿到教程就是照著抄,唯手熟爾。
不過照著抄代碼需要做到3點(diǎn):
第一步:理解,如果照著教程敲代碼沒有建立在理解基礎(chǔ)之上,那叫瞎抄,就跟上學(xué)的時候差等生抄別人作業(yè)沒啥區(qū)別,抄完之后,考試出一模一樣的題目你都不知道寫。
第二步:驗(yàn)證,跟著把敲出來,驗(yàn)證別人說的是不是對的,帶著懷疑的精神驗(yàn)證每一行代碼,很多時候我們就算照著抄也有可能會抄錯,也許別人的代碼有錯,如果最后輸出結(jié)果跟預(yù)期理解的不一致,這就考驗(yàn)?zāi)憬鉀Q問題的能力了。怎么辦?多思考,多請教,多總結(jié)。
第三步:舉一反三,這步是最重要的,舉一反三會把知識變成自己的,把每一行代碼按照自己的思考進(jìn)行修改,例如:既然這樣可行,那換種方式看看有什么不一樣的效果。
關(guān)于抄代碼,我只服一人,就是Openresty 的作者春哥,可以看下對他的一則訪談:
回過頭看,抄書是我自學(xué)編程的法寶。話說抄書這種學(xué)習(xí)方法是我意外間發(fā)現(xiàn)的。初三時,我酷愛化學(xué),總是纏著當(dāng)時的初中化學(xué)老師提各種奇怪的問題,老師拗不過,借給我一本他當(dāng)年大學(xué)時用的課本《分析化學(xué)》。我如獲至寶,愛不釋手,但借的書總要還,但又不能立馬消化,于是我便抄書,抄了整個暑假,結(jié)果意外地發(fā)現(xiàn)了抄書的奧妙——那就是延緩閱讀速度,不至遺漏每一個重要的細(xì)節(jié):眼到,手到,心到。 其實(shí)不僅書抄得,代碼也抄得。記得我剛進(jìn)入淘寶時,想學(xué)習(xí) Nginx 源碼。于是白天上班就對著 Kindle 抄 C 源,同時就已暗記于心;晚上回家在房子里來回踱步,在腦海中反復(fù)回放白天抄過的源碼,直至融會貫通,深得其奧妙。
大神都有獨(dú)門絕技,不是我等隨隨便便能學(xué)會的,好在勤能補(bǔ)拙,與各位共勉。
另外想要成為一個優(yōu)秀的、有能力程序員的話,其實(shí)作為一個開發(fā)者或者編程學(xué)習(xí)者,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要!這里我要推薦一個C語言 c++交流Q群,7-4-1-8-1-8-6-5-2,不管你是大牛還是小白,大家都一起成長進(jìn)步。
群里有位小伙伴說道:我不是程序員,沒有計(jì)算機(jī)基礎(chǔ),也不懂前端后端,更不知道框架,分布式等等的,平時不知道學(xué)編程有什么用,覺著相關(guān)工作也比較少。
問及為什么要學(xué)編程時,他說只想給他的職業(yè)生涯加加分,如果這樣能學(xué)好編程我就不信邪了,他說他是搞金融的,那為啥不學(xué)些對工作有幫助的東西呢?比如數(shù)據(jù)分析、量化交易什么的,學(xué)點(diǎn)即學(xué)即用的東西才是正事,別特么瞎學(xué)了。