先决条件:你需要有高中毕业的水平。学习方式:可以自学,最好有自己的电脑。专注于方向:专注于软件,而不是计算机硬件。英语要求:掌握3000个左右的常用词,能看懂就差不多了。如果不想看英文,可以找中文翻译。我个人比较喜欢读中文。我通常买非常好的中英文书籍。下面列出的书都是循序渐进的介绍,都是我在自学的过程中学到的,感觉不错。计算机基础书籍和Java相关书籍的比例是5:2,所以非常强调基础。核心书近35本,预计耗时两年半左右。别以为书那么少。平均一个月完成一个就挺好了,说明你在计算机方面有一定的天赋。:)另外还有35本延伸阅读的书,可以选择。
目录
计算机基础书籍Java相关书籍开阔眼界。1.计算机基础书籍
1.1与计算机相关的数学
主要有:微积分、线性代数、概率论与数理统计、离散数学
微积分的力量京东月销量1000好评率99%无理由退换京东配送官方店¥64.8购买工程数学:线性代数京东月销量2257好评率99%无理由退换京东配送¥21.1购买概率论与数理统计京东月销量3302¥44.6购买离散数学及其应用京东月销量100好评率99%无理由退换京东配送官方店¥66购买相对来说,离散数学是最有用的。其他三门课程会更多的用在数值计算、计算机图形学、算法复杂度分析等领域。
国内很多大学用的都是高等教育出版社同济大学写的书,我也看过。
不过我还是推荐顺便看看这四本国外出版的书。学习这四门课不必像数学系的学生那样对自己要求很高。达到70分的水平就够了。
1.2计算机科学导论
顾名思义,这是计算机专业学生的第一本专业书。
这本书概述了整个计算机科学的所有领域,到目前为止,
包括最基本的十进制、二进制和十六进制;数据存储和操作;
计算机、网络、操作系统、算法与数据结构、编程语言、数据库、人工智能等的构成。
看完这本书,你就知道整个计算机科学有什么了。这本书适合广泛阅读。遇到不懂的可以直接跳过。
1.3 C编程语言
编程入门课程《你好,世界》就出自这里。虽然只有160多页,但却是永恒的经典。
这本书要精读,需要在电脑上运行全书中的代码示例,习题也要做。
另外,推荐再读一遍《编程的抽象思想——C语言描述》。本书既是C语言的应用实践课程,也是进一步学习数据结构和算法的入门读物。
书中用了大量的例子来介绍递归、栈、链表、树、图等等,还延伸到了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引擎研究的前提。
先看自动机理论,语言,计算导论,
它告诉你什么是自动机,什么是正则语言,什么是上下文无关语言,还有图灵机。
清华大学的《形式语言与自动机理论》也可以同时看。
然后可以看《编译原理》,也叫“龙书”。这本书是你想从事编译器开发时的必读书。
编译原理有两个版本。如果你有钱,建议你两个版本都买。
《编译原理》和《自动机理论、语言与计算导论》有一些重叠。
有些人不看自动机和形式语言,直接看“编译原理”,有点难。
自动机理论、语言和计算导论是编译原理的主干课程。
最后可以看《编程语言原理》和《编程语言练习方法》
其实这两本书并不偏重理论,只是有了之前的基础就比较简单了,算是对各种编程语言的一个概述。
各种通用语言都有涉及,包括过程语言、面向对象语言、函数语言,甚至基于逻辑的编程语言。
1.9数据库
这也是我目前的工作和研究领域。
没有人会反对说数据库和编程语言是整个计算机科学中应用最广泛的领域,
关系数据库管理系统在过去几十年中一直占据着绝对的主导地位,
随着互联网、社交网络的发展和数据的增长,图形数据库和NoSQL正在蓬勃发展。
因此可以预见,数据库在未来五年将是一个非常活跃的领域。
数据库的理论书不需要读太多,
只要你看过上面的《数据库系统基础教程》和《数据库系统实现》,基本就够了。
当然,你需要慢慢品味,仔细阅读,至少读两遍。
《事务处理》这本书,如果你以后不从事数据库事务领域的研究,是不需要看的。
前两本书里也会有几个章节讲业务相关的知识。
此时,如果你能完成并学习上面第9节所列的书籍和相关知识,
那么恭喜你,你的计算机基础已经打得非常扎实了。
2.Java相关书籍
2.1入门
我用的版本比较老,《Java核心技术》最近出了第9版,只有经得起时间考验的书才配出第二版。
每个Java程序员都应该有一本Java核心技术。
不用说,除了AWT、Swing、Applet、RMI、CORBA、XML、JNI这些相对很少使用或者过时的技术章节
对于其他人,你应该也必须认真阅读,边阅读边在电脑上练习。
另外,下面更专业的书里会介绍线程、IO、JDBC、网络、安全相关的章节。
这类书被归类为高级书籍。
2.2 Java线程
这本书讲了与线程相关的各种API,以及一些基本概念:死锁、竞争条件、锁、条件变量、屏障等。
如果想从事Tomcat之类的一些服务器的开发,了解线程相关的东西是很有必要的。
2.3 Java IO/NIO
http://book.douban.com/subject/1433583/
我在原公司看的是英文电子版,类似于“Java Thread”的风格。它完整地介绍了相关的API和基本概念。
NIO的知识对于实现Netty这样的高性能网络框架至关重要,同样,NIO被Tomcat和Jetty用得太多了。
2.4 Java网络编程
又一本经典的书。如果你想写一个好的网络程序,你必须读这本书。
InetAddress,Socket如果你连这些都不知道,那就买这本书看看吧。
2.5 Java安全性
一本经常被“忽略”的好书,在中国没有多少人听说过...这本书的作者和『Java Thread』的作者是同一个人。
书中介绍了Java的整个安全模型,包括沙箱、安全管理器、密钥、证书、消息摘要、数字签名、SSL等。
这本书不谈高深的理论,很实用,
本书中提到的一些技术将用于任何需要安全的开源项目,如Tomcat、Jetty、Netty、Cassandra和H2。
2.6爪哇JDBC
http://book.douban.com/subject/1886537/
我也看了电子版,但是没看完。因为我以前读过JDBC规范,所以没有必要仔细阅读。
虽然ORM和SQLMapping框架(如Hibernate和iBatis)被广泛使用,
不过我还是建议你先掌握JDBC,这样无论你以后看MySQL的JDBC驱动还是iBatis的源代码都会很有帮助。
2.7有效的Java
2002年颠簸奖。慢慢享受,我就不啰嗦了。
2.8 Java和模式
我找不到我的书,请给我一个链接,
http://book.douban.com/subject/1214074/
实际上,这本书不合我的口味。太厚太啰嗦了。我不喜欢里面的故事,比如传包裹。
如果这本书压缩到300页左右就更理想了。
喜欢就给我点个赞!!!