Hello World
Spiga

老赵书托(3):深入理解计算机系统

2009-11-23 00:10 by 老赵, 33459 visits

这次我要推荐的是《Computer Systems: A Programmer’s Perspective》(下文简称CSAPP),在国内可以买到其影印版。它也已经被翻译成为中文,即中国电力出版社的《深入理解计算机系统(修订版)》。

基本知识

如果说我上次推荐的SICP强调的是编程能力,抽象能力的话,那么CSAPP这本书强调的便是作为一个程序员的基本知识。SICP来自世界顶级学府MIT,而CSAPP也同样出身名门:CMU(卡耐基梅隆大学)。虽然没有SICP那么历史悠久,但它被世界几百所大学(幸运的是也包括我所就读的复旦大学)用作教材也有好多年了。

这本书的中译名为“深入理解计算机系统”,我非常,十分,以及百分之一百二十地不满意。我这么说的原因在于这个译法完全扭曲了书的本意。如果直译原书名,应该是类似于“以程序员的视角理解计算机系统”,何来“深入”二字。可能在国内编辑看来,这是讲系统的,用C和汇编语言的,因此很“深入”,但我认为这只能说明国内技术氛围的浅薄。因为事实上,这是一本入门级别的书,这本书其实并不“深入”,它谈论的内容还是相对比较浅的。但“浅”不代表“浅薄”,写一本面向初学者的好书往往是非常困难的,因此无论是SICP还是CSAPP,它的作者都是顶尖学府的教授,结合多年教学经验而写出来的。

CMU把这本书作为“Introduction to Computer System”课程的教材,是面向计算机专业低年级学生的“计算机系统介绍(导论)”,可能这些学生只是刚刚了解如何使用一门高级语言——如Java进行编程,对于计算机系统的工作方式等话题可谓一点都没有接触过,而CSAPP对读者的背景也只要求是“一些编程经验”而已。这本书的话题覆盖面很广,从计算机的基本组成,二进制数据表示方式,到机器级别的指令,CPU工作方式,存储结构和优化,操作系统的虚拟内存管理,程序运行方式,I/O,网络、到(较底层)程序性能优化和并行程序开发等等。所以,它其实覆盖了“计算机组成原理”,“操作系统”等许多课程的内容,其中的许多话题都能再次展开,继续深入,都能再变成一本,甚至N本经典。事实上,在高年级的计算机专业课程设置中,都会有更加纵向的内容出现。

因此,如果有人说它“底层”,我同意。但如果说它“深入”,至少我不那么赞同。

“覆盖面广”,其实就是这本书的最大优点。它告诉我们计算机是如何设计和工作的,操作系统有哪些重点,它们的作用又是什么。CSAPP的目标其实便是要讲清楚原理,但并不会把某个话题挖掘地过于深入,过于细节。例如书中第4章使用了自己“设计”和“实现”的“Y86”处理器架构,便是为了简化X86指令集,使课本内容在能够说明问题的前提下也不至于太复杂。因此,读完(其实也并不一定要读完,说实话我也没有读完)这本书后,我们就可以对计算机系统各组件的工作方式有了理性的认识。

那么,这本书适合什么人阅读呢?对于这个问题我也有过犹豫。在打算写“老赵书托”系列的之后,前两本列在书单的上便是SICP和CSAPP。我对CSAPP推崇备至,在以前的几篇文章中也都有提及,但最后还是先推荐了SICP。怪怪同学当时在回复中说到“我还以为你会先推荐CSAPP”,其实这就是因为一个“适合面”的问题。在我看来,SICP所强调的编程和抽象能力是任何程序员都需要的,但是如果您问我“所有程序员都应该读CSAPP吗?”,或者再具体一些:“前端JavaScript程序员需要看CSAPP吗?”,那么我可能就无法给出100%令人满意的答案了。我可能会这样回答:其实这些内容很多时候并不一定可以“直接用于”某个工作,但是它其实和操作系统,编译原理等话题一样,包含的是一套“工作方式”,“算法集”,“实践成果集”,其中很多理念,如Cache Hierarchy,Copy on Write等理解的适用范围其实都是非常广泛的。在一定程度上,其实它和SICP一样也是在锻炼思维方式,只不过是已经经过具体化的实践方式而已。

因此,即便你是一个前端JavaScript程序员,也可以从CSAPP这本书中获益。如果您是.NET程序员,那么您更加适合看这本书了。说一句“豪情万丈”的话:如果不知道XX,YY或ZZ的话,这如何算是一个优秀的程序员?这本书和平时的工作可能的确不一样,相比起来“底层”了一些,但是它还是会把“底层内容”控制在一定深度之内,而不会讲某个具体话题挖掘到“事倍功半”的程度。而事实上,虽然在进行.NET开发的时候我们已经在一个较高的抽象上工作了,但是我们的程序还是运行在操作系统上,还是在遵循着某个规律在运行着,了解一些内部的工作机制也有助于我们写出更好的应用程序。

说来也奇怪,虽然各种语言,框架发展地越来越好,按理来说我们写程序也应该越来越容易。但是现在看来,一些基础性的内容反而也变得越来越重要了,例如在并行计算面前,计算系统的一些细节,如内存一致性模型,线程调度,程序的局部性(Locality)又被提上台面,否则我们很难写出高效的应用程序。同样,一些如函数式编程,Monad等在几年前看起来十分科研型,数学化的事物也离我们越来越近了,如LINQ,Reactive Framework等等,其实它们都已经是我们身边的事物了。

阅读建议及相关资源

CSAPP这本书覆盖面很广,我认为并非要一字不漏地读完才行。根据我的个人观点,我们应该着重阅读书的第1章“A Tour of Computer Systems”和第一部分“Program Structure and Execution”(从第2章开始,大约占据了书中一半篇幅),其中包含了数据的机器级别表示方法,汇编语言和执行方式以及CPU架构方面的内容,我们应该关键性地理解其原理。如第6章“Optimizing Program Performance”提出了许多种机器级别的优化方式,在现在看来,其中的某些方式过于细致,乃至在实际工作过程中已经不再推荐了(如内联一些方法以提高性能),我们要在把握住“为什么”而并不是单纯的吸收“怎么做”。对于书中的第二部分“Running Programs on a System”主要讲述的是操作系统方面的内容,可以读得略为简单一些,但其中的第10章“Virtual Memory”,它谈论了操作系统中虚拟内存机制的各个方面,非常关键,需要细读。至于书中的第三部分“Interaction and Communication Between Programs”便可以更加“选择性”地阅读,我只阅读了第13章“Concurrent Programming”,而其他两章都只是简单地扫过而已。

作为经典的教材它一定有许多附加资源,例如在它的官方站点给出了一些链接,其中最关键的可能是学习者站点,其中包括这本书所需要的各种工具,参考文档等各种资源。从网站上也可以了解到,CSAPP即将在2010年2月份推出第2版,根据近几年的发展做出了不少改进

不过,在这里我要着重推荐的是接下来的内容:我的大学时代就读于复旦大学软件学院,属于教育部35所实验性软件学院,学费比较昂贵——幸运的是,我所接受的“实验性教学”使用了一种比较“西化”的方式,无论是课程设计还是教材都比较“与国际接轨”。例如和爱尔兰都柏林大学合作办学,有些课程由老外来教,同时也会接触一些“函数式编程”等国内较少接触的内容。大二的“计算机系统导论”课程便参考了CMU的ICS这门课,教材自然就是CSAPP这本书。在我印象中,每年最热闹的课程便是大二的这门必修课(高年级所开设的“计算机组成原理”,“编译原理”、“计算机网络”等就是“方向性”课程,并非人人必修),尤其是做一些大作业的时候,在BBS上便会讨论的非常热烈(不得不承认,“拆炸弹1”等实验也特别有趣),而每年此时也往往会诞生出一些“牛人”,基本上都是些“前途似锦”的人物,大都即将或已经在世界顶级学府深造,令人难以望其项背。而在两年前,这门原本是一个学期的课程,也已经变成了为期一年的课程,这也说明了ICS的重要程度。现在这门课已经成为了复旦大学的精品课程之一:“计算机系统基础”,我们从网站上可以下载到所有的PPT,练习和解答等内容,甚至还有视频下载。希望这些内容能够对您有所帮助。

上次我也提到北大使用SICP的课程:“程序设计技术和方法”。其实现在国内有很多大学都在使用世界一流教材,希望也会有越来越多公开的内容。

扩展阅读

在这里我想可以再提及两本书,一本是之前所提到的国产书精品《链接、装载与库》。这本书主要讲解了编译过程中的“生成文件”的过程,以及应用程序执行时文件是如何被操作系统加载的,并且同时涉及到Linux和Windows两个平台。实话说,这些内容并对我来说并不是些必须了解的内容(相信对大部分同学也一样),因此我把它当作一种“扩展阅读”以及“知识巩固”。

对于这种类型的书,我有自己特殊的阅读方式,那就是“快速浏览”。例如,对我来说,我可能更需要知道链接是做什么用的,一个可执行文件或一个动态链接库文件大致组成有哪些,加载时各段的作用是什么等等,但我不需要具体了解每个段的布局,文件头的具体格式,占多少字节等等。因此,我更关注的可能是其中的示意图,而对于其中一些和具体数据相关的表格和代码就匆匆掠过了。这本书我“翻”得很快,大约只用了4、5天,我想等我真需要这些内容的时候再回头细读吧。有朋友说,更值得一读的是著名的《Linkers and Loaders》,但这部分话题对我来说实在有些距离,我还是从更容易接受的《链》来接触吧。

说来有意思,我建议您在读《链》这本书的时候,着重关注“链接、装载与库”的部分,而是那些少量的,如操作系统的线程和内存管理方式,甚至于附录中有关“字节序(Byte Order)”的内容。因为它们往往是书中主要内容的基础,拥有更广的适用性。

而第二本书“顺便提及”的书是《Windows Internals 5th Edition》,人民邮电出版社已经引进了其影印版(而且影印质量好的令人发指,我仔细对比之后发现,除了不是硬皮之外,从纸张和文字几乎和原版一模一样)。这的确是本“深入”级别的书,基本上覆盖了Windows内核的方方面面,包括系统架构,内存管理,线程调度,安全机制,文件系统等各种话题,对于我们Windows平台上的程序员,这方面内容可能更有针对性。

不过说实话,我刚刚购入这本书,更别提仔细阅读了。不过我看过这本书第4版中文版的大部分内容,它由潘爱民老师翻译,应该说翻译地很不错。如果您对英文的接受程度不高,也可以从中文版入手。不过第5版覆盖了Windows Server 2008和Windows Vista,直接增加了200多页的篇幅,还加入了Superfetch、BitLocker和Hyper-V相关的内容,可谓是一次重大的升级——其实这其实也可以看出Vista的相对于XP,在内核级别有了很大改进。而目前Windows Internals第6版也在写作过程中,其中包含Windows 7和Server 2008 R2的内容。我本以为Win 7的内核改进不大,但是从近期的PDC大会上发现似乎也不能这么说

Windows Internals一书的主要作者之一是Mark Russinovich,这位和基努·李维斯有几分相像的帅哥除了是Windows NT内核专家,微软Technical Fellow之外,还是著名的Sysinternals工具包的作者。Sysinternals工具包可谓Windows程序员居家旅行,杀bug灭口的必备工具,因此Windows Internal的重要特点之一便是用Sysinternal中的各种工具来进行“实验”,这也给这种有深度的书带来了相当的实践性。在我看来,这本书虽然深入,但并非是“枯燥”理论,还是一本写得比较“好看”的书。

说到“好看”的技术书,那么我还是以CSAPP这本书中“致谢”部分的最后一句话来结尾吧:

Finally, we would like to acknowledge the great technical writers Brian Kenighan and the late W. Richard Stevens, for showing us that technical books can be beautiful。

如何把技术书写的“好看”,真是门艺术。

相关文章

 

注1:“拆炸弹”是ICS课程的配套实验之一,它的主要工作便是通过将一些小程序(即“炸弹”)反汇编后阅读其汇编代码,然后通过在程序运行时输入特定的字符串来“拆除”炸弹。有些炸弹可能只是输入某个特定的字符,而有些炸弹可能需要输入复杂的字符串,通过“内存溢出”来覆盖掉堆栈中的特定内存(如return address),以此改变程序运行的“轨迹”。整个过程非常有挑战,但也很有趣味。能设计出这样的实验的确令人敬佩。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

96 条回复

  1. 别爱上哥,哥只是个传说!
    *.*.*.*
    链接

    别爱上哥,哥只是个传说! 2009-11-23 00:21:00

    老赵意思是,不是明牌大学出来的都不是料。请勿拍砖。谢谢合作。

  2. Ivony...
    *.*.*.*
    链接

    Ivony... 2009-11-23 00:42:00

    其实程序从来就没有与底层和数学脱离过吧,当我们要关注于效率时。

    语言和框架的发展我觉得也如同数学的发展一样,用更简洁的方式描述复杂的抽象,并发展出新的抽象。

    从机器语言到汇编语言,从汇编语言到C语言。我们把压栈出栈调用指令用变量、运算符和表达式描述。再后来有了OO,使得我们可以不必用函数和功能来做软件系统的抽象建模,复杂的领域模型构建变得很轻松。。。。

    也正如同无论是多么高级的数学理论,加减这样的基础概念始终不会消失。同样的无论多么先进的语言和框架,恐怕这些“底层”是我们永远的话题。

    脑子有些不清醒,胡言一番。。。。明儿再来看看有啥要改的。。。。

  3. 老赵
    admin
    链接

    老赵 2009-11-23 00:47:00

    别爱上哥,哥只是个传说!:老赵意思是,不是明牌大学出来的都不是料。请勿拍砖。谢谢合作。


    ……这是你说的,我可没这么说。

  4. 老赵
    admin
    链接

    老赵 2009-11-23 00:53:00

    @Ivony...
    嗯,数学总归是有的,不过我说的“数学”不包括最基本的加加减减等等,呵呵。
    不过一直以来其实各框架/语言等都是希望让业务逻辑为上,而不是以技术细节为主。
    现在的结果也就是,其实程序员入门基本不需要太多数学相关的知识,这也是发展那么多年后的成果所在啊。

  5. 别爱上哥,哥只是个传说!
    *.*.*.*
    链接

    别爱上哥,哥只是个传说! 2009-11-23 01:08:00

    Jeffrey Zhao:

    别爱上哥,哥只是个传说!:老赵意思是,不是明牌大学出来的都不是料。请勿拍砖。谢谢合作。


    ……这是你说的,我可没这么说。


    你不好意思明说,我帮忙说而已

  6. RednaxelaFX
    *.*.*.*
    链接

    RednaxelaFX 2009-11-23 01:16:00

    hmm...看来南大果然土鳖?不过我们也有侯捷来上MFC和STL的课……

    南京大学软件学院,至少在我读的时候,第一个学期入门用的书是《Introduction to Computing Systems: From Bits and Gates to C and Beyond》第二版。比我低一年级的同学用的就是第三版了。虽然远比不上CSAPP全面,但我觉得大一读了这本书之后一直到现在都对我有深远的影响。要是让我写书托系列的话肯定会先写这本。它分为两部分,前半部分讲的是一个只有16条指令的超简单的机器,叫做LC-2,讲解了各种指令如何用电路实现,程序的流程之类的;后半部分讲的是非常入门的C,各种操作如何映射到LC-2上。因为很多实验都可以自己动手做,而且目标机器也很简单,所以学起来轻松愉快。

    计算机组织与结构的课用的是《Computer Organization and Architecture》第五版(天啊,现在都第八版了……链接是到第八版的)。这本书也不错……虽然跟CSAPP的出发点有些不同,不过覆盖到的面有不少相似之处。

    上编译原理课的时候用的教材是《Compiler Construction Principles and Practice》,当时觉得这书总是讲了一些就不讲了,相当不过瘾。今年做毕设的时候才听老师说后面的年级已经换用龙书第二版了。

    软院的专业选修课理没有一门涉及FP的,我还是溜到计算机系那边去旁听他们的程序设计语言概率课才学了不少有趣的东西。Y组合子啊啥的也是那个时候边上课边想“在Scheme里怎么能不用define而直接用lambda写出递归函数”才接触到的 T T

    我要是迟一两年上学的话……或者要是学的是CS的话……T T

  7. winter-cn
    *.*.*.*
    链接

    winter-cn 2009-11-23 01:21:00

    Ivony...:
    其实程序从来就没有与底层和数学脱离过吧,当我们要关注于效率时。

    语言和框架的发展我觉得也如同数学的发展一样,用更简洁的方式描述复杂的抽象,并发展出新的抽象。

    从机器语言到汇编语言,从汇编语言到C语言。我们把压栈出栈调用指令用变量、运算符和表达式描述。再后来有了OO,使得我们可以不必用函数和功能来做软件系统的抽象建模,复杂的领域模型构建变得很轻松。。。。

    也正如同无论是多么高级的数学理论,加减这样的基础概念始终不会消失。同样的无论多么先进的语言和框架,恐怕这些“底层”是我们永远的话题。

    脑子有些不清醒,胡言一番。。。。明儿再来看看有啥要改的。。。。


    数学跟任何东西都是相关的 它其实是人类对自己思维的认识
    不用说计算机 买个菜也要加加减减

  8. 老赵
    admin
    链接

    老赵 2009-11-23 01:30:00

    @RednaxelaFX
    不过据我了解,我觉得复旦软件学院真是领先很多,就我个人了解下来,比不少软件学院要靠谱很多啊。
    // 没别的意思,涉及到某些兄弟的话希望不要介意。

  9. 老赵
    admin
    链接

    老赵 2009-11-23 01:31:00

    别爱上哥,哥只是个传说!:

    Jeffrey Zhao:

    别爱上哥,哥只是个传说!:老赵意思是,不是明牌大学出来的都不是料。请勿拍砖。谢谢合作。


    ……这是你说的,我可没这么说。


    你不好意思明说,我帮忙说而已


    你非要这样理解,我也没有办法……

  10. RednaxelaFX
    *.*.*.*
    链接

    RednaxelaFX 2009-11-23 01:36:00

    Jeffrey Zhao:
    @RednaxelaFX
    不过据我了解,我觉得复旦软件学院真是领先很多,就我个人了解下来,比不少软件学院要靠谱很多啊。
    // 没别的意思,涉及到某些兄弟的话希望不要介意。


    听老赵的介绍感觉至少比我们这边先进多了。诶。(老师看到了的话请见谅 T T)

  11. 老赵
    admin
    链接

    老赵 2009-11-23 01:40:00

    @RednaxelaFX
    但从结果上看却是你比我要强大……不过比我厉害的同学的确也有很多,现在在学校BBS上看着感觉一个个都好厉害啊……包括以前在学校时的小弟……

  12. RednaxelaFX
    *.*.*.*
    链接

    RednaxelaFX 2009-11-23 01:40:00

    话说老赵下一本要托啥书能不能透透?至少有机会先膜拜一下……

  13. 老赵
    admin
    链接

    老赵 2009-11-23 01:44:00

    RednaxelaFX:话说老赵下一本要托啥书能不能透透?至少有机会先膜拜一下……


    事实上是有几本候选的,还没确定,所以私下联系吧……

  14. xiaotie
    *.*.*.*
    链接

    xiaotie 2009-11-23 04:35:00

    这本差不多看完了,那本SICP只简单的翻了翻

  15. JustDI
    *.*.*.*
    链接

    JustDI 2009-11-23 08:30:00

  16. Artech
    *.*.*.*
    链接

    Artech 2009-11-23 08:39:00

    《Windows Internals》太厚了,两年前买的,从来没有从到到尾看完过(发现现在买的书多了,却很少有一本能从第一页看到最后一页,小说除外)

  17. Gnie
    *.*.*.*
    链接

    Gnie 2009-11-23 08:41:00

    都是不错的书,需要挤出些时间看啊。

  18. riccc
    *.*.*.*
    链接

    riccc 2009-11-23 08:52:00

    "人民邮电出版社已经引进了其影印版(而且影印质量好的令人发指",这个。。。很符合主题啊。那么厚一本,相对来说纸张还是很薄,前前后后多翻个几次就免不了皱皱巴巴的了,当时还有点后悔没有买原版的

  19. 戏水
    *.*.*.*
    链接

    戏水 2009-11-23 08:59:00

    为了延续俺一贯的吹毛求疵的风格 , 给老赵这个要求进步的青年 继续提关于文字上的意见:

    文中第一段 “写给初学者的书往往是非常困难的” 改成 “给初学者写书往往是非常困难的” 更能表达文意,更符合语法的规则。
    因为毕竟按照原句 “写给初学者的 书 往往 是 非常 困难的” 提炼出题部分--“书 是 困难的” 这显然不合逻辑。

    请老赵斟酌

  20. 小赛布里
    *.*.*.*
    链接

    小赛布里 2009-11-23 09:06:00

    四川大学软院也有课程用的这本教材。
    是引进卡耐基的SSD系列课程之一。


    是本好书。

  21. 老赵
    admin
    链接

    老赵 2009-11-23 09:07:00

    小赛布里:
    四川大学软院也有课程用的这本教材。
    是引进卡耐基的SSD系列课程之一。
    是本好书。


    所以,其实我们的教材已经世界一流了。

  22. 老赵
    admin
    链接

    老赵 2009-11-23 09:07:00

    @戏水
    hmmmm,改好了,呵呵。

  23. 戏水
    *.*.*.*
    链接

    戏水 2009-11-23 09:08:00

    如果文章本身言之无物,那么再好的文字辞藻,再规整的语法文法也不能把它装饰成一篇沁人心脾的的好文章。 之所以一再吹毛求疵,就是因为老赵的文章本成自妙手, 余不忍见微瑕在碧,所以继续提出下面的小问题 :

    【但是如果您问我“所有程序员都应该读CSAPP吗?”,或者再具体一些:“前端JavaScript程序员需要看SCIP吗?”】 这句 后半部分 应该是 【或者再具体一些:“前端JavaScript程序员需要看CSAPP吗?"】
    这样才前后呼应,符合逻辑吧。老赵夜半发文想必是疲劳了。

  24. 老赵
    admin
    链接

    老赵 2009-11-23 09:08:00

    Artech:《Windows Internals》太厚了,两年前买的,从来没有从到到尾看完过(发现现在买的书多了,却很少有一本能从第一页看到最后一页,小说除外)


    不错了……我可以拍胸脯保证,我没有一本书是从第一页看到最后一页的……

  25. 亚历山大同志
    *.*.*.*
    链接

    亚历山大同志 2009-11-23 09:10:00

    呵呵,还得回家重新啃啃高数,离散,数字电路之类的基础,呵呵,越做到后面越觉得基础重要

  26. 戏水
    *.*.*.*
    链接

    戏水 2009-11-23 09:13:00

    要是能有人 写写Sysinternals系列的文章就好了, webcast上看的不过瘾 ……

  27. 老赵
    admin
    链接

    老赵 2009-11-23 09:16:00

    @戏水
    的确是我疏忽了,呵呵。

  28. 老赵
    admin
    链接

    老赵 2009-11-23 09:17:00

    @亚历山大同志
    能否谈谈数字电路对程序开发的帮助?

  29. Justin
    *.*.*.*
    链接

    Justin 2009-11-23 09:27:00

    这本书中文修订版质量也很高,而且译者也非常负责任,十分推荐!
    老赵这篇推荐同样非常精彩,这个得推荐!

  30. 极品拖拉机
    *.*.*.*
    链接

    极品拖拉机 2009-11-23 09:39:00

    一直做web开发(3年),所以对计算机操作系统不是很了解(旁白:大学不是学过操作系统吗?)。最近感觉知识不够用了,一直在补数据结构,也准备补充下计算机操作系统。
    前面买了不少书,都是吹得很厉害,结果买了来看,很失望。
    不知道老赵推荐的这本书怎么样撒?
    手里书都扎堆了,每次搬家都太累。

  31. 你听海是不是在笑
    *.*.*.*
    链接

    你听海是不是在笑 2009-11-23 09:39:00

    唉!这些东西似乎离我渐行渐远了

  32. 老赵
    admin
    链接

    老赵 2009-11-23 09:41:00

    @极品拖拉机
    “书托”系列的书,至少“主托”部分可以放心买。

  33. 极品拖拉机
    *.*.*.*
    链接

    极品拖拉机 2009-11-23 09:49:00

    Jeffrey Zhao:
    @极品拖拉机
    “书托”系列的书,至少“主托”部分可以放心买。


    什么叫书托?
    主托又是啥?
    怎么想起饭托了??

  34. 兴百放
    *.*.*.*
    链接

    兴百放 2009-11-23 09:58:00

    这么多的书,不知道什么时候能看,什么时候能看完

  35. 老赵
    admin
    链接

    老赵 2009-11-23 10:01:00

    @兴百放
    你一天花多少时间看书呢?

  36. 横刀天笑
    *.*.*.*
    链接

    横刀天笑 2009-11-23 10:23:00

    我一天除了吃饭、睡觉、上班、上厕所、上班路上的时间之外都在看书。。。还是看不动。。。看书的速度跟不上买书的速度。。。

  37. 麒麟.NET
    *.*.*.*
    链接

    麒麟.NET 2009-11-23 10:38:00

    想想我的母校在我本科期间用的教材,简直让人不寒而栗……

  38. 麒麟.NET
    *.*.*.*
    链接

    麒麟.NET 2009-11-23 10:40:00

    这本书中文版的翻译质量如何?老赵没有介绍啊

  39. 老赵
    admin
    链接

    老赵 2009-11-23 10:42:00

    @麒麟.NET
    我没看过中文版。

  40. Ivony...
    *.*.*.*
    链接

    Ivony... 2009-11-23 10:54:00

    说到书,其实干程序这么久手边没有几本正儿八经的技术书籍。有些书看目录就不用看了,有些书写的非常好,结果在书店看着就忘了时间了,往往在书店就看完了一大半,也就没心思买回去了(很对不起作者的说)。真正买回去的,放在床头的,发现竟然这两本:《西方哲学十五讲》和《离散数学》。前者是看了第七遍了,还能发现新的收获,后者是看了一年了,第一章还没看完。。。。。

  41. George Wing
    *.*.*.*
    链接

    George Wing 2009-11-23 10:54:00

    麒麟.NET:想想我的母校在我本科期间用的教材,简直让人不寒而栗……


    同感!+1

  42. 韦恩卑鄙 alias:v-zhewg
    *.*.*.*
    链接

    韦恩卑鄙 alias:v-zhewg 2009-11-23 11:01:00

    垃圾学校的垃圾学院的垃圾课程的受害者飘过

    不然我和吉日也不只现在这个水平

  43. 老赵
    admin
    链接

    老赵 2009-11-23 11:13:00

    @韦恩卑鄙 alias:v-zhewg
    其实我的学校或专业里也有很多%##$(*&的人,你比他们nb太多了……

  44. 横刀天笑
    *.*.*.*
    链接

    横刀天笑 2009-11-23 11:15:00

    @麒麟.NET
    这本书的中文版翻译的也很赞的说~~~

  45. 装配脑袋
    *.*.*.*
    链接

    装配脑袋 2009-11-23 11:17:00

    RednaxelaFX:
    hmm...看来南大果然土鳖?不过我们也有侯捷来上MFC和STL的课……

    南京大学软件学院,至少在我读的时候,第一个学期入门用的书是《Introduction to Computing Systems: From Bits and Gates to C and Beyond》第二版。比我低一年级的同学用的就是第三版了。虽然远比不上CSAPP全面,但我觉得大一读了这本书之后一直到现在都对我有深远的影响。要是让我写书托系列的话肯定会先写这本。它分为两部分,前半部分讲的是...



    原来是校友啊。。握手握手
    看来从我们学校毕业的人都有很相似的风格啊,我认识好几个都有这种感觉:P

  46. 老赵
    admin
    链接

    老赵 2009-11-23 11:47:00

    @装配脑袋
    信脑袋,得永生。
    信RednaxelaFX,原地满状态复活。

    南大太牛了。

  47. 横刀天笑
    *.*.*.*
    链接

    横刀天笑 2009-11-23 12:02:00

    哎,怎么到处都是南大的。。。。看一个博客是南大的,又看一个,又是。。。还都一个个的牛的流油

  48. 汉子进墙[未注册用户]
    *.*.*.*
    链接

    汉子进墙[未注册用户] 2009-11-23 12:16:00

    很感谢老赵的博客,因为让我看到了努力的方向,谢谢!

  49. 别爱上哥,哥只是个传说!
    *.*.*.*
    链接

    别爱上哥,哥只是个传说! 2009-11-23 12:25:00

    南京大学不是这个哦。

  50. Dixin
    *.*.*.*
    链接

    Dixin 2009-11-23 13:16:00

    @装配脑袋

    装配脑袋:

    RednaxelaFX:
    hmm...看来南大果然土鳖?不过我们也有侯捷来上MFC和STL的课……

    南京大学软件学院,至少在我读的时候,第一个学期入门用的书是《Introduction to Computing Systems: From Bits and Gates to C and Beyond》第二版。比我低一年级的同学用的就是第三版了。虽然远比不上CSAPP全面,但我觉得大一读了这本书之后一直到现在都对我有深远的影响。要是让我写书托系列的话肯定会先写这本。它分为两部分,前半部分讲的是...



    原来是校友啊。。握手握手
    看来从我们学校毕业的人都有很相似的风格啊,我认识好几个都有这种感觉:P



    物理系的路过。。。

  51. 麒麟.NET
    *.*.*.*
    链接

    麒麟.NET 2009-11-23 13:17:00

    上了南大,就不难了……

  52. Aaron Lu
    *.*.*.*
    链接

    Aaron Lu 2009-11-23 13:45:00

    严重同意老赵关于这本书的译名的想法。“深入”这个词太过了,这本书其实很基础。

  53. 王凯歌
    *.*.*.*
    链接

    王凯歌 2009-11-23 14:18:00

    看过之后令我大吃一惊

  54. Todd Wei
    *.*.*.*
    链接

    Todd Wei 2009-11-23 14:23:00

    @装配脑袋
    国内的大学我最尊敬南大,当年starfish是我偶像,呵呵。很多年不知道他的消息了。

  55. 木白
    *.*.*.*
    链接

    木白 2009-11-23 14:45:00

    译作“深入”,
    能提高销量!
    标题党的做法而已,不必深究!

  56. 老赵
    admin
    链接

    老赵 2009-11-23 16:04:00

    王凯歌:看过之后令我大吃一惊


    什么东西大吃一惊?

  57. 老赵
    admin
    链接

    老赵 2009-11-23 16:05:00

    @Todd Wei
    同饭starfish

  58. 老赵
    admin
    链接

    老赵 2009-11-23 16:05:00

    木白:
    译作“深入”,能提高销量!
    标题党的做法而已,不必深究!


    我觉得正好相反,本来就是偏底层的东西,译作“深入”更把无数人吓退了。

  59. Johnny Deng
    *.*.*.*
    链接

    Johnny Deng 2009-11-23 16:24:00

    去年在卓越上买了三本,10块钱一本哈哈,不过还一直没有时间看……

  60. 韦恩卑鄙 alias:v-zhewg
    *.*.*.*
    链接

    韦恩卑鄙 alias:v-zhewg 2009-11-23 16:25:00

    Jeffrey Zhao:

    木白:
    译作“深入”,能提高销量!
    标题党的做法而已,不必深究!


    我觉得正好相反,本来就是偏底层的东西,译作“深入”更把无数人吓退了。


    吓退的举手

  61. 韦恩卑鄙 alias:v-zhewg
    *.*.*.*
    链接

    韦恩卑鄙 alias:v-zhewg 2009-11-23 16:26:00

    装配脑袋:

    RednaxelaFX:
    hmm...看来南大果然土鳖?不过我们也有侯捷来上MFC和STL的课……

    南京大学软件学院,至少在我读的时候,第一个学期入门用的书是《Introduction to Computing Systems: From Bits and Gates to C and Beyond》第二版。比我低一年级的同学用的就是第三版了。虽然远比不上CSAPP全面,但我觉得大一读了这本书之后一直到现在都对我有深远的影响。要是让我写书托系列的话肯定会先写这本。它分为两部分,前半部分讲的是...



    原来是校友啊。。握手握手
    看来从我们学校毕业的人都有很相似的风格啊,我认识好几个都有这种感觉:P


    nnd 以后招聘遇到南京大学的要绕路了

    不然一起工作不是他疯就是我疯


    补充一下 这是深深的敬畏阿 omg

  62. 老赵
    admin
    链接

    老赵 2009-11-23 16:37:00

    Johnny Deng:去年在卓越上买了三本,10块钱一本哈哈,不过还一直没有时间看……


    有这等好事?

  63. Dixin
    *.*.*.*
    链接

    Dixin 2009-11-23 16:41:00

    @RednaxelaFX

    RednaxelaFX:
    我要是迟一两年上学的话……或者要是学的是CS的话……T T



    我大二那年转计算机系成功了,后来又说要留一级,所以忍痛没去。

    南大四年,不知道多羡慕你们软院/CS的。。

  64. Johnny Deng
    *.*.*.*
    链接

    Johnny Deng 2009-11-23 17:04:00

    @Jeffrey Zhao
    去年冬天有段时间卓越上标价10块钱,被我抢到了~

  65. heros
    *.*.*.*
    链接

    heros 2009-11-23 18:22:00

    杂牌学校的路过,哎,从学校就开始落后于人。
    泪奔!!!
    盗用Ivony的话了,勿怪。

  66. 王洪剑
    *.*.*.*
    链接

    王洪剑 2009-11-23 18:50:00

    无名小学校非正规专业自学成“长”的路过表示感慨……

  67. winter-cn
    *.*.*.*
    链接

    winter-cn 2009-11-23 19:27:00

    Jeffrey Zhao:
    @装配脑袋
    信脑袋,得永生。
    信RednaxelaFX,原地满状态复活。

    南大太牛了。


    那个刘未鹏好像也是南大的?

  68. winter-cn
    *.*.*.*
    链接

    winter-cn 2009-11-23 19:31:00

    前几天去清华同学的实验室玩 随手抄起一本冈萨雷斯数字图像处理 看了两章 感觉人家nb人确实太nb了

  69. oec2003
    *.*.*.*
    链接

    oec2003 2009-11-23 19:36:00

    winter-cn:

    Jeffrey Zhao:
    @装配脑袋
    信脑袋,得永生。
    信RednaxelaFX,原地满状态复活。

    南大太牛了。


    那个刘未鹏好像也是南大的?



    确实是的
    http://mindhacks.cn/2009/05/17/seven-years-in-nju/

  70. Kevin Dai
    *.*.*.*
    链接

    Kevin Dai 2009-11-23 20:08:00

    今天在外面某台机器上看老赵文章,但是浏览器版本却是IE6。现在回来了,继续补看。//话说我就是看着老赵的博客长大的

  71. 二手的程序员
    *.*.*.*
    链接

    二手的程序员 2009-11-23 20:42:00

    恭喜老赵超过嘟嘟,荣生亚军,希望早日超过李泰瑞

  72. xiaotie
    *.*.*.*
    链接

    xiaotie 2009-11-23 23:25:00

    @二手的程序员
    gx

  73. ERic Poon
    *.*.*.*
    链接

    ERic Poon 2009-11-23 23:32:00

    [Quote]
    可能这些学生只是刚刚了解如何使用一门高级语言——如Java进行编程,对于计算机系统的工作方式等话题可谓一点都没有接触过
    [/Quote]
    这个很有同感。看来这书确实值得一读。

  74. Yankee
    *.*.*.*
    链接

    Yankee 2009-11-25 11:35:00

    看那书不如看博客了,博客'白话文'多,好理解.

  75. 老赵
    admin
    链接

    老赵 2009-11-25 11:36:00

    @Yankee
    推荐一些博客?

  76. Yankee
    *.*.*.*
    链接

    Yankee 2009-11-25 11:55:00

    Jeffrey Zhao:
    @Yankee
    推荐一些博客?


    我觉得那本书写的不好,对我们这些低手不太适合自行阅读,书再有价值,搞不明白那还是没有价值.

  77. Freesc Huang
    *.*.*.*
    链接

    Freesc Huang 2009-11-25 13:34:00

    @Jeffrey Zhao
    华中.圡教材.科技.男子.大学 的烂人木讷地飘过...

  78. 再快一点
    *.*.*.*
    链接

    再快一点 2009-11-26 12:43:00

    能不能开一个C#的数据结构专栏?我是培训学校学.net的,没有学过C,对编程有浓厚的兴趣和执着。
    我知道培训学校的最大弱点是基础不牢固,所以课下自学数据结构。

  79. minvt
    *.*.*.*
    链接

    minvt 2009-12-29 15:59:00

    嫩牛满面
    羡慕
    眼馋
    感谢老赵同志帮俺开眼
    期待更多好文
    俺就跟文盲似的T_T

  80. dpol
    *.*.*.*
    链接

    dpol 2010-01-25 16:15:00

    如果不是科班出身,建议不要按照老赵的推荐去看书。浪费了很多时间也没有什么成果。多做做项目,多写点代码也许会更管用。当然了,您要是英语过6级,计算机本科毕业(还不能是混出来的那种),可以按照老赵的推荐去看书。

  81. 老赵
    admin
    链接

    老赵 2010-01-25 16:27:00

    @dpol
    hoho,有点夸张了。最多4级通过,大专毕业就行了。
    要知道这些书在国外都是本科低年级的教材。

  82. davidear
    *.*.*.*
    链接

    davidear 2010-03-19 14:34:00

    很有指导意义!

  83. assiwe
    *.*.*.*
    链接

    assiwe 2010-03-25 15:18:00

    话说绝大多数的.net程序员需要知道数据结构,计算机原理这类东西吗?
    比如排序,尽管自己实现可能可以比数据库或者List自带的sort快许多,但是正常的.net程序员不会有人去为了这点性能去代替数据库自己实现吧?

  84. 老赵
    admin
    链接

    老赵 2010-03-25 17:26:00

    @assiwe
    你的“比如”是没错,但是第一个问题的答案还是“需要”。

  85. 大头鬼
    115.172.204.*
    链接

    大头鬼 2011-05-20 20:42:04

    同为示范性软件学院,大量使用本校产的垃圾教材,课程顺序及其不合理(大一下开始学习计组OMG),高年级才开始英文版教材,杯催的摧残了一大批童鞋

  86. zicjin
    222.66.81.*
    链接

    zicjin 2011-08-15 15:03:40

    现在这门课已经成为了复旦大学的精品课程之一:“计算机系统基础”

    这里的链接还能有效的么?

  87. yangtou
    123.157.255.*
    链接

    yangtou 2011-10-15 20:37:30

    一本大一大二的教材而已

  88. 香草
    61.149.89.*
    链接

    香草 2011-10-20 17:36:31

    虽然 ,帖子很老了,我却第一次看,英语还是看不了,学校时期确实没有好好学习,不会后悔,只是有些时候感伤,假如上大学的时候,大家又重新回到了同一起跑线的话,显然,我曾留恋偷懒时的味道。毕业之后,面对独立,向家人宣布我要独立了时候,却发现:不是实现自我的经济独立,而是依靠朋友的经济帮助下,慢慢找到份工作,依靠在学校的学习的内容想生存肯定很难,想回到家的时候扬眉吐气,所以开始学习技术,更加研究。却又发现了英语0.0,当初过线都惊险动人。老赵,现在该怎么办,你这介绍的东西离我有点远啊。我现在22,我这个还有做大牛的梦想,老赵,现身求指导。迷茫却想在程序员道路上走下去。

  89. weiweisohu
    59.50.85.*
    链接

    weiweisohu 2011-11-29 22:10:11

    多谢老赵,帮我们排除了一本不需要看的书……

  90. 链接

    Chou 2012-02-18 00:42:36

    查阅CSAPP的书评,偶然找到了这里,由CSAPP的书评,再看了你的书托系列。深有共鸣,才发现同为书痴,特别是都热爱经典。一本书的好坏对一个人的影响重大,不仅仅影响一个人的知识架构,还影响到一个人的思维能力,一本好的书,再给予你我知识的同时,也能够不断培养我们面对问题的正确思考方式,提升我们解决问题的能力。举一反三,触类旁通是每一本经典书籍都推崇备至的,而且能够高屋建瓴。统领知识,给人醍醐灌顶的感觉。CSAPP这本书,毋庸置疑,一再是众多大牛们所推荐的经典。这本书的正如你所说的一样,广而不深,但是能够对程序员理解计算机系统起到了开拓视野的作用,为写出高效稳固的程序奠定了基础,一个稳固高效的程序也是一个优秀程序员深厚内功的体现。这一切都来源于对整个计算机系统的了解程度。CSAPP无疑是能够让读者收获技术上的愉悦,也能感受作者好不枯燥的笔锋。我觉得国内书籍和国外经典书籍,一个比较显著的差别就是他们的语言,所带给读者的观感。好多国外的经典都能够让人读的上瘾,国内只是生搬硬套的列规律述原理。实在乏味。国内外学者著述的风格由此提现。好书的好不再赘述了,只有好好的品读才能体味其中的好处。在这里还是比较赞同博主的阅读方式的。希望博主能给出更多自己的阅读心得,一同分享,一同进步!

  91. uncletwo
    61.142.103.*
    链接

    uncletwo 2012-05-29 16:52:59

    1、上面的提到的书一本都没有看过,也不打算看,个人感觉适合自己工作和发展的书就是好书,每个人的工作和发展情况都不一样,所以上面提到的书不一定适合每一个人,个人还是按照自己实际情况来选书读比较实际,毕竟时间有效。

    2、“例如在并行计算面前,计算系统的一些细节,如内存一致性模型,线程调度,程序的局部性(Locality)又被提上台面,否则我们很难写出高效的应用程序”。不太认同,好用的东西是使你最大限度地关注你要实现的东西,如scala里有Actor模型使你很容易编写并发代码。

  92. 老赵
    admin
    链接

    老赵 2012-05-29 17:11:13

    @uncletwo

    有Actor模型照样需要了解比如Locality方面的东西。现在又没说用起来容易不容易,说得是写的好不好。比如你用Actor模型,结果共享一个随机数发生器,结果性能差了,为什么?还有Actor模型当然好,但你试过写个Actor模型出来么?如果你要说你不需要关注这些,你只管用,那的确什么都不用了解的,我这些书是推荐给想进一步提高的人看的。

  93. 链接

    扬 张 2013-12-23 14:24:25

    我还等着后面的书托呢!

  94. 链接

    张政 2014-11-08 09:13:19

    复旦的精品课程链接失效了。。。去复旦的精品课程网上找到了打开也是403.。醉了

  95. kyfxbl
    125.94.82.*
    链接

    kyfxbl 2015-01-03 23:54:09

    严重烂尾了呀。。

  96. 夏浪
    111.203.22.*
    链接

    夏浪 2015-01-09 12:12:22

    不是在网上有么,就是没有视频了

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我