如果直譯原書名,這本書更應(yīng)該被稱為“以程序員的視角理解計算機(jī)系統(tǒng)”。它不是一本適合廣泛閱讀的科普讀物,反倒比較適用于那些想要寫出更快、更可靠程序的程序員。
在外界看來,闡述系統(tǒng)、C語言和匯編語言,該書必然是晦澀而深奧的。但其實不然,它是一本面向計算機(jī)專業(yè)初學(xué)者的好書,是頂尖學(xué)府大咖結(jié)合多年教學(xué)經(jīng)驗寫出來的。作為一本入門級別的專業(yè)書,該書所談內(nèi)容并不深入,不會把某個話題挖掘得過于細(xì)節(jié)化,而往往能從淺顯問題中一針見血地指出關(guān)鍵所在。通過掌握程序是如何映射到系統(tǒng)上,以及程序是如何執(zhí)行的,閱讀者能夠更好地理解程序行為的發(fā)生及效率低下的原因。
全書的主要論題涵蓋甚廣,包括了數(shù)據(jù)表示、C程序的機(jī)器級表示、處理器結(jié)構(gòu)、程序優(yōu)化、網(wǎng)絡(luò)編程和并發(fā)編程等。它們?nèi)绾斡绊憫?yīng)用和系統(tǒng)程序員,在它們的作用下計算機(jī)如何設(shè)計和工作,操作系統(tǒng)包含哪些重點及其作用又是什么……這是作者想要極力表達(dá)清楚的。隨著閱讀的推進(jìn),透過程序員視角,讀者能夠清楚地明白:學(xué)習(xí)計算機(jī)系統(tǒng)的內(nèi)部工作原理對計算機(jī)科學(xué)研究者和工程師的工作具有怎樣的幫助,從而更有利于相關(guān)從業(yè)者為進(jìn)一步學(xué)習(xí)計算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)、編譯器和網(wǎng)絡(luò)互連做好準(zhǔn)備。
以講述數(shù)據(jù)表示為例,該書說明了能夠近似地表示整數(shù)和實數(shù)的數(shù)字方法是有限的;而轉(zhuǎn)換到有關(guān)高速緩存的敘述,該書討論了矩陣代碼中的循環(huán)變量順序是如何影響程序性能的;在討論網(wǎng)絡(luò)互連時,該書描述了并發(fā)服務(wù)器如何能有效地處理來自多個客戶端的請求……作為被眾多專業(yè)人士稱為“最偉大的計算機(jī)教材”之一的著作,《深入理解計算機(jī)系統(tǒng)》旨在解釋計算機(jī)系統(tǒng)的所有本質(zhì)概念,并向讀者展示這些概念是如何實際地影響應(yīng)用程序的正確性、性能和實用性。與其他主要針對系統(tǒng)構(gòu)造人員的系統(tǒng)類書籍不同,該書更像是為軟件和硬件之間搭起了一個橋梁,給出一種幫助讀者分別從硬件和軟件的角度去理解一個程序及其行為的途徑,而這從某種程度上填補(bǔ)了國內(nèi)計算機(jī)系統(tǒng)教學(xué)中的一項空白。
有人說,這本書最大優(yōu)點在于覆蓋面廣泛、可以幫助讀者充分理解概念。它能讓讀者很清楚地在腦海中構(gòu)造一個層次型的計算機(jī)系統(tǒng),從最低層數(shù)據(jù)在內(nèi)存中的表示(如我們一直陌生的浮點數(shù)表示)到流水線指令的構(gòu)成、虛擬存儲器、編譯系統(tǒng)、動態(tài)加載庫,以及最后的用戶應(yīng)用。同時,它還能使讀者對計算機(jī)系統(tǒng)各組件的工作方式有基本的理性認(rèn)識,在一定程度上獲得鍛煉計算思維的方法。
書中提供了大量的例子、練習(xí)及部分答案,每一個基本概念都有相應(yīng)的筆頭或程序試驗,對于加深讀者印象及理解深有裨益。這也能夠解釋為什么它的英文原著久負(fù)盛名,被當(dāng)做課程教材使用多年。