敏捷人士認為**是最好的文件,蓋因只有**才能真實表達設計者與實現者的意圖。然而,一旦系統變得複雜,通過閱讀源**來理解系統就會變成一樁苦差事。系統千頭萬緒,直接閱讀源**,常常會陷入「只見樹木,不見森林」的困境。可以說,純粹理論描述的文件太空,直接閱讀源**又太細,任選其一都不利於對系統的了解。若能為二者搭建一座橋梁,問題就迎刃而解了。真實的源**加上明白通暢的理論描述,或許可以稱得上是學習軟體技術的「終南捷徑」。
郝慶豐先生顯然體會到了這一點,他的大作《返璞歸真-unix技術內幕》節選了10000行unix核心原始碼,並結合自己在unix環境下浸淫多年的寶貴經驗,對unix的內幕進行了徹底的解剖。剖析入木三分,鞭辟入裡,更有自己獨到的見解與專案實踐,說是嘔心瀝血之作,絕不為過。
以本書第三章《虛擬記憶體》為例,首先即以圖例表達出虛擬記憶體的本質(參見書中的圖3-1),然後再以七頁的篇幅內容向讀者介紹了虛擬記憶體的優點、pdp11/40的虛擬記憶體機制。有了這些理論內容作為鋪墊,再來學習unix的虛擬記憶體實現,自然就能水到渠成。作者對unix核心**的分析非常自信,對每一段重要**都有自己的看法與理解。從對malloc函式的分析可見一斑。首先給出函式原型與功能描述以及引數說明。在講解引數map結構時,以圖例方式(參見本書圖3-20)介紹了map資料結構指向記憶體塊的方式。接著,給出了malloc函式的**,並對實現的演算法與設計的原理給予了詳細的描述,甚至以流程圖方式(參見本書圖3-21)剖析了malloc的執行流程。最後,再給出乙個簡單案例,分析malloc的使用,並以圖例(參見本書圖3-22和圖3-23)說明函式執行的過程與結果。條理清晰,敘述得當,**、文字與圖例相結合,能夠更好地幫助讀者理解這些優雅但略顯艱深的unix核心**。通觀全書,作者一直保持這樣嚴謹卻又不失生動的風格,**並茂,增強了書的感染力。
本書的優秀還在於作者對主題內容的選擇。作者面對的讀者群應該是那些渴望深入了解作業系統原理與unix核心,希望提高程式設計能力、邏輯思維能力和演算法分析能力的開發人員。如果選擇某一廠商的unix系統,難免會顧此失彼。unix v6是現代各類unix作業系統的源頭,包含了對程序管理與排程、記憶體管理、檔案系統等的支援。了解了unix v6,可以說就是把握了類似solaris、hp-unix等作業系統的命脈。本書的價值不僅於此,即使是無心unix技術的c程式設計師,也能夠從本書提供的大量源**以及**闡釋中有所收益,畢竟這些**都是c語言的鼻祖kenneth thompson和dennis ritchie所編寫。閱讀大師作品,當然有助於我們的成長。無論是編碼風格、編碼習慣、高效程式設計以及各種巧妙技能的運用,包括大師的設計思想與原則,都散發出熠熠光輝。本書開啟了這扇門,登堂入室的道路就需要讀者自己的努力了。
「如果說我看得比別人更遠些,那是因為我站在巨人的肩膀上。」偉大的科學家牛頓如是說道。unix核心的**能夠開源,並為我們所用,是我們的幸運。站在大師級的unix開發高手的肩膀上,無疑讓我們能夠看得更遠。而本書則是一把階梯,可以幫助我們更加容易地攀爬上大師們的肩膀。如此而已,卻又如此令人欽佩與讚賞。
總結也是創新,返璞歸真
前幾天看fenny寫了一篇文章,提出了乙個觀點 翻新也是一種創新。我是感同身受,當然fenny的名氣如此之大,我也沒有必要去附和了。舉個例子,我前段時間碰到了merge語句乙個ora 00600的錯誤,在分析沒有思路的時候就去網上查,結果發現了乙個蠻有意思的現象,搜到的前幾篇文章都是我自己寫的,自己...
C 語言返璞歸真 指標篇番外
續 c 語言返璞歸真 指標篇 1 在指標篇 1 當中,提到了指標定義的兩種風格 int p 和 int p 這篇博文就來說說為什麼會有兩種風格的指標定義。首先需要說明的是這兩種風格的指標定義在語法上完全正確,任何的 c 語言編譯器都承認這兩種定義方式,甚至你以寫成 int p 但是這種寫法是完全不推...
返樸歸真的技術
toc 心得體會 其實嚴格意義上我也不是乙個計算機專業的人,要說的話,就是計算機相關專業,不過最近幾年,對計算機的喜愛就越發強烈了。倒不是因為工作在計算機相關領域,話說其實工作本身就只是用計算機的很淺的功能,對計算機的興趣完全來自於ta的優秀和樸實,還有就是ta給我帶來的一系列挫折。想當初,在學校裡...