我参加了“你写书单,语雀买单”活动,下面关于我个人在计算机大学本科期间阅读过的,并且受益颇多的书籍。
我在学习每一学科之前,都花了相当一部分时间查阅对应的经典书籍,力求能在第一次学习便建立良好的理论知识和模型。
所以我建议相关专业的师弟师妹,也多参阅下列书籍,肯定比学校预定的要好。
1、C Prime Plus
理由:
- 经典、优秀的 C 语言书籍。
- 内容详尽、例子丰富
- 即便我后面没有写 C 了,该书中留下给我的宝贵知识都能让我在应对学弟学妹的疑难问题时有所方向和感觉。
在我看来,C 语言始终是科班必学语言,因为它比高级语言更接近底层,你可以确切地操作系统内存、了解内存的原理,为我们了解底层知识打下良好的基础。
推荐的阅读时期是在:大一上
难度:※※※
豆瓣链接: C primer plus
2、C 陷阱与缺陷
理由:
- 精致、小巧,但是五脏俱全
- 里面许多知识点,不点出来你可能没意识到;点出来,理解起来就像捅破窗户纸那么简单
推荐的阅读时期是在:大一上(可以与第一本一起读,也可在其之后读)
难度:※※
豆瓣链接: C 陷阱与缺陷
3、大话数据结构
理由:
- 入门级数据结构引导书
- 简单有趣的叙述、丰富的例子和详实的代码讲述可以给新手带来良好的获得感
注意哦,这里是入门级的引导书,目的是用更轻松地方式让你掌握计算机数据结构知识,以便我们后面看大部头的时候不那么吃力。
推荐的阅读时期是在:大一下
难度:※※
豆瓣链接: 大话数据结构
现在你大一下的时候,其实是开始使用 C/C++ 写小中型程序的时候,学完数据结构然后立刻运用上去。这个时期,你目标应该放在:
- 建立对计算机的抽象概念
- 建立对计算机语言、编程的感觉
- 快速提高代码编写能力
4、Java核心技术·卷1:基础知识
理由:
- 经典、深入浅出的 Java 讲解材料
- JAVA 的书籍,正常来说都看这一本;第一次阅读可能难度偏大,所以需要反复研读
推荐的阅读时期是在:大二上
难度:※※※※
豆瓣链接: Java核心技术·卷1:基础知识(原书第9版)
5、汇编语言(王爽)
理由:
- 此时你应该修完了学校开设的《数字逻辑》、《电子电路》相关底层课程,可以开始研读汇编语言了
- 此本书籍,重在使用,让你在使用中了解汇编语言、了解硬件底层原理和过程
- 结合你之前学过的 C 语言相关知识,会让你对计算机底层由不一样的了解
推荐的阅读时期是在:大二下
难度:※※※
豆瓣链接: 汇编语言
6、数据库系统概念
理由:
- 当你修完 Java 相关知识,你现在大概可以写一些看起来还可以的程序了,但是我们的路线不能断。
- 这本书是一部大部头经典,不建议“一口闷”。推荐的读法,应该是长周期、慢研读。
推荐的阅读时期是在:大二下
难度:※※※※
豆瓣链接: 数据库系统概念
7、SQL基础教程第2版
理由:
- 因为第六本属于理论内功类,所以有时候你需要快速查阅一些 SQL 语法知识的时候就显得力不从心
- 这一本同样是轻量级 SQL 语法教程,当你阅读过前六本,此时你的阅读功力应该已经不错了,这样这本书可以被你快速查阅
推荐的阅读时期是在:大二下
难度:※※
豆瓣链接: SQL 基础教程第 2 版
8、计算机网络(谢希仁)
理由:
- 如果不出意外,贵校应该会定此书作为教材
- 这本书内容详细、解释清楚,虽然免不了有一点枯燥,但是作为概览型教材,算是不错的了
推荐的阅读时期是在:大三上
难度:※※※※
豆瓣链接: 计算机网络(谢希仁)
9、计算机组成与设计硬件/软件接口
理由:
- 当你学完数字逻辑、电子电路、汇编语言和 C,这个时候我们可以开始深入理解计算机组成原理了
- 在这里,你会看到计算机从硬件组成到软件运行的全部过程
- 这本书会丰富你的底层知识
推荐的阅读时期是在:大三上
难度:※※※※
豆瓣链接: 计算机组成与设计硬件/软件接口
10、UNIX环境高级编程 第3版
理由:
- 此时你学者计算机组成,然后你可能还有一部分的 Linux 系统知识,我们可以考虑开始研习世界上最流行的操作系统 *nix
- 阅读完此时,加上你的 C 语言知识,你会明白系统运行中,所有高级程序指令变成机器语言的过程
- 你会深入了解 Unix 系统令人着迷的原理和构造
推荐的阅读时期是在:大三下
难度:※※※※※
豆瓣链接: Unix 环境高级编程第三版
11、深入理解计算机操作系统
理由:
- 相信你一直听别人谈起这本神书的大名
- 为什么我将它放在这个时候来看呢,因为这个时候你学完底层知识、同时正在学习 Unix、计算机组成,如果你再同时看这本书,三本书相辅相成,效果惊人!(突然像传销哈哈
推荐的阅读时期是在:大三下
难度:※※※※※※
豆瓣链接: CSAPP
12、构建之法
理由:
- 大三时候,你的学校应该会给你开《软件工程》这门课程。软件工程涉及的范围十分广泛,而有一些细枝末节的东西对于当前时期的你并不多有用处,所以我推荐这本书来作为你的《软件工程》入门书籍
- 此书籍不是百科全书式的宝典,它只讲在实际开发中涉及的软件工程原理,对于还未有实际项目经验的你们来说,是很不错的开阔眼界的书籍
- 书籍里不仅会阐述“软件工程是什么?”这样一个终极问题,还会带你接触实际项目中的:团队协作、代码规范、开发流程等等,涵盖了软件开发的一整个生命周期
推荐的阅读时期是在:大三
难度:※※
豆瓣链接: 构建之法
结束语
- 为什么没有算法书?
- 贵校可能开设了算法课程,建议听老师讲解算法知识并做好相应题目,后期可以自己选择在网上题库刷题
- 为什么没有鸟哥的 Linux 私房菜?
- 默认你有一定的折腾能力,在日常使用 Linux 过程中,使用 Google 就可以找到答案
- 如果你考虑系统性入门,那么再看此书也不急
- 为什么没有 C++?
- 个人拙见,我们已经学了 C 语言,C++属于 C 语言的超集,如果后面需要学习 C++ 的时候再学也不迟
- Java 作为面向对象入门语言个人觉得稍微合适一些,因为学习 Java 的人很多,网上关于此的资料也相对较多,所以 Java 可能更适合作为第一门面向对象语言
- 那 Python 呢?
- 噢,我的老伙计,Python 确实非常好,语法比 Java 简单,写起来也很“流畅”
- 但是在入门的初期…我个人认为还是不要选择过于抽象的语言;即便 Java 已经很高级了,但是它仍有许多严格的语法特性,这样帮助你从 C 这样一门面向过程编程语言过渡到面向对象编程
- 等你学完 Java,再学习其他语法简单的语言就可以非常快速上手了
寄语
夫君子之行,静以修身,俭以养德。非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也,非学无以广才,非志无以成学。
慆慢则不能励精,险躁则不能冶性。年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及! –《诫子书》诸葛亮