CSAPP閱讀感受及最近狀態

2021-07-23 16:36:19 字數 1286 閱讀 2358

從學校圖書館借的《深入理解計算機系統》(computer system:a programmer』s prospective)已經翻了一遍了,讀這本書的時候確實不像我之前讀c++ primer plus那麼仔細了。只能找個藉口安慰下自己:最近招聘會筆試太多,要用的太急,只能囫圇吞棗看個大概。

從我第一遍讀這本書的角度來談談個人理解吧。首先是這本書太「厚」,一方面是700頁的書,看起來就很大一塊頭;另一方面就是這本書涵蓋的東西實在太多,哪怕僅僅都是講的淺顯的基礎知識。

從結構上來看,這本書分成了兩個大的部分:程式結構和執行在系統上執行程式。從字面上就可以理解,前一部分講的是乙個程式的結構是怎樣,計算機是如何執行這個程式的 ,主要是以程式的機器級表示和計算機體系結構為主;第二部分則講的是我們所熟知的在作業系統上怎麼跑乙個寫好的程式,主要是涉及系統級的呼叫知識。

其實這樣看來,這本書的內容是十分清晰的,也是乙個循序漸進的過程。但是涉及到程式的機器級表示,說白了就是組合語言,讓我看的比較懵。並不是書中的知識太過深奧,作者反覆強調現在程式設計師並不要求會寫彙編,但會看懂彙編是程式設計師的優秀品質。事實上,我們熟悉的變成語言比如控制分支結構,對應為彙編還是挺好理解的,但是當乙個程式進行過程呼叫,並用棧幀來儲存對應資訊的時候,我的理解就有點跟不上了。隨後的計算機結構體系,指令集體系結構更是讓我迷失在了海量資訊裡面,進一步在機器級別優化程式效能更是雲裡霧裡了。好在隨後的儲存器層次結構又能與自己已有的知識體系掛上鉤,我又有了再學習新知識而不是看天書的感覺。

好在第二部分在系統上執行程式,就是我們平常正常的寫程式並執行,加上我之前有看過並跟著做過乙個linux的網路程式設計專案,對linux下的程式設計也熟悉了點,我在看這部分的時候還是比較順利的。

快速看完書確實讓我懂了不少以前不知道的知識,但是隨之而來的也有快速學習的弊端,基礎掌握的不紮實。由於大部分內容都只是通過看知識點去學習,巨集觀上來看,有助於快速將我的知識體系穿起來,比如從更加底層的視角去看待程式的執行狀態,讓我更加理解程式的本質,對編寫程式也有了乙個新的理解。但是沒有經過練習,這些知識點只能在我的知識體系上作為乙個索引,我知道這個內容,可能大概明白是什麼用,但是更具體的實現我就答不上來了。就好比我是一植物,我慢慢的自上而下的生根,企圖去理解大地的本質,結果去發現自己僅僅知識是一顆盆栽裡面的幼苗,而這顆盆栽隨時可能從陽台上摔下。我要努力從盆栽中上長出更長的根鬚,深深的紮進更深的土壤中,讓自己成為一顆真真的大樹。

寫這篇文章,最主要的原因的最近面試筆試階段,讓我對自己的知識體系感到了恐慌,最初只是認為自己學習的廣度不夠,但慢慢的我覺得學習的內容深度沒法支撐我對程式設計的認識。

最後提醒一下自己,學習程式設計是我的興趣,不忘初心。

CSAPP閱讀筆記

寫這個部落格呢,沒有其他的意思,就是覺得自己寫個部落格記錄閱讀的程序能讓我堅持讀下去,順便可以記錄一下學到的東西,做個總結。從第二章開始。break 發現這個和計組好像很不一樣,嗯,還是先放棄這個好了。2017 10 17 講解訊號儲存的方式,以及c語言的各種運算。1.16進製表示法 ox開頭的均為...

CSAPP閱讀筆記 更新

位元組 最小可定址的記憶體單位 虛擬記憶體 機器級程式會將記憶體視作乙個非常大的位元組陣列,稱為虛擬記憶體 記憶體的每個位元組都由乙個唯一的數字來標識,稱為它的位址,所有可能的位址的集合就稱為虛擬位址空間 a 1010 c 1100 f 1111 字長 表明指標資料的標稱大小,決定虛擬位址空間的最大...

再次閱讀,感受頗多

再次閱讀,感受頗多 記得四年前剛開始工作時從公司拿到的第一本書,就是這本 程式設計師修煉之道 英文版 作為新入職員工study group的學習材料,當時在senior engineer帶領下和其他同事一起學習了這本書。雖然之前就聽說這是一本好書,當時看的時候也只是覺得講的都有道理,但這些是很自然的...