计算机科学读什么——基于出版社的计算机基础书籍推荐
写在前头
本文第一次成稿之时,尚且只是一篇随性而为的简单推荐文。然则某日发现了六年前写作的此文
(https://post.smzdm.com/p/31284/),顿感有珠玉在前,这初稿怕是无颜发出去的
于是再加修枝剪叶、增补润色,成了今天的第二稿。
序言
如果你是一个有能力阅读外文原版书、或者做到能无视书本品质的读者,那么依照实证主义的哲学观点,选择出版社似乎显得固执且愚昧——毕竟那些名声在外的经典之作中很难混入绝对的渣滓。然则实证主义往往代表着被忽视的差异性和独立性——如果你没有能力阅读原版书、或者不堪糟糕的书本质量(纸张,印刷),那么以出版社作为初步筛选的标准显然是个不坏的选择。
笔者将以国内基本通用的计算机科学(本科)的专业课教学路线作为基础(这个路线的典型特质是两到三门高级语言【C再加上C++、python、Java当中三选一或三选二】 -> 汇编语言 && 数据结构【以及部分算法知识】 -> 计算机组成原理 && 计算机网络 -> 操作系统 && 编译原理),以出版社为单位一一道来。本文中提到的书籍以及相关观点均为笔者研读之后的若干想法,欢迎讨论以及批评指正。
本文只讨论由上述学习路线相关的书籍——进阶阶段、细分领域的优秀书籍更是浩如烟海无从计数。“西瓜书”(清华大学出版社)、“花书”(人民邮电出版社)、“龙书”(机械工业出版社)之类,只能忍痛放逐出本文的讨论范围之列了。
英文书名使用斜体表明,中文书名正常使用书名号。
京东自营图书开学季满一百减五十,所以当前的标价(2020.9.10)比日常价普遍高出了1/3
机械工业出版社
在计算机科学类书籍领域,机械工业出版社是毫无疑问的引进书之王,尤其是黑皮书系列可谓是深入人心。
机械工业出版社最为诟病的是所出书籍的品质——纸品薄(做起批注简直是噩梦),印制轻微的深浅不一(不影响观感)。虽然技术类书籍并不像文学、典籍类那样注重质感,但还是希望能够有所进步,至少做到和同行平起平坐吧。
Computer Systems: A Programmer’s Perspective
译名:《深入理解计算机系统》
首先必须澄清——这不是一本入门书!!!(哈尔滨工业大学计算机类考研的专业课参考书,居然有人推荐做计算机科学的入门书???)
基本包含了计算机组成原理的知识以及操作系统的主干知识,总体难度和深度实际上小于操作系统 + 计算机组成原理 + 计算机系统结构。但是又普遍高于一般计算机科学学术的知识水平。
值得关注的是本书的英文原名直译——《计算机系统:以一个程序员的视角》,也是对本书含义更好的诠释。Computer Organization and Design: The Hardware/Software Interface(《计算机组成与设计:软件/硬件接口》)前几章(讲解“计算机组成原理的部分)和本书高度重合,选购的时候务必稍加注意。
时间紧迫的,可以暂时只读第2、3、6、8、9章。
Foundation of Computer Science
译名:《计算机科学导论》
CSAPP不是入门书,这一本才是。
没有复杂的理论介绍,专注于知识体系的构建。对于很多入门者,计算机科学的基础知识可以说匮乏到极致(笔者就曾经遇到过经济学跨考来的研究生学长(姐),连内存显存、核显独显都无法分清楚,对于各种深度学习算法能够侃侃而谈,结果一旦需要配置略复杂的环境或者出现硬件相关的报错就得求助于人)
另外还有中文名一字之差的 Computer Science: An Overview(《计算机科学概论》)。而实际上两书的内容可谓大相径庭:“导论”专注于初学者的知识体系构建,而”概率“更像是对计算机体系的抽象化概括以及数学化描述——买书的时候千万注意了。
Computer Networking: A Top-Down Approach
译名:《计算机网络——自顶向下方法》
对于大部分普通本科生水平(以及自我要求)的学习者而言,学习”计算机网络“的过程很容易让他们回想起高中时代的生物课堂。固然拥有需要理解甚至实操的部分,但是需要了解的新概念更是遍地开花、层出不穷。
本书(也同时是很多”黑皮书)的优点在于大量的、明晰的图例和图示。更加便于理解甚至(极端的说)记忆。
如果你想更进一步的深入了解网络世界,还有三卷同样来自机械工业出版社的 TCP/IP ILLustrated (“TCP/IP详解 系列”)奉上
为什么没有他们?
Introduction to Algorithms
译名:《算法导论》:毫无疑问的经典,其本质更像是一本”数学“书。如果从事相关研究、天赋异禀或是算法方面自我要求极高,建议仔细研读,否则这部鸿篇巨制所带来的作用只会是不断消磨你本就不充裕的时间、耐心以及自信。Data Structures and Algorithm Analysis in C
译名:《数据结构与算法分析——C语言描述》,广受好评,但恐怕更多的是跟风而已。该书的译制质量极其糟糕,存在大量的语句不通顺之类的问题。Data Structures and Algorithm Analysis in Java,即本书的Java语言描述版本似乎略好一些。其实国内作者编写的数据结构教材也不乏高质量者,推荐李春葆的《数据结构》(虽然知识深度上要差一些)。
人民邮电出版社
人民邮电出版社由工信部主管,主要的立足点就是信息技术、通信以及相关技术产业的书籍出版。计算机领域书籍的品类较机械工业出版社略少,但是在书籍品质(纸质,封面质感、印刷质量)以及翻译的质量上要略胜于后者。
C Primer Plus
人民邮电出版社最经典的出品当然是 C Primer Plus,中文版已经来到第六版。从入门到进阶一本通的存在(前提是认真完成所有的练习,特别是上机的作业)。
缺点嘛,啰嗦。如果是有一定基础知识的读者可能会认为本书过于冗长枯燥。不过在国内的计算机教育体系大多还是以C语言为起点,一本无微不至到啰嗦的教材对于初学者也不是是坏事。
另外,如果只是入门学习,书中ADT、队列、二叉树的内容可以暂时略过(或者是提前学习),650多页的内容大概能减少1/4。
《鸟哥的Linux私房菜》
本书算得上是最具知名度的Linux入门书,全面、详细(当然部分也是因为确实缺乏完整的Linux教材的缘故)。
当然,如果你只是想摆脱Windows环境,那么这本书确实太厚也太全,毕竟Linux蕴含的知识和使用场景的确太过丰富。
如果参考很多优秀教材的做法来调整一下顺序,比如将”安装“这一部分放到第一章,将基础知识介绍的内容放到后面的篇幅来逐渐引入。对于初学者来说,最好的学习方式可能是从一个最初级最基本的实践环境开始。
Algorithms
译名:《算法》
冠以如此宏大的标题,依旧好评如潮,可见本书功力。
对于算法这一知识领域而言,Introduction to Algorithms 当然是无可超越的经典,但是全书未免有点过于的”数学“,读起来不免让人心生畏惧。如果不是对算法方面要求极高的读者,不建议选 Introduction to Algorithms。
Algorithms 一书唯一的问题可能是本书选择使用Java语言编写示例代码,没有相关编程经验的读者可能需要先先花一些额外的时间对Java做一些初步了了解(本书的第一章即有相关内容)。
为什么没有它们?
C++ primer plus:
很少有学习者会零基础开始啃
C++这门极端复杂、宏大、应用广泛的语言,而C++ primer plus更像是C primer plus式的”带你入门“,因此全书的前一半对很多人显得过于基础,而后一半(C++的精华、难点所在)才是精髓。对于大部分读者,建议选择C++ primer(少了plus)。另外本书的翻译质量似乎并不理想,虽然语句上似乎挑不出什么毛病,但读起来总感觉不够通透和亲切。Python Crash Course
译名:《
Python编程:从入门到实践》对于大部分人而言,学习完
Python基础语法之后,就积极的投入到实践中去吧,别去纠结那些诸如”多线程“之类的功能了——你可能永远都用不到它们,假使某一天遇到了,现学现卖也不为迟。如果你没有任何编程基础,推荐 Learn Python3 the hard way(《笨办法学Python3》),先进行实现而淡化概念的方式能让0基础者更好的入手。
如果你已经学习过任何一门高级语言,那么本书的前2/3可能只会花费你一天甚至更少时间,直到你遇到那些高级特性为止。然而受制于
Python的自身特点以及性能,这些高级特性被使用的机会可能寥寥无几。
电子工业出版社
电子工业出版社更多的专注于本土的原创书籍,重点也更偏向于技术进阶而非基础知识。
当然近些年也开始在引进和基础类上发力,致力于成为细分领域内的全职型选手。
就目前来看,基础知识领域出版的几本书无论在译制水平还是书本质感上表现都能与深耕多年的人民邮电出版社论高下,总体优于机械工业出版社。
C++ Primer
相较于《C++ primer plus》循序渐进式的教学套路,本书显然要来的直接许多——作者假定你熟悉C,从而避免了许多由C进阶时所不必要的重复。
必须再次重申的是,C++是一门复杂、宏大、应用广泛的语言。指望在学习完某本C++教程之后就能将这门”屠龙之术“在各个领域游刃有余显然是不明智的。
Operating Systems: Design and Implementation
译名:《操作系统:设计与实现》
Linux之父Linus的灵感源泉,借助这本书之力写出了初版的Linux内核。讲解通透,配有代码。
知识覆盖面不足是硬伤,按大纲的要求来看,本书无法替代教材使用,只能作为加深知识理解的一个工具。
Code:The Hidden Language of Computer Hardware and Software
译名:《编码:隐匿在计算机软硬件背后的语言》
本书不属于传统的经典书籍之列,不过依旧值得一读。
从计算机组成原理的角度进行的一堂计算机导论课(传统的导论课更像是意犹未尽的科学史)
后半部分讲解硬件和电路的知识较多、软件相关的内容较少,且难度也较前版本书大。如果不是对硬件很感兴趣或者时间紧迫,可能会劝退了。
其他
还有一些出版社,书籍品质愈发参差不齐,但依旧在领域内值得一提:
清华大学出版社
很难想象诸如“从入门到精通”之流的一系列垃圾会出自挂着THU名字的机构。
当然还是有一些不错的书籍,不过总体上偏向应用和实践(比如前文提及的西瓜书)。
基础内容的书籍相对少,只推荐王爽的《汇编语言》。“大话”系列不算糟,但是不够学术且知识深度不足,就不做推荐了。
高等教育出版社,以及相关的大学出版社
此类出版社的出版内容主要是国内编者编制的教材,质量参差不齐、总体堪忧。如果某本此类书籍被知名院校选作了教材或专业课的参考书目,那么这本书也许会值得一些时间的研习,否则不值得在此处花费时间。
最后
最后再罗嗦几句:选一个合适的出版社、选一本合适的书,只是学习的开始。一门语言学到课时结束依旧只会在控制台打印Hello World、一本书买来许久塑封依旧完好……此类的例子不胜枚举。一句诗与诸君共勉:纸上得来终觉浅,绝知此事要躬行。再问一次自己:




















我想学物理
数学分析、概率论、代数学、组合数学、图论、数论、逻辑学、复变函数论、实变函数论、计算理论
校验提示文案
球球骨骨爸爸
校验提示文案
饮涧癫猿
校验提示文案
值友1815715655
approach就觉得挺喜欢
校验提示文案
格格蕉蕉
校验提示文案
广州小胖
校验提示文案
松林老道
校验提示文案
小推君
校验提示文案
jackfled1
校验提示文案
值友1711453191
校验提示文案
值友id233
校验提示文案
值友9144569810
校验提示文案
值友6377315104
校验提示文案
爱苏蘇的y
校验提示文案
爱苏蘇的y
校验提示文案
小推君
校验提示文案
松林老道
校验提示文案
值友6377315104
校验提示文案
值友id233
校验提示文案
我想学物理
数学分析、概率论、代数学、组合数学、图论、数论、逻辑学、复变函数论、实变函数论、计算理论
校验提示文案
jackfled1
校验提示文案
值友1711453191
校验提示文案
广州小胖
校验提示文案
格格蕉蕉
校验提示文案
值友1815715655
approach就觉得挺喜欢
校验提示文案
球球骨骨爸爸
校验提示文案
值友9144569810
校验提示文案
饮涧癫猿
校验提示文案