《深入理解計算機系統》和《計算機程序的構造和解釋》這兩本書有什麼異同點?


異:

1.前者側重計算機系統,後者側重程序。

2.前者講細節,後者講抽象。

3.前者講實的,後者講虛的。

同:

1都是好書。

2虛即是實,實即是虛。


很巧合,這2本書我是一起買的,就在京東降價的那幾天。。。

這2本書,從技術上說,沒有 什麼共同點,說的完全不是一回事。。。

深入理解計算機系統,講的是 計算機系統,貼近操作系統,彙編,硬體這些底層的東西,如果你是C程序員,想進級一下,這本書看看挺好。。。我買回來才知道,現在還沒怎麼看。。。

SICP是 講編程的,以Scheme作為教學語言,來講述抽象 及編程 的思維。。。


個人一些愚見, 有錯誤敬請指正.

要說相同點我感覺還是有的, 他們都與平時我們所關注的計算機科學書籍(比如 KR, 不太一樣的地方在於, 他們偏重於講述思想, 而不是某種特定的計算機編程語言.

或許這就是為什麼SICP不叫"Scheme從入門到精通", 當然他的目的不是讓大家真的將Lisp應用到我們實際的開發中來, 而是用Lisp這種及其具有個性的語言來描述計算機程序的構造再合適不過, 也或許會更加易懂.

這也是為什麼CS:APP不叫"C語言與彙編", 用彙編不是目的, 看懂CS:APP也沒有需要太多彙編知識, 彙編只是更加清楚的看到編譯器給你做了什麼, 究竟我們平時看來抽象的程序在底層發生了什麼.

SICP中文版一年前看過一半,主要講計算機程序設計時的各方面問題,用Scheme語言描述,正如題「構造和解釋」,解釋了計算機程序的構造過程,數據表示,之類的東西,也講了少部分演算法, 以及最後一章講了部分底層的實現,少部分的機器內計算與編譯器。

目前在看CS:APP這本書,第一大感覺就是比較難,而且topic與SICP區別很大,主要focus在與系統交互層上,如果不深究,就單獨關注一下程序的底層實現還是挺不錯的,比如說數據表示,程序在內存存儲,與操作系統的交互原理,內存管理之類。//說句自認為很有道理的話, 就是這本書剖析了我們表面看起來錯綜複雜的計算機系統, 的內部, 或說是底層, 具體是怎麼實現的.

CS:APP可以在網上找到與之對應的CMU 15-213課程視頻錄像, (不知道是Open還是CMU忘記了關掉public訪問), 在CS:APP官方網站也有配套的Lab習題, 配合使用效果更佳.


前者務實,後者務虛。

務實和務虛都是需要的,CSAPP可以幫助你理解實際世界中的計算機系統,而SICP更追求更高抽象層面上的程序之道。


相同點就是都有相關大學的實驗配套。

csapp-卡耐基梅隆 , sicp-mit....

其他沒什麼相同點。。見@放牛的人


C和Lisp到底誰是正統,誰是邪教?


沒看過後者。前者在大三時閱讀,如醍醐灌頂茅塞頓開。從彙編的角度理解了內存管理、函數指針、設備埠編程等等底層的原理。如果剛開始嵌入式的學習,或者在大學階段,不妨閱讀一下。如果想直接從python,swift或javascript等開始編寫代碼,前者的幫助意義不大。


共同點是都有很好的課後習題,其他都是不同點


CSAPP的內容大概對應與SICP的第五章吧。


推薦閱讀:

SICP中環境模型可以等價為龍書中(第七章)講的的運行時刻環境么?
怎麼理解邱奇計數?
sicp中的流模式在實際開發中有什麼應用?

TAG:SICP | 計算機程序的構造和解釋書籍 | 深入理解計算機系統書籍 |