追過很多新技術,迷茫于還有太多東西要學,有些找不到方向、不知所措。常在一個叫酷殼的網站上轉悠,漸漸想明白了,其實學習技術也像看電影看書一樣,要看就看經典的。我們的生命如此短暫,作為程序員的職業生涯可能會更短。與其追逐各種新潮的技術,不如把有限的精力投入到經典的技術之中。
平時酷愛看各種技術書籍,但缺乏系統的梳理。讀書感悟都散落在每本書的字里行間和空白處。于是借著準備從最經典、最基礎知識學習的機會,開始由底向上,系統地整理以前所學。
一、計算機數學
大學時認真學習了編程相關的課程,但一些基礎課程由于不知道跟編程是什么聯系所以失去了興趣、沒有學好。工作了兩年,才慢慢發覺大學時一些課程的用處:微積分(分析算法性能時一些求極限)、線性代數(矩陣在三維轉換中的作用)、概率統計、編譯原理(理解源代碼是如何編譯、鏈接,最后被操作系統載入執行的)。現在雖然沒有大塊時間(其實也沒必要)重新復習這些課程,但計算機相關的數學知識基本可以包含在下面兩本書中:
可以認真學習這這兩本書籍。如果閱讀過程中發現不懂的,可以去翻閱大學課程中更基礎的數學書。這樣不會迷失在過多的理論書籍之中。推薦本微積分的課外讀物,齊民友的《重溫微積分》,看了一點感覺還不錯。
二、C語言
學習過計算機的基礎數學知識后,可以先不急于去看數據結構和算法。先靜下心來,仔細學好C語言。相信對C語言更深入的學習,會加深之后對數據結構和算法知識的理解。
用心做了《C程序設計語言》中的小習題,算是對C語言編程的熱身了。這些書籍都很經典(據說 :),可以先仔細看一遍,以后再回過頭來重讀,相信到時會有更多的感悟。
三、數據結構與算法
掌握了數學基礎知識,也學習了C語言,接下來當然就開始學習編程最核心的部分-數據結構和算法。《算法導論》和《計算機程序設計藝術》三卷當然很經典,但拜讀之前可以先學習一些更加入門的教材。
要多做題,不僅有利于接下來計算機系統的學習,還對日后找工作、做筆試題大有裨益。盡管有些枯燥,但若能堅持下來,絕對能提高自己的分析設計能力。
四、計算機系統
又是有些理論的東西,其實也可以先跳過這部分,直接學習下面更為具體的技術。但要想進一步提高自己,早晚都要回過頭來系統的學習這些知識。高手都是有很強的系統性知識嘛~
概述
匯編語言
操作系統
數據庫
《數據庫系統導論》
編譯原理
網絡
從大學到現在,只有兩次感覺自己突破了瓶頸大幅度提高。一次是在一個項目中用了大量的T-SQL特性,解決了很多實際問題,因而對SQL有了更深的理解。另一次就是對匯編語言及操作系統知識的學習。一直使用著Java,對底層系統的知識還停留在大學課堂上。今年初,先讀了《深入理解計算機系統》有了個大概了解,之后學習了匯編語言那兩本書,緊接著就開始啃那本《自己動手實現操作系統》。雖然沒有讀完,但這一路走下來,兩三個月內對匯編語言的基本語法、80X86 CPU結構、尋址方式、實模式和保護模式、進程信息塊、頁等等曾經課堂上的概念都有了實實在在的了解。也明白了那句話:真正的程序員是應該懂底層知識的。知道我們每天對著編程的機器是怎樣運轉的,才會明白對編程的本質。
五、具體平臺開發
終于可以在具體平臺上開始編程實踐了。Windows平臺有很多要學的,微軟的東西更新換代很快(追的好累,讓人又愛又恨),但一定要把握重點。Windows平臺上主要學習圖形界面程序的結構,界面是怎樣布局的,消息是怎樣傳遞的等等。還有一些比較經典的技術像MFC、COM等,也可以簡單學習一下。
《COM本質論》
重頭戲是Unix/Linux平臺的學習!Unix/Linux平臺上有太多優秀的代碼值得我們閱讀學習。在開始學習Linux平臺上編程前,可以先裝個Ubuntu虛擬機對Linux有個簡單了解。掌握基本的命令,會寫簡單的Makefile和Shell腳本,會用GCC和GDB編譯調試C程序。
還有本個人認為不錯的入門書《Linux C編程一站式學習》。
六、高級語言
最后才是Java和.Net的學習。有了前面的學習過程,此時再學習高級語言應該是輕車熟路了。可惜的是大學時卻本末倒置了,學了C++和一些基礎課程后都沒怎么派上用場,之后就一直用Java開發,導致底層知識一點都不牢固真實遺憾~
高級語言的API、框架很多很多,當然書也很多了,就不推薦了。
N、系統內核
Linux內核源碼很多,里面包含很多算法和設計,學習起來真的很難。但挑重點的學習了解一下,對提高編程水平還是有很大幫助的。比如操作系統怎樣通過Loader加載,進程的切換和調度等。學習Linux四庫全書:《Linux內核設計與分析》、《深入理解Linux內核》、《Linux內核源代碼情景分析》、《Linux設備驅動開發》。再推薦一本《Orange’s 一個操作系統的實現》。
最重要的一點:Readthefuckingsourcecode!
N年寒窗苦讀后,也許可以到達這個階段,也許吧~
看到累了也別忘了放松一下,讀一些小散文:
《代碼之美》、《Java夜未眠》、《Unix編程藝術》、《瘋狂的程序員》...
好了,列了這么長的學習計劃勉勵自己,希望對看到此貼的人會有些許幫助。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
