1. 程式人生 > >對程式設計師技術練級攻略的補充

對程式設計師技術練級攻略的補充

1. 併發程式設計

隨著單機上CPU核數的不斷增多,以及網際網路中大型網站每天產生的海量資料,併發程式設計將會成為程式設計師必不可少的技能。

學習《Erlang程式設計》和Scala,理解函數語言程式設計,搞清Actor模式以及併發程式設計的訊息傳遞方式。

2. 組合語言

懂一些計算機底層的知識才會明白咱們每天使用的計算機硬體是怎樣執行的,作業系統是怎樣啟動的,寫好的原始碼是怎樣編譯成機器碼被作業系統載入的。

學習《組合語言》(第二版)、《80x86組合語言程式設計教程》,瞭解計算機的構造CPU、記憶體、硬碟等,搞明白CPU是怎樣定址,什麼是保護模式,保護模式和真實模式有什麼不同。

另外推薦《程式設計師的自我修養》、《天書夜讀-從組合語言到Windows核心程式設計》、《琢石成器:Windows32位組合語言程式設計》。

3. 作業系統核心

Linux核心原始碼很多,裡面包含很多演算法和設計,學習起來真的很難。但挑重點的學習瞭解一下,對提高程式設計水平還是有很大幫助的。比如作業系統怎樣通過Loader載入,程序的切換和排程等。

學習Linux四庫全書:《Linux核心設計與分析》、《深入理解Linux核心》、《Linux核心原始碼情景分析》、《Linux裝置驅動開發》。再推薦一本《Orange's 一個作業系統的實現》。

最重要的一點:read the fucking source code!

4. 遊戲開發

遊戲尤其是3D遊戲開發是學習數學和演算法的一個好途徑,由於3D遊戲通常很耗費資源,因此也是學習程式碼優化的好方法。

比如怎樣渲染圖形的表面,怎樣把空間座標上的3D圖形是怎樣通過矩陣運算投射到攝影機螢幕上的,比如學習分析計算關鍵程式碼段的大O值並試著優化。

推薦《3D數學基礎:圖形與遊戲開發》,以及DirectX的學習。

5. 數學和演算法

這是程式設計的基礎,程式設計一路學到底層東西時,自然而然就想補一補自己的數學和演算法知識。

數學:《什麼是數學》、《具體數學》。

演算法:《計算機程式設計藝術》、《演算法導論》。

通過做題檢驗自己,書後習題以及各大公司的筆試題。帶著問題去看這些書,也許會增加一些動力。

6. 散文雜文

學累了,該放鬆一下了。

《程式碼之美》、《Java夜未眠》、《Unix程式設計藝術》、《瘋狂的程式設計師》

看著看著就睡著了,夢到有一天自己成為武林中的程式設計高手。。。