书里用了大量的例子介绍了递归、堆栈、链表、树、图等等非常常用的知识,并且还引申到Java的一些基本概念。
1.4 理解计算机系统
这本书主要是介绍计算机整体的软、硬件系统的,包括处理器、存储器层次结构、虚拟存储器、链接、IO、网络等等,
读完它你大概知道你所写的程序是怎么通过计算机的硬件和底层软件系统运行的,
里面时不时提到C语言,所以先学C语言再学这本书比较合理(或者穿插着学也可以)。
另外,可选的,推荐再读『计算要组成及汇编语言原理』,书不厚,240多页,最主要是以Java虚拟机为例来讲的。
我在读自考大专时是用这本: IBM-PC宏汇编语言程序设计
1.5 算法导论
学算法的都知道这本书吧,非常有名,老实说这书有点难度,需要自己慢慢啃,
去大公司面试时特别用得着,快速排序、二叉树、红黑树、动态规划、最短路径这类算法会常拿出来问的。
1.6 操作系统
进程、线程、CPU调度、同步、死锁、内存管理、虚拟内存、文件系统、I/O系统这些最基本的概念和原理必须掌握和理解透,
对于以后的工作是相当有用的。
1.7 计算机网络
http://book.douban.com/subject/1179807/
这本书一时没找到,我就不拍照片了,只要大概了解一下即可,除非打算将来做网络管理员之类的工作。
1.8 程序语言理论与编译原理
这是我目前工作和研究的领域。
这类书比较偏理论,会有点难读,不过我还是强烈建议你硬着头皮认真读一读,
只要你能理解透书中的内容,以后你再学习新的程序语言都是件轻而易举的事,
并且也是从事数据库SQL引擎研究的前提。
先读『自动机理论、语言和计算导论』,
里面告诉你什么是自动机、什么是正则语言、什么是上下文无关语言,还有图灵机。
清华大学的『形式语言与自动机理论』也可以同时看。
接着就可以看『编译原理』了,此书也叫“龙书”,当你想从事编译器开发时这本书是必看的,
『编译原理』出了两个版本了,如果有钱的话我还是建议你两个版本都买,
『编译原理』和『自动机理论、语言和计算导论』的内容有一些重叠,
有些人一上来就直接看『编译原理』而不看自动机和形式语言,这会有点难,
『自动机理论、语言和计算导论』算是『编译原理』的前导课程。
最后可以再读读『程序设计语言原理』和『程序设计语言实践之路』
这两本书其实不偏重理论的,有了前面的基础反而更简单,算是各类程序语言的综述,
各种泛式的语言都有涉及,包括: 过程式语言、面向对象、函数式语言,甚至基于逻辑的程序语言都讲了(比如Prolog)。
1.9 数据库
这也是我现在的工作和研究领域。
要说数据库和程序语言是整个计算机学科应用最广泛的领域应该没有人会反对,
关系数据库管理系统(RDBMS)在过去的几十年直到现在都占着绝对的统治地位,
随着互联网、社交网络的发展以及数据量的增长,图数据库、NoSQL都在蓬勃发展,
所以可以预计未来5年内数据库会是一个非常活跃的领域。
数据库的理论书籍不需要读得太多,
只要读完上面的『数据库系统基础教程』『数据库系统实现』基本上够用了,
当然,你需要慢慢的品尝、要精读,至少要读两遍以上。
『事务处理』这本书如果你将来不从事数据库事务领域的研究不需要读,
前面两本书中也会有好几个章节讲事务相关的知识。
至此,如果能学完、学好上面9小节中列出的书籍和相关知识,
那么恭喜你,你的计算机基础已经打得非常牢固了。
2. Java相关书籍
2.1 入门
我用的版本比较老, 『Java核心技术』最新已出到第9版了,只有经得起时间考验的书才值得一版再版,
原文转自:https://github.com/codefollower/My-Blog/issues/1