大众小说网 - 无弹窗无广告小说在线阅读

大眾小說網 > 讀書成神豪 > 第197章 實驗室

第197章 實驗室


  收回了思緒,章杉很快就將注意力放在了《Computer  Systems:A  Programmer's  Perspective》

  這本書的中譯本為《深入理解計算機系統》

  本書從程序員的視角詳細闡述計算機系統的本質概念,并展示這些概念如何實實在在地影響應用程序的正確性、性能和實用性。

  全書共12章,主要內容包括信息的表示和處理、程序的機器級表示、處理器體系結構、優化程序性能、存儲器層次結構、鏈接、異常控制流、虛擬存儲器、系統級I/O、網絡編程、并發編程等。書中提供大量的例子和練習,并給出部分答案,有助于讀者加深對正文所述概念和知識的理解。

  章杉很快就開始了閱讀。

  雖然這本書是全英文的,但在章杉面前這點詞匯量基本不夠看的,完全是小菜一碟。

  通過閱讀,章杉發現本書的最大優點是為程序員描述計算機系統的實現細節,幫助其在大腦中構造一個層次型的計算機系統,從最底層的數據在內存中的表示到流水線指令的構成,到虛擬存儲器,到編譯系統,到動態加載庫,到最后的用戶態應用。

  通過掌握程序是如何映射到系統上,以及程序是如何執行的,讀者能夠更好地理解程序的行為為什么是這樣的,以及效率低下是如何造成的。

  《Computer  Systems:  A  Programmer’s  Perspective》這本書強調的便是作為一個程序員的基本知識。SICP來自世界頂級學府即大名鼎鼎的《Structure  and  Interpretation  of  Computer  Programs》,在國內可以買到中譯版,即機械工業出版社的《計算機程序的構造與解釋》),而《Computer  Systems:  A  Programmer’s  Perspective》也同樣出身名門:CMU(卡耐基梅隆大學)。

  雖然沒有SICP那么歷史悠久,但它被世界幾百所大學(幸運的是也包括章杉所就讀的復旦大學)用作教材也有好多年了。

  這本書的中譯名為“深入理解計算機系統”,章杉非常,十分,以及百分之一百二十地不滿意。章杉這么說的原因在于這個譯法完全扭曲了書的本意。

  如果直譯原書名,應該是類似于“以程序員的視角理解計算機系統”,何來“深入”二字。可能在國內編輯看來,這是講系統的,用C和匯編語言的,因此很“深入”,但章杉認為這只能說明國內技術氛圍的淺薄。因為事實上,這是一本入門級別的書,這本書其實并不“深入”,它談論的內容還是相對比較淺的。

  但“淺”不代表“淺薄”,寫一本面向初學者的好書往往是非常困難的,因此無論是SICP還是《Computer  Systems:  A  Programmer’s  Perspective》,它的作者都是頂尖學府的教授,結合多年教學經驗而寫出來的。

  CMU把這本書作為“Introduction  to  Computer  System”課程的教材,是面向計算機專業低年級學生的“計算機系統介紹(導論)”,可能這些學生只是剛剛了解如何使用一門高級語言——如Java進行編程,對于計算機系統的工作方式等話題可謂一點都沒有接觸過,而《Computer  Systems:  A  Programmer’s  Perspective》對讀者的背景也只要求是“一些編程經驗”而已。

  這本書的話題覆蓋面很廣,從計算機的基本組成,二進制數據表示方式,到機器級別的指令,CPU工作方式,存儲結構和優化,操作系統的虛擬內存管理,程序運行方式,I/O,網絡、到(較底層)程序性能優化和并行程序開發等等。所以,它其實覆蓋了“計算機組成原理”,“操作系統”等許多課程的內容,其中的許多話題都能再次展開,繼續深入,都能再變成一本,甚至N本經典。事實上,在高年級的計算機專業課程設置中,都會有更加縱向的內容出現。

  因此,如果有人說它“底層”,章杉同意。

  但如果說它“深入”,至少章杉不那么贊同。

  “覆蓋面廣”,其實就是這本書的最大優點。它告訴我們計算機是如何設計和工作的,操作系統有哪些重點,它們的作用又是什么。《Computer  Systems:  A  Programmer’s  Perspective》的目標其實便是要講清楚原理,但并不會把某個話題挖掘地過于深入,過于細節。例如書中第4章使用了自己“設計”和“實現”的“Y86”處理器架構,便是為了簡化X86指令集,使課本內容在能夠說明問題的前提下也不至于太復雜。因此,讀完(其實也并不一定要讀完,說實話章杉也沒有讀完)這本書后,我們就可以對計算機系統各組件的工作方式有了理性的認識。

  那么,這本書適合什么人閱讀呢?對于這個問題章杉也有過猶豫。

  章杉對《Computer  Systems:  A  Programmer’s  Perspective》推崇備至。

  無論是本科生還是打算新上手編程實戰的程序員都能從這本書有所收獲。

  即便你是一個前端JavaScript程序員,也可以從《Computer  Systems:  A  Programmer’s  Perspective》這本書中獲益。如果您是.NET程序員,那么您更加適合看這本書了。

  說一句“豪情萬丈”的話:如果不知道的話,這如何算是一個優秀的程序員?

  這本書和平時的工作可能的確不一樣,相比起來“底層”了一些,但是它還是會把“底層內容”控制在一定深度之內,而不會講某個具體話題挖掘到“事倍功半”的程度。而事實上,雖然在進行.NET開發的時候我們已經在一個較高的抽象上工作了,但是我們的程序還是運行在操作系統上,還是在遵循著某個規律在運行著,了解一些內部的工作機制也有助于我們寫出更好的應用程序。

  說來也奇怪,雖然各種語言,框架發展地越來越好,按理來說我們寫程序也應該越來越容易。但是現在看來,一些基礎性的內容反而也變得越來越重要了,例如在并行計算面前,計算系統的一些細節,如內存一致性模型,線程調度,程序的局部性(Locality)又被提上臺面,否則我們很難寫出高效的應用程序。同樣,一些如函數式編程,Monad等在幾年前看起來十分科研型,數學化的事物也離我們越來越近了,如tive  Framework等等,其實它們都已經是我們身邊的事物了。

  《Computer  Systems:  A  Programmer’s  Perspective》這本書覆蓋面很廣,章杉認為并非要一字不漏地讀完才行。

  根據章杉的個人觀點,我們應該著重閱讀書的第1章“A  Tour  of  Computer  Systems”和第一部分“Program  Structure  and  Execution”(從第2章開始,大約占據了書中一半篇幅),其中包含了數據的機器級別表示方法,匯編語言和執行方式以及CPU架構方面的內容,我們應該關鍵性地理解其原理。

  如第6章“Optimizing  Program  Performance”提出了許多種機器級別的優化方式,在現在看來,其中的某些方式過于細致,乃至在實際工作過程中已經不再推薦了(如內聯一些方法以提高性能),我們要在把握住“為什么”而并不是單純的吸收“怎么做”。對于書中的第二部分“Running  Programs  on  a  System”主要講述的是操作系統方面的內容,可以讀得略為簡單一些,但其中的第ual  Memory”,它談論了操作系統中虛擬內存機制的各個方面,非常關鍵,需要細讀。至于書中的第三部分“Interaction  and  Communication  Between  Programs”便可以更加“選擇性”地閱讀,章杉只閱讀了第urrent  Programming”,而其他兩章都只是簡單地掃過而已。

  作為經典的教材它一定有許多附加資源,例如在它的官方站點給出了一些鏈接,其中最關鍵的可能是學習者站點,其中包括這本書所需要的各種工具,參考文檔等各種資源。

  章杉讀書的過程中又想起來之前某大牛提及兩本書,一本是國產書精品《鏈接、裝載與庫》。

  這本書主要講解了編譯過程中的“生成文件”的過程,以及應用程序執行時文件是如何被操作系統加載的,并且同時涉及到ows兩個平臺。

  第二本書書是《Windows  Internals  5th  Edition》,人民郵電出版社已經引進了其影印版。

  和章杉現在讀的這本“蹭蹭不進去”的書相比,這的確是本“深入”級別的書。

  基本上覆蓋了Windows內核的方方面面,包括系統架構,內存管理,線程調度,安全機制,文件系統等各種話題,對于我們Windows平臺上的程序員,這方面內容可能更有針對性。

  章杉前不久剛剛購入這本書,更別提仔細閱讀了。

  當然所謂購書這個行為,自然是吩咐駱常慧做的~

  現在這種小事章杉根本不太關注,雖然章杉每分鐘讀書都有收入~

  根本沒辦法統計好不好,除了特別大段時間讀書收入,章杉根本不太在乎這些錢~

  【收集免費好書】關注v  x【書友大本營】推薦你喜歡的小說  領現金紅包!

  以章杉現在的生活,哪怕是不作任何改變。

  每天銀行里的錢也會帶來大量利息,而哪怕不刻意去花錢,日常流水也高的嚇人……

  章杉注意到這本書和《C專家編程》有些地方是相通的~

  章杉注意到現在讀的這本書里面提到的軼事。

  “20  世紀60年代是大型、復雜操作系統盛行的年代,比如IBM  的  和  Honey-  well的  Multics  系統。是歷史上最成功的軟件項目之一,而  Multics  雖然持續存在了多年,卻從來沒有被廣泛應用過。貝爾實驗室曾經是  Multics  項目的最初參與者,但是因為考慮到該項目的復雜性和缺乏進展而于1969年退出。鑒于  Mutics  項目不愉快的經歷,一群貝爾實驗室的研究人員--Ken  is  Ritchie、  Doug  Mell-  roy和  Joe  年開始在  DEC  PDP-7計算機上完全用機器語言編寫了一個簡單得多的操作系統。這個新系統中的很多思想,比如層次文件系統、作為用戶級進程的shell概念,都是來自于  Multics,只不過在一個更小、更簡單的程序包里實現。nKernighan給新系統命名為“Unix”,這也是一個雙關語,暗指“Multics”的復雜性。1973年用C重新編寫其內核,開始正式對外發布[93]。

  貝爾實驗室以慷慨的條件向學校提供源代碼,所以Unix在大專院校里獲得了很多支持并得以持續發展。最有影響的工作發生在20世紀  70  年代晚期到  80  年代早期,在美國加州大學伯克利分校,研究人員在一系列發布版本中增加了虛擬內存和  Internet協議,稱為(Berkeley  Software  Distribution)。與此同時,貝爾實驗宣也在發布自己的版本,稱為SystemVUnix。其他廠商的版本,比如Sun  Microsystems  的  Solaris系統,則是從這些原始的  em  V版本中行生而來。

  年代中期,Unix廠商試圖通過加入斷的、往往不兼容的特性來使它們的程序與眾不同,麻煩也就隨之而來了。為了阻止這種趨勢,IEEE(電氣和電子工程師協會)開始務力標準化Unix的開發,后來由Richard  Stallman命名為“Posix”。結果就得到了一系列的標準,稱作Posix標準。這套標準涵蓋了很多方面,比如Unix系統調用的C語言接口、shell程序和工具、線程及網絡編程。最近,一個被稱為“標準Unix規范”的獨立標準化工作已經與  Posix一起創建了統一的Unix系統標準。這些標準化工作的結果是Unix版本之間的差異已經基本消失”

  章杉敏銳地注意到似乎兩本書都提到了一個共同的東西——貝爾實驗室~

  1925年1月1日,當時AT&T總裁,華特·基佛德(Walter  Gifford)收購了西方電子公司的研究部門,成立一個叫做“貝爾電話實驗室公司”的獨立實體,后改稱貝爾實驗室。AT&T和西方電子各擁有該公司的50%的股權。在二三十年代,貝爾實驗室的研究人員推出了遠距離電視傳輸和數字計算機,領導了有聲電影和人工喉的開發。兩項信息時代的重要發明-晶體管和信息論都是貝爾實驗室在40年代研究出來的。貝爾實驗室在年代的重大發明有太陽能電池,激光的理論和通信衛星。

  而到今天,貝爾實驗室共獲得兩萬五千多項專利,現在,平均每個工作日獲得三項多專利。貝爾實驗室的使命是為客戶創造、生產和提供富有創新性的技術,這些技術使朗訊科技(Lucent  Technologies)公司在通信系統、產品、元件和網絡軟件方面處于全球領先地位。一共獲得8項(13人)諾貝爾獎(其中7項物理學獎,1項化學獎)。

  章杉:???

  咱能不能不要隨便一個實驗室就這么嚇人~

  :。:


  (https://www.dzxsw.cc/book/170215/8636246.html)


1秒記住大眾小說網:www.dzxsw.cc。手機版閱讀網址:m.dzxsw.cc