当然有!但是重点是如何去啃。
这个问题我曾经也疑惑过,现在算是有了一点经验,来聊聊感受。
经常有小朋友问我:
- 有些书看的找不到重点,看不下去了,怎么办,比如[深入理解计算机系统]
- UNIX 网络编程,APUE,求指教
- 我不是科班 CSAPP 可能不是全部看得懂,该怎么办?
- 大佬,这么多书看得完吗?
- 刚开始看这些书很痛苦怎么办?
学习计算机一定不要想着速成,要下苦功夫,去啃那些经典书和源码,然后自己动手写,我大学整理了一套计算机必读的经典书籍,对于CS学习的同学帮助非常大,且十分系统,现在免费分享给大家.
就拿我当时亲身经历来说,在网上搜网络编程如何学习,很多人都推荐 UNP、APUE 这两本砖块似的书。
好嘛,买来看,从第一页挨着挨着看,而且书中的示例代码我大部分也照着敲了,最后看了七八章,发现始终是在学一些 socket api
和 系统 api 的用法,没摸到网络编程的框架思维。
后面我又去搜,看到有人推荐《Linux高性能服务器编程》,去豆瓣看了下了目录,似乎正是我想要的东西。
直接找来 PDF 开始看,果然这本书才真正让我理解了网络编程的整个套路和框架,学到了各种事件处理模式、计时器、信号处理、线程池
这些网络编程中很重要的东西。
当然 UNP 和 APUE 也是不能丢的,这两本书
我当做了字典查询,比如学到了 IO 部分,回去看 UNP 中关于五种 IO 模型的介绍。
用到 connect、listen、bind 这些函数,再回去看 UNP 第四章,不得不说,UNP 关于这些 socket API 的使用和各种异常情况的处理方式都介绍得非常详细和深入,不愧是网络编程领域的圣经。
但是初学者看却容易在细节中迷失,抓不到纲领,这也是这类书的缺点。
类似 UNP、APUE 这种书本身是面向知识体系的,而不是面向读者,它们其实更像字典,把这个领域内的所有知识,非常细致的堆叠在一起,看上去就是平铺直叙,充斥着细节,对读者极其不友好。并且书里内容实在大而全,很多根本不用学。
但是它们又是经典的,确实是这些领域内在体系性和深入性上都做得非常好
的书。
什么书才是面向读者的呢?
那就是抓住该领域的核心主干,提纲挈领,带领读者由浅入深
,同时又有一定的细节,看完让人茅塞顿开。
比如《计算机网络:自顶向下》、《Linux高性能服务器编程》、《Linux多线程服务端编程
》、《STL源码剖析》、《Effective C++》、《CSAPP》、《程序员自我修养
》等都有各自想要论述的主线在里面,看起来也是一环扣一环,非常循序渐进。
我的看书方法就是:
对于面向知识体系那种堆砌细节的书,我们先浏览目录,做到对整本书有映像,再大致看一些我们关心的部分,比如 UNP 和 APUE 中 IO、文件、进程控制、信号、线程、线程控制、基本套接字
编程 这些是比较重要的模块,其它边角知识,可以用到再去查。
对于非常循序渐进的书,比如 CSAPP ,那么就可以去挨着挨着看,这是没有问题的。
还有一点,很多同学反映看不懂类似 CSAPP 这样的书,那我们都知道,任何一本书基本上都是有前置依赖的。
没有掌握要求的背景知识去看肯定很吃力的。
就比如我大一下只有基础的 C 知识和一丁点计算机导论
知识,然后屁颠屁颠的跑去看 CSAPP(学长毕业摆地摊卖书我瞎买的),那时候只知道这本书被誉为神书,但是看到前两三章就蒙了,真的有点难,对于当时的我来说太底层了,根本不知道在说啥,看过也只是看过,就像天空飞过鸟儿,但没有痕迹。
直到后来大三再次拿起,我才意识到这本书的伟大之处就在于将计算机不同学科知识有机的串在了一起。那时候看,更多是一种补充、深入学习以及完善了,因为很多知识分别在数字逻辑、汇编语言
、操作系统这些课程中学过了。
所以要明白,你看不懂不是因为你笨没天赋,而是你有前置依赖的知识没有完成,还没学会走,就想跑了。
当然了,我还有自己整理的电子书库,绝不是在网上那种打包下载的,而是自己需要学到某个方向知识的时候,需要看了,去网上挨个找的,最后汇总而成。这部分我是会不断把它完善的,当成自己的小电子书库,不多,但贵在精。
我整理的这些书大家可以在这里获取,对于学习计算机的同学帮助非常大,且十分系统:
# 计算机编程书籍合集 【60大类】【1600+】