計算機專業的入門書籍(第一篇部落格)
計算機專業的入門書籍
今天是2017/4/6,終於開始動手寫自己的部落格了,寫點什麼好呢?
記得是去年4月份接觸java,開始轉向軟體的,一晃時間過去滿一年了。
恰好最近幾個月拜訪了大牛部落格、知乎、豆瓣、掘金等諸多論壇、網站,參閱了很多計算機專業教育者和身邊從業者的過來人經驗,經過思索、整理,決定寫一篇計算機專業入門書籍的部落格,全文主要以推薦書籍為主,部分書籍內容會有重複的地方,挑一本仔細翻看即可。
基礎入門
主要是一些基礎課程,適合計算機專業本科學生和對計算機感興趣學習者。
數學基礎
- 高等數學
- 線性代數
- 概率論
- 組合數學 Richard A Brualdi著
硬體基礎
- 電路理論
- 類比電子技術
- 數位電子技術
- 微機原理
軟體基礎
計算機基礎和組成原理
- 《電腦科學概論》 J·Glenn Brookshear著
- 《電腦科學概論》Nell Dale、John Lewis著
- 《電腦科學導論》Behrouz A.Forouzan著
- 《計算機系統概論》Yale N.Patt大牛著,這本書大力推薦,全書採用了“自底向上”的策略講解,比CSAPP簡單一點,程式猿可以看看。
看完上面這些書籍,可以再把下面這兩本神書作為過渡,這兩本書和上面推薦的書中會出現不少計算機組成原理方面的知識,這部分內容涉及的知識點較多,在這個階段看,內容有一定的難度,建議是反覆看,按階段看,在學習了後面的知識後,再回過頭來看。
- 一本足矣,號稱比等質量黃金還要珍貴的書籍——《深入理解計算機系統》簡稱:CSAPP,它把作業系統,計算機組成原理,數位電路,編譯原理,網路,計算機體系結構等程式設計師需要了解的核心知識彙集在一起, 讓你迅速的打下紮實的基礎。 這本書有700多頁,是CMU的本科教材,吃下來需要花費不少精力,推薦大牛部落格,可以帶你學習。小土刀——不周山之讀薄/讀厚 CSAPP。加油!
- 《計算機系統要素》 | 書摘 | 不聞不若聞之,聞之不若見之,見之不若知之,知之不若行之;學至於行而止矣。
基礎進階
這個階段的學習,我主要從一個程式猿的角度來寫,這個階段的學習效果,對後續計算機學習和從業都有著至關重要的影響。
資料結構和演算法
學習資料結構,一定要注意多實踐,學會從實際問題中抽象出資料,所以下列書籍的習題應嘗試著獨立完成。
- 《演算法:第四版》這本書是採用Java語言實現的,裡面用到了一些作者自己的庫,作者提供有自己的開發平臺,可以參照知乎這個問題的回答:演算法第四版所用到需要下載的庫?
- 《資料結構和演算法分析:Java語言描述》這本書和演算法參照著一起看。
- 《演算法導論》簡稱:CLRS 不多說,大家都懂。書堅持讀起來有一定難度,若讀來有一定困難,可以先放一放,後續有需要再回頭看。
作業系統
- 《現代作業系統》本書是作業系統領域的經典之作,書中集中討論了作業系統的基本原理,包括程序、執行緒、儲存管理、檔案系統、輸入/輸出、死鎖等,同時還包含了有關電腦保安、多媒體作業系統、掌上計算機作業系統、微核心、多核處理機上的虛擬機器以及作業系統設計等方面的內容。
- 《30天自制作業系統》親自動手體會一下作業系統的製作, 把書本知識都用起來。 另外Linux 0.0.1的原始碼也是必讀的, 尤其是計算機加電以後,怎麼把作業系統給Boot起來的。
記住,作業系統一定要結合實際的作業系統來學習。看作業系統的概念,設計,更應當看作業系統的使用,實現。Linux就不多說了,基本是個作業系統教科書都是拿*nix舉的例子。Windows可以參考MSDN,微軟的MSDN簡直是一個超級寶庫,經常去挖一挖,你絕不會失望的。
編譯原理
- 《程式語言實現模式》 對於那些一門心思想發明個自己語言的同學,一定要去看看這本書, 它會教你寫真正實用的解析器、翻譯器、直譯器等語言應用。
記住,作業系統一定要結合實際的作業系統來學習。看作業系統的概念,設計,更應當看作業系統的使用,實現。Linux就不多說了,基本是個作業系統教科書都是拿*nix舉的例子。Windows可以參考MSDN,微軟的MSDN簡直是一個超級寶庫,經常去挖一挖,你絕不會失望的。
計算機網路
- 《TCP/IP詳解》三卷套 對於將來想做通訊和網路的同學, 幾乎是必備。 可惜中文版翻譯的比較爛, 中英文對照看吧 。
- 《Unix網路程式設計》 《Unix環境高階程式設計》 《TCP/IP詳解》(三卷本)的作者的大作。
資料庫
- 閱讀SQLite的原始碼, 一個開源的嵌入式關係資料庫, 只有那麼幾萬行c 語言程式碼, 吃透以後功力絕對大漲。
計算機組織和架構
這部分內容,相當於對計算機組成原理的進一步深入,難度還是比較大的,慢慢研究最好。
- 《計算機組成與設計 硬體/軟體介面》 | 書摘 | 從軟硬體介面來看計算機 。
- 《計算機體系結構 量化研究方法》 | 書摘 | 從定性分析的定量分析的巨大進步。
- 《計算機組成與體系結構 效能設計》 | 書摘 | 從效能角度出發也是很好的認識計算機的方式。
- 《計算機組成 結構化方法》 | 書摘 | 計算機系統由三個部分組成:處理器、儲存器和輸入輸出裝置。
這幾本書在小土刀書書影音都有推薦,這裡直接引用,畢竟大牛!
程式語言
本科的時候最先學習的是C語言,後來學習了組合語言。目前比較火的重量級語言也就那麼幾種。C語言誕生於上世紀70年代,C++語言誕生於上世紀80年代,Java語言誕生於上世紀90年代,而C#剛好是2000年推出的,所以作為面向物件開發的三大語言C++、Java、C#基本是相互滲透,相互吸收,相似的地方很多,選擇其中一個學習即可,推薦Java,在國內使用者量龐大,更重要的是入門相對於C++來說簡單一些,而C#主要是微軟在用。
另一方面,由於近些年來人工智慧大熱,Python語言開始強勢崛起,“人生苦短,我用Python”。新手也可以選擇Python入門,現在一些國外高校,教授的第一門語言已經從C語言轉向Python了。
由於本渣渣還在Java坑裡面。。。。,就推薦一些Java入門的資料,附帶Python資料。
Java學習資料
- 《Head First Java》《瘋狂Java講義》 這兩本書是青菜蘿蔔各有所愛。
- 傳智播客基礎班視訊(畢向東)
Python學習資料
其他資料
路漫漫其修遠兮,學習的路上必然是枯燥的。沒有含著金鑰匙出生,就需要一步一步的積累自己,在做自己感興趣的事情同時,給社會帶來價值,自然就會有收穫!