看到师弟蔡白银写的文章, 有所感, 写下几句不成文的心得体会.
大学读经典书, 能缩小自己和发达国家学生的差距. 我们国家的大学和发达国家相比, 差距大家也都能看到. 在理工科上, 或许中国大学唯一能和外国大学在同一起跑线的, 就是图书馆里面躺着的经典英文原版书了. 科学发展到今天, 每个领域都是枝丫茂盛, 都有经典的著作. 作为大学生, 如果没有读过(哪怕看看前言也行呀), 在我看来, 不算合格. 修身第一条, 就是读读经典.
要是上大学的时候只是全是靠课堂而不主动阅读, 这大学也和幼儿园没两样.
好书能帮你打通筋脉, 读了之后立即高屋建瓴, 建立起对一个领域的全盘认识. 我常常觉得, 好书大气磅礴, 就像武林名门正道功夫一样, 大开大阖, 读完以后人的气象都不一样. 读烂书, 或者上用烂教材的课, 会降低你的智商.不相信我这句话的人可以选择 TAoCP 读一下第一小节,再比较一下其他(本校)写数据结构和算法的书.
好的教材好比是心法, 提纲挈领. 先看心法是磨刀不误砍柴功的. 而可惜的是无论是市场还是实际, 砍柴的书都很受欢迎, 磨刀的书没人喜欢看. 很多做技术的都容易做到头, 就是因为没心法, 练不好72绝技的. 就计算机方面而言, 数据结构算法 (Intro. to Algorithm/TAoCP)看一本, 编程工具(TIJ/TIC++/SICP+Python)看一本, 离散数学(Concrete M/Discrete M)看一本, 足以秒杀大多数公司面试题了.
要善于利用中英对照, 好坏对照的比武看书法. 我并非崇洋媚外, 国内很多大学的教材, 存在很强的门户之见, 其教材主要内容囿于本校擅长的某些领域, 往往不能使人窥得一个体系的全貌. 因此最好的办法是找本英文的, 找本中文的. 英文书往往文字冗长, 实例繁多; 中文书往往讲空泛理论, 几乎无例子, 两者结合, 能够取长补短. 更有效的是想像两个作者在吵架, 并且将自己置于审稿人的地位, 跳出书本, 评点某处某书写得如何, 如果自己写该如何写等等. 如此一比武, 好书烂书高下立判, 而且能从一个更高的层次审视一本书. 一招一式学高手, 未必能成高手; 常看高手过招, 华山论剑, 你很快会变成高手.
书是要往厚处读的. 一本书, 哪怕只读一章, 也要保证从头读到尾. 如果没这个自信, 还是不要读了. 弱水三千, 只取一瓢, 与其说是走捷径, 不如说是纵容自己的浮躁和浅尝辄止. 这样读书, 基础不牢. 好比光看别人拳法打的好看, 自己不下功夫从头到尾把拳法演练几遍, 很快就会忘掉的. 我认识不少人, 书往往看得很多, 但考试面试或者实际运用的时候, 和没读过没两样. 结果如此, 那当年读了干啥?
–推而广之, 书上的程序和习题是要一条一条做的. 我认识一个高中朋友, 他说物理不好. 我给他出了个主意: 只做一本书上的习题, 而且一丝不苟, 从格式到步骤都要完美, 假想自己是写本能出版的习题解. 他尝试了几个星期, 单科成绩已经是年级第一了. 往往看上去最笨的方法, 实际上是最聪明的. 就我个人而言, 高年级小学生一笔一划写完初中平面几何只要一年半, 老师讲要三年; 完全不懂OO的大一新生一键一键敲完 Thinking in Java 上的所有程序只要半学期, 就能独步于10万行代码的中型项目. 而很多人学 4 年 Java 也不知道架构到底是什么样子的.
如果我没记错的话, 侯捷在 STL 源码剖析的序言中, 引用了老子的一句话: “天下大事,必作于细”. 我觉得, 能将这句心法读到, 又有什么不能剖析的源码呢. 纵使若干年后, STL 丢在历史某处, 你仍然能够在新的技术中”游刃有余”.
补充: 有很多辅助手段能帮人选书. 我的选法是: 互联网. 判断一本书(我特指数学或计算机方面的教材)是不是好书太简单了, 看看这本书作者如何, 这本书反馈如何. 如果有网页的话, 看看 Google 给这本书的 PageRank 是多少. 尽量选择国外一流大学的教材. 一般情况下, 国内出版的教材, 如果不是清华北大中科院或者这方面的杰出专家出的, 可直接略过. 少买几本庸书, 是为抵制全球变暖和保护森林做贡献.
当然, 说的这些, 都是一己之见. 我知道大家都很”快餐阅读”. 但愿看这篇文章的, 和能认真做到的比例, 能到10:1, 也就行了.