薦書:《編碼:隱匿在計算機軟硬體背後的語言》

最近看完了《編碼》這本書,大呼過癮。第一次看這本書的時候,一晚上就看了100多頁,難以自拔(當然也是因為前面大部分都是作者放慢速度在引導,以及本身已經擁有了計算機的基礎知識)。

這本書的書名是編碼,但是書里實際講述的不是狹義的ASCII、Unicode之類的字元編碼,這其實是一本講述計算機的底層工作原理的書。作為一個計算機專業的學生,雖然學過了數電和計算機組成原理,但是其實心裡對於計算機的底層原理有很多疑惑,如果讓我講一下怎麼從邏輯門構建起一個最初級的計算機系統,恐怕我說不出幾句來。

本書的作者Charles Petzold確實是個好人,在寫了厚厚的《Windows程序設計》之後,還惦記著我們這些初學者,用生動簡潔的語言,為我們編寫了這本趣味版的數字電子電路,幫我們理解計算機的基本運行原理。

這本書的內容,除了對於二級制、位元組、十六進位、ASCII編碼、定點浮點數之類的理論之外,基本上就是從零開始,用燈泡、導線、繼電器,經過巧妙的組裝,構建出一台電子計算機。聽起來很令人詫異,但這就是人類計算機發展的歷程。作者帶著我們重新從頭回顧了這段歷史,讓我們一方面驚嘆於前人的智慧,能夠從如此簡單的部件開始,一點一點構建出更為複雜的組件,最終組成一台電子計算機;另一方面,作者在敘述過程中的由淺入深、抽象泛化能力也讓人驚嘆,在敘述的過程中不斷將已經討論過的部件抽象出來,讓我們在思考的過程中能夠不囿於繁雜的連線。或許計算機的發展就是在這樣不斷的抽象當中進行的,不斷抽象屏蔽底層的細節,讓我們在思考上層的結構的時候能夠專註問題,無論硬體軟體,皆是如此!

本書的精華部分在第17章,這是真正把前面提到的各種元件組織起來,讓他們按照我們的要求組織成一台電子計算機的核心部分。從運算器和存儲器的組織,代碼存儲和數據存儲的分離與統一,指令的設計與實現,都在這一章中淋漓盡致地展現了出來。這是真正燒腦又讓人酣暢淋漓的一章。

我認為,對於像我一樣已經學過數電、計組等內容的人來說,這本書可以看做一種回顧和升華,將我們之前學過的內容串在了一起,並且彌補了之前學習過程中的某些斷層,讓我們對於計算機的運行原理有了更加完整且通暢的理解;對於那些計算機的初學者,甚至是沒有學習過計算機的讀者來說,這本書可以說是一本非常好的數字電路和計算機組成原理的入門書籍了,相對於國內教材的晦澀刻板,這本書能夠引起興趣,甚至讓人有馬上放下書動手一試的衝動。當然,這本400多頁的書也只是一本入門書籍,如果想要更加深入地了解,你可能還需要更多的學習。

總之,如果你對神奇的計算機世界充滿興趣,如果你厭惡各式各樣Boring充滿說教和格式化的計算機教科書。那麼你可以開始讀這本書了,儘管IT技術日新月異,但是這本經典不會過時。

推薦閱讀:

滿分文書大全|如何寫一份招生官都拒絕不了的CS文書
給計算機初學者的書籍推薦
刷頂會必備 ?』?』 ? 2018年人工智慧頂會月曆
當"老經驗"遇到"新場景"——學習方式的陷阱

TAG:計算機科學 | 計算機專業 |