給每個菜鳥程式設計師
的修養之道
(程式設計師的自我修養——鏈結、裝載和庫讀後感)
中國科學技術大學軟體學院 黃睿
cpu體系結構,彙編,c語音(包括c++)和作業系統,永遠都是程式設計大師們的護身法寶,就如少林寺的《易筋經》,是最為基礎又是最上乘的武功;學會了《易筋經》,你將無所不能,任你創造武功;學會了程式設計中的「易筋經」,大師們可以任意開發作業系統,編譯器,甚至是開發一種新的程式語言又或是全新的作業系統!
—————佚名
如果你是高手,linux hacker或者geek,請繞行
但如果你是新手
如果你曾好奇過windows系統目錄下和軟體目錄下大堆大堆的dll檔案是什麼
如果你曾疑惑過我寫下的**經歷的怎樣的歷程最後怎樣到達了記憶體,編譯器每天用,它到底做了什麼
如果你已經學習或接觸了c,彙編,計算機結構,但還是沒辦法把三者的關係理的很順很清或者對應起來
那麼深入研讀一下這本書絕對是對你的一大幫助 ——
--「豆瓣書評」
正文:
大約是在考研的時候在多看上看見了此書,初聽書名還以為是本講述諸如程式設計思維鍛鍊一類的書籍,也就不在我閱讀計畫之列。直到來科大讀研時候,詫異的發現,此書赫然是華保健老師講述的資訊保安課程推薦教材同時亦是孟寧老師推薦讀物,遂借旁人書一閱,閱之欲罷不能,購買之,用了月餘時間拜讀之。
介紹完了我看此書的來龍去脈,那這本書究竟講述的是什麼呢?
《程式設計師的自我修養》書名很霸氣,但是其實書中內容都概括在小標題中了,即
鏈結、裝載和庫。
你可能會問我們為什麼要掌握這些知識,我不了解這些,可是並不妨礙我寫出漂亮的**啊 然而
作為乙個程式設計師,
也許一輩子都不了解這些
底層知識
,僅僅用掌握的程式設計
技巧,各種奇妙的
api函式,也可以編出
合格的程式來,但是就像
侯捷形容不了解mfc的機制而使用mfc程式設計的人那樣,「編出的只是一些拼積木一樣的玩具」。
只知所以然,而不知其所以然。 而
通過學習這本書
我們能夠窺探
程式設計軟體的執行機制和原理,
譬如最簡單的
hello world程式(c/c++)的執行可以分解成四個主要的步驟:分別是
預處理(主要處理那些以「#」開始的預編譯指令,將.c檔案和與之相關.h檔案通過被預編譯器預編譯成乙個.i/.ii檔案);編譯
(將預編譯器處理後的檔案進行一系列詞法分析、語法分析、語義分析及優化後生成相應的彙編**檔案);彙編
(將編譯後得到的彙編**檔案翻譯成本地機器能執行的機器指令,此時可得到目標檔案「非執行檔案」)
;為什麼彙編後還不是得到執行檔案呢?這裡涉及第四個步驟
鏈結(將一系列的目標檔案組合鏈結起來最終生成目標執行檔案)。
這樣我們就能將我們所學過的c,彙編,編譯原理作業系統的知識給串聯起來,深刻的了解
我們所寫
程式是如何變成可執行檔案的
,從**的預處理,編譯,彙編,到鏈結生成執行檔案的結構,到執行態時對程式記憶體的分配,都有了乙個整體的感覺,增強了我們對程式的控制力
,不再有霧裡看花的感覺。
每個合格程式設計師的自我修養!
世界上,程式設計師界的大神很多,諸如margaret hamilton 阿波羅計畫飛行控制軟體的幕後英雄 donald knuth 計算機程式設計藝術 的作者 ken thompson unix 締造者 等等,當你去了解他們的經歷時,你會發現他們能夠達到這種登峰造極的境界,無非是天賦加上努力。要成為...
程式設計師的修養
武功者,包括內功 外功 武術技擊術之總和,有形的動作,如支撐格拒,姿式回環,變化萬千,外部可見,授受較易,晨操夕練,不難熟練,而無形的內功指內部之靈慧素質,即識 膽 氣 勁 神是也,此乃與學練者整個內在世界的學識水平密切相關,是先天之慧跟悟性與後台智慧型的總成,必需尋得秘籍方可煉成。迭代開發,價值優...
IT人的成長與修養 程式設計師修煉之道
1 從一門語言開始 初學程式設計,最忌諱就是貪多。其實程式設計的道理都是相同的,通一則知百,但是知百卻不一定能夠通一!所以切記要 專心使用一門語言 把它學透,以後自然通一則知百!通過實踐證明,vb和delphi是使用者最多的語言。2 規範的 程式設計師與程式設計師之間的交流主要還是靠源程式,所以 一...