如果你是一只程序猿或者致力成為一只程序猿,請(qǐng)問(wèn)下自己:“我真的熱愛(ài)技術(shù)嗎?”,如果不熱愛(ài)請(qǐng)迅速逃離這個(gè)行業(yè)!如果愛(ài),那就放開盡情愛(ài)吧。
結(jié)合自己的經(jīng)歷和理解,這里和大家討論下程序猿技術(shù)練級(jí)攻略,“攻略”的話題有點(diǎn)大了,這里只是淺談,如有錯(cuò)誤,歡迎大家一起討論。
1. 基礎(chǔ)知識(shí)的重要性
??? 構(gòu)建“技術(shù)棧”猶如修煉一部“少林”高深武功。為什么必須是少林的武功?因?yàn)椤疤煜挛涔猿錾倭帧?,我們學(xué)習(xí)的技術(shù)因該是一通百通,且不可是旁門左道。另外修煉技術(shù)特別像修煉少林功夫,需要日積月累扎扎實(shí)實(shí)學(xué)習(xí)和練習(xí)。
??? 這里和大家分享一段真實(shí)的故事。
??? 研究生一年級(jí)參加了一次學(xué)術(shù)交流會(huì),學(xué)院請(qǐng)到了南京大學(xué)徐家福先生,可能很多小朋友不認(rèn)識(shí)徐老先生,可從以下鏈接了解到:
??? http://bbs1.netbig.com/thread-2848617-1-1.html
??? 這里借用二樓樓主的評(píng)論:
“在我國(guó)計(jì)算機(jī)軟件領(lǐng)域素有“南徐北楊”之說(shuō),“南徐”就是指南大的徐家福,“北楊”就是指北大的楊芙清。這兩位堪稱我國(guó)計(jì)算機(jī)軟件領(lǐng)域的奠基人、泰斗、絕代雙俠。”
??? 學(xué)術(shù)交流會(huì)開始了,徐老先生并不像一般的交流會(huì)開場(chǎng),好多專家打開PPT一頓狂讀,而是以問(wèn)答的形式展開,第一個(gè)問(wèn)題便是“什么是計(jì)算機(jī)?”,what?結(jié)果好多專家都沒(méi)有回答好,哈哈,是很多很牛的專家。后來(lái)回顧了中國(guó)軟件發(fā)展史以及中國(guó)軟件史上的大事情,具體的好多記不清出了,只記得最后一個(gè)問(wèn)題。一個(gè)同學(xué)搶到了提問(wèn)的機(jī)會(huì),問(wèn)到“怎樣學(xué)好計(jì)算機(jī)軟件?”,徐老先生微微一笑,用手撐著撐著桌子拿起粉筆在黑板上寫了12字:“基礎(chǔ)概念,基礎(chǔ)概念,基礎(chǔ)概念”。大家能感受到這12字的份量嗎?只要領(lǐng)悟到并且做到這12個(gè)字,你將受用終生。因?yàn)楹芏嗄甑墓ぷ鹘?jīng)歷告訴我,這12個(gè)字可以解決工作中所有的技術(shù)難題。
2. 請(qǐng)珍惜大學(xué)計(jì)算機(jī)基礎(chǔ)課程
??? 很多人說(shuō)大學(xué)里的計(jì)算機(jī)課程都沒(méi)有什么用,如果你有這種想法,說(shuō)明你的層次還不夠!如果你是一名學(xué)生并且學(xué)習(xí)了以下課程,請(qǐng)好好珍惜,用心去學(xué)。
??? 《數(shù)字電路技術(shù)》:會(huì)看一般的電路設(shè)計(jì)圖,懂得常見譯碼器、觸發(fā)器原理,最后在實(shí)驗(yàn)室動(dòng)手設(shè)計(jì)一下基本的加法器。
??? 《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》:熟悉CPU、RAM/ROM、BUS、DISK設(shè)計(jì)原理,至少要理解程序是怎么運(yùn)行的,比如從磁盤上加載程序到內(nèi)存,cpu從內(nèi)存加載指令到寄存器,CPU指令周期,指令流水線設(shè)計(jì),CPU緩存原理。
??? 《匯編語(yǔ)言》:熟悉常見指令,理解數(shù)據(jù)在寄存器中的變化,數(shù)據(jù)流在各個(gè)器件間的移動(dòng)。
??? 以上三門課程基本可以決定一個(gè)軟件工程師從事軟件開發(fā)的深度,對(duì)驅(qū)動(dòng)程序開發(fā)感興趣的同學(xué)一定好好學(xué)習(xí)這些課程。
??? 《操作系統(tǒng)原理》:具體來(lái)說(shuō)應(yīng)該是UNIX/LINUX操作系統(tǒng)原理,所有軟件的鼻祖,線程、進(jìn)程的概念,進(jìn)程、線程調(diào)度算法,地址空間的概念,內(nèi)存管理,文件管理等等,慢慢地你會(huì)發(fā)現(xiàn)所有的軟件設(shè)計(jì)都離不開這些基礎(chǔ)。
??? 《數(shù)據(jù)結(jié)構(gòu)和算法導(dǎo)論》:程序員的任督二脈,不多說(shuō)了。
??? 《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》:TCP/IP網(wǎng)絡(luò)協(xié)議棧,無(wú)論是移動(dòng)端、PC端、后端,天天都在用,不懂網(wǎng)絡(luò)的程序員世界將變得非常渺小。
??? 這些課程就是少林武功的心法,但是理解心法需要反復(fù)練習(xí)招數(shù),可惜我們的教育現(xiàn)狀是天天講心法,沒(méi)有像樣的招數(shù)。楊過(guò)當(dāng)年出道全真教,趙志敬只教心法,結(jié)果弄得楊過(guò)天天郁悶;現(xiàn)在好多在校大學(xué)生程序猿或許有點(diǎn)楊過(guò)的影子,解決辦法只有一個(gè):自己學(xué)招數(shù)!
??? 下面的招數(shù)來(lái)了,就怕你學(xué)不過(guò)來(lái),真是太多了!
3. 程序猿技術(shù)練級(jí)攻略
? ? N多年前有幸看到了耗子哥這篇文章,寫的太TDM的好了,分享給大家:
? ??程序員技術(shù)練級(jí)攻略 ?
??? 多年來(lái)我就是按照上文的指導(dǎo)一步步過(guò)來(lái)的,感覺(jué)天天都在進(jìn)步。建議大家把coolshell上的文章全讀了,并且去一步步實(shí)踐,N年后你會(huì)由衷感謝這篇文章的。
??? 這里順便提一句,由于自己太笨,windows好多概念我都學(xué)不懂,而且打心里不喜歡windows的文化(可能沒(méi)緣分),所以windows方向我是徹底放棄沒(méi)學(xué)。
4. 熱愛(ài)并持續(xù)學(xué)習(xí)Unix/Linux文化
??? 強(qiáng)烈建議每個(gè)程序員都要讀一下 《Unix編程藝術(shù)》,每次讀這本書都一種感覺(jué):理解UNIX文化,技術(shù)變得很簡(jiǎn)單;每次遇到設(shè)計(jì)上的問(wèn)題時(shí),我也總是翻一番這本書,往往都能找到答案。
??? 如果你想成為一名程序猿,并且windows學(xué)不會(huì)(windows 很多無(wú)聊的技術(shù):.NET/COM/C#/MFC......),請(qǐng)回歸Unix方向,從基本的Shell命令學(xué)起,學(xué)習(xí)C語(yǔ)言UNIX系統(tǒng)發(fā)開,掌握常見的系統(tǒng)調(diào)用,熟悉Unix IPC方式,好好研究socket編程。
??? 現(xiàn)在發(fā)現(xiàn)好多好多東西都是從Unix世界里來(lái)的,掌握了Unix你就掌握了軟件設(shè)計(jì)的靈魂,找到了技術(shù)源頭。
??? 以上就是要和大家分享的內(nèi)容,再次感謝耗子哥那篇分享,受用無(wú)窮。最后希望大家一起學(xué)習(xí),一起進(jìn)步。