计算机类学科推荐书单(虽然是转载,但自己还会不定期更新的~)
2016-07-25 14:26
405 查看
下面这些书有的我读过,有的我只读了一部分章节,有的我想读但是没有读。对其评论可能有所偏颇,希望大家能够补充或者纠正。
算法导论(Introduction
程序员实用算法(Practical
算法:C语言实现(Algorithms
组合数学(Introductory
具体数学(Concrete
自动机理论、语言和计算导论(Automata
Software
Types
计算机程序的构造和解释(Structure
编程的本质(Elements
操作系统概念(Operating
现代操作系统(Modern
操作系统:精髓与设计原理(Operating
编码:隐匿在计算机软硬件背后的语言(Code:The
深入理解计算机系统(Computer
编程卓越之道第一卷:深入理解计算机(Write
编程卓越之道第二卷:运用底层语言思想编写高级语言代码(Write
UNIX操作系统设计(The
UNIX编程艺术(The
深入解析Windows操作系统(Windows
Windows编程启示录(The
编译原理(Compilers:Principles,
程序设计语言原理(Concepts
编程语言实现模式(Language
链接器和加载器(Linkers
C程序设计语言(The
C程序设计语言习题解答(The
C语言程序设计:现代方法(C
C语言参考手册(C:A
C语言接口与实现(C
C专家编程(Expert
Binary
内存受限系统之软件开发(Small
C++程序设计语言(The
Accelerated
C++语言的设计与演化(The
C++标准程序库(The
C++编程规范(C++
Java核心技术(Core
深入理解Java虚拟机(Understanding
Java并发编程实战(Java
UNIX网络编程(UNIX
7周7语言:理解多种编程范型(Seven
深入浅出设计模式(Head
设计模式:可复用面向对象软件的基础(Design
企业应用架构模式(Patterns
设计模式沉思录(Pattern
代码整洁之道(Clean
人月神话(The
观止——微软创建NT和未来的夺命狂奔(Show
程序员修炼之道(The
卓有成效的程序员(The
算法
算法概论(Algorithms):这本书言简意赅,仅从算法的设计本身讲述了一些常用算法,书比较薄。其内容的组织形式比较利于学习算法的设计和思想,能够带来一些本质性的理解。建议至少读两遍。
算法导论(Introduction
to Algorithms):这是一本经典教材,内容详尽、丰富。中文版不少插图有错误,强烈建议购买英文版,然后自行比对出版商提供的errata。书后的练习题也很多,有些难度很大,建议有选择性的做。这本书主线内容有两部分——算法设计和算法性能分析。两者相互影响相互促进,是以一个完全不同于算法概论的视角来解析算法的。建议至少读三遍。
程序员实用算法(Practical
Algorithms for Programmers):这本书我没有读过。前两本书详尽的介绍了如何去设计一个好的算法。这本书侧重于在工程上如何实现高质量的算法。本书中的一些算法与前两本书中描述的算法并不完全相同,这一点需要特别注意。建议读这本书的时候,同时自己多实现一些算法,对比一下差别。
算法:C语言实现(Algorithms
in C):这本书比上一本书还要详尽的实现了很多常用算法。同时也不乏对算法的分析和原理的讲述。有些部分,比如红黑树,甚至比算法导论中讲述的还要精彩。
算法艺术与信息学竞赛:上面提到的常规的、通用的算法,还是比较容易理解的,但是你是否真正的理解了其深层次的思想和本质?看看这本书吧,竞赛题基本上总是变态和匪夷所思的,你的任务就是在不可能中去寻找那一丝丝成功的路径。这是一本能够让你大脑超负荷运转的书。看这本书的同时,你可能要参考很多其他的资料。同时,希望你能够多做些ACM题。你会发现,很多问题需要你从不同的角度去看待,你可能会设计出很多算法来解决这一问题,但是经常会有更优秀的算法带来本质上的改变。
编程之美:微软技术面试心得:这本书也是一本难得的好书。书中的每一个问题都由浅入深的给出了多个解决的算法,之后还会进行更进一步的扩展。
代码之美:这本书记叙了很多实践中的代码优化问题,涉及到的语言、设计层次都很多,可能需要读者的知识面比较广,才能够有比较大的收获。
计算机程序设计艺术(The Art Of Computer Programming):只看过几十页。怎么说呢,只要你能耐得住寂寞一直看,肯定看得懂。就是内容实在是太详尽,太多了一些。算是算法类的终极读物吧。
数学
组合数学(Introductory
Combinatorics):我所遇到的很多算法方面的问题,都是与组合数学有关的。同时,学习组合数学,也为古典概率论的学习打下了基础。这本书虽然只是简略的介绍了组合数学的方方面面,但是每一方面讲的也不会让人觉得不够细致。组合数学中主要讲述了三类问题——组合计数、组合设计、组合优化。这本书比较偏数学一些,和计算机科学的联系并不紧密。
具体数学(Concrete
Mathematics):有人认为这本书是组合数学的进阶版本,我不这么认为。我认为这本书是从另一个角度讲述了组合数学,尤其是偏向于计算机科学应用。书中的很多内容十分的精妙,让人赞不绝口。看这本书的时候一定要耐着性子慢慢看,有可能几个小时才看不到 10 页。这本书建议至少读两遍。
陶哲轩实分析:这本书倒是可以视作数学分析的进阶版本。反正一般情况下计算机专业也用不上复分析,好好学学实分析还是很有必要的,尤其是在学习概率论等相关内容的时候。
概率论与数理统计:这方面我看的书比较少,只是觉得考研教材编的也不错。
统计学习方法:这本书我还没有看过。不过我觉得其内容应该与机器学习、数字图像处理、自然语言处理等十分相关。
信息论、推理与学习算法:说实话,我至今也不知道信息论会不会对我今后有所影响。我觉得,如果不做编码、通信、图像处理相关的事情的话,可能信息论能够发挥的作用比较有限。
自动机理论、语言和计算导论(Automata
Theory, Languages, and Computation):这本书应该作为编译原理的前提教材。
Software
Foundations:形式化方法课程的教材。可以建立起函数式编程思维的基础。
Types
and Programming Languages:与 λ 算子有关的数学理论,如果你了解 Church 和 Turing,以及 Lisp 的话,你一定会对这本书非常感兴趣的。
计算机程序的构造和解释(Structure
and Interpretation of Computer Programs):这本书怎么说呢,反正我是看了快两遍了,还是看的很头疼。不过这本书确实揭示了一些与现在流行的用 C 语言来进行基础教学的图书所不同的编程本质。
编程的本质(Elements
of Programming):这本书我还正在看。也是一本比较头疼的书。这本书确确实实的是在讲编程的数学本质原理。
操作系统
一般性内容
操作系统概念(Operating
System Concept):经典教材,没什么多的可说。
现代操作系统(Modern
Operating Systems):没看过几页。
操作系统:精髓与设计原理(Operating
Systems, Internals and Design Principles):还没有看过。
编码:隐匿在计算机软硬件背后的语言(Code:The
Hidden Language of Computer Hardware and Software):还没有看过。
深入理解计算机系统(Computer
Systems:A Programmer's Perspective):这本书让我觉得真正将操作系统、计算机组成原理和 C 语言联系起来了,非常推荐。另外,我觉得一般可以跳过第四章处理器体系结构。
编程卓越之道第一卷:深入理解计算机(Write
Great Code:Understanding the Machine):还没看过。
编程卓越之道第二卷:运用底层语言思想编写高级语言代码(Write
Great Code:Thinking Low-level, Writing High-level):还没看过。
Unix类操作系统
UNIX操作系统设计(The
Design of the Unix Operating System):还没看,不过应该算是Bible了吧。
Linux内核完全剖析:针对于早起Linux内核代码的分析,比较简单,易于上手。
UNIX编程艺术(The
Art of UNIX Programming):这本书更多的是偏重于UNIX程序的设计原则。
Windows操作系统
深入解析Windows操作系统(Windows
Internals):还没看,不过应该算是Bible了吧。
Windows内核原理与实现:还没看。
Windows编程启示录(The
Old New Thing:Practical Development Throughtout the Evolution of Windows):这本书解释了很多原本我不能理解的 Windows 的设计,确实很多事情慢慢变得让人费解,都是历史遗留原因。
编译原理
编译原理(Compilers:Principles,
Techniques, & Tools):龙书,偏重于前端。
现代编译原理(Modern Compiler Implementation in C):虎书,确实要现代一些。
程序设计语言原理(Concepts
of Programming Languages):没看呢。
编程语言实现模式(Language
Implementation Patterns):没看呢。
程序员的自我修养:主要是和Windows有关。
链接器和加载器(Linkers
and Loaders):这本就主要是和Linux有关。
C语言
C程序设计语言(The
C Programming Language):都是计算机专业的了,就别看谭浩强了。习题非常棒,建议无论如何都要做一下。
C程序设计语言习题解答(The
C Answer Book):配套答案。
C语言程序设计:现代方法(C
Programming:A Modern Approach):没看呢。
C语言参考手册(C:A
Reference Manual):当手册用吧。
C语言接口与实现(C
Interfaces and Implementations):没看呢。
C专家编程(Expert
C Programming):很有启发性。
Binary
Hacks:一些二进制层面的技巧。
内存受限系统之软件开发(Small
Memory Software):没看呢。但是应该很有启发意义。
C++语言
C++程序设计语言(The
C++ Programming Language):Bible不解释。
Accelerated
C++(中文版):上一本书全倒是全了,不过实在是太厚了,不适合上手,这本书就好多了。
C++语言的设计与演化(The
Design and Evolution of C++):C++创始人写的,对于了解C语言和C++语言都十分有好处。强烈建议反复阅读。
C++标准程序库(The
C++ Standard Library):标准库也是C++语言不可分割的一部分。
Boost程序库完全开发指南:Boost中的很多内容将加入到C++1x中。
C++编程规范(C++
Coding Standards):有很多有意义的指导。
Java语言
Java核心技术(Core
Java):建议粗看,然后当手册用。
深入理解Java虚拟机(Understanding
the JVM):没看呢。
Java并发编程实战(Java
Concurrency in Practice):没看呢。
网络编程
UNIX网络编程(UNIX
Network Programming):厚,内容详尽。
软件设计
7周7语言:理解多种编程范型(Seven
Languages in Seven Weeks):没看呢。不同语言的思维方式不同,能够带来很大启发。
深入浅出设计模式(Head
First Design Pattern):设计模式的入门书籍。
设计模式:可复用面向对象软件的基础(Design
Patterns):Gang of Four的书,反正我上手的时候看不懂,建议看完上一本书再看这一本,然后当手册用。
企业应用架构模式(Patterns
of Enterprise Application Architecture):强烈推荐。尤其是做Web开发的。
设计模式沉思录(Pattern
Hatching):还没看。
代码整洁之道(Clean
Code):还没看。
重构(Reflectoring):还没看。
软件工程
人月神话(The
Mythical Man-Month):小说。
人件(Peopleware):如果说人月神话关注的是软件开发本身,这本书关注的则是软件开发中的“人”。说实话,看完之后心情很复杂。
观止——微软创建NT和未来的夺命狂奔(Show
Stopper!:The Breakneck Race to Create Windows NT and the Next Generation at Microsoft):就当小说看吧^_^
程序员修炼之道(The
Pragmatic Programmer):有一些启迪。
卓有成效的程序员(The
Productive Programmer):就是讲述如何在开发软件的过程中变得更加高效。
Git权威指南:强烈建议每一个程序员都读这本书,然后将Git作为自己的常备工具。
相关文章推荐
- 网络编程socket基本API详解
- Failed to connect sshd on "10.6.x6.29:99"ProxyHTTP:java.io.IOException:proxy error:Service Unavailab
- 对一次网络钓鱼攻击的逆向分析 20160722
- 元素入栈、出栈的合法性检测
- 数据结构 栈的应用一(就近匹配)
- 如何使用c语言解析httppost请求
- magedu第一天学习(计算机基础部分)
- 网络安全技能图谱
- 第二章 物理层(笔记)
- 数据结构笔记--反转链表分析
- base64转码以及网络图片下载
- SDUT2134数据结构实验之栈四:括号匹配
- 关于learntorank http://qiita.com/rockhopper/items/bb3d46f01df5f6499123
- SDUT2131数据结构实验之栈一:进制转换
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段
- file_get_contents()获取https出现这个错误Unable to find the wrapper “https” – did
- 《计算机图形学》2.1.7 立体感和虚拟现实系统
- 两个队列实现一个栈
- 《计算机图形学》2.1.6 三维观察设备 学习笔记
- [算法学习笔记]数据结构之栈和队列