如何成为一个优秀的程序员(13)

7、我一开始看什么书都看不懂 , 怎么才能理出一个学习顺序?

以前有个学员在学C语言时说 , “C语言很多地方都很奇怪 , 都得用内核的知识去解释 , 可是你又不先教我内核 , 我没法学C语言 。 我只好自己看操作系统的书 , 看 内核代码 , 可是看不懂 。 ”当然看不懂了 , 内核代码都是用C写的 , 如果不学内核就没法学C语言 , 那不学C语言又怎么可能看懂内核?看来这是一个鸡生蛋还是蛋 生鸡的问题 。

懒真的是人的本性 , 就连学习的过程都希望是一条路顺利地走下去 , 不用动脑就能学会的:身后走过的路都是“已知” , 每走一步就把眼前新的“未知”变成“已 知” , 如此一路走来 , 把所有的“未知”都变成“已知”就算学成了 。 可惜 , 知识不是一条路 , 而是一个圈 , 你从任何一个地方跳进这个圈开始走 , 身后都是“未 知” , 眼前也都是“未知” 。 有的人就是不能容忍自己的身后是“未知”:看一本书 , 一个新的概念A是用我不了解的概念B、C来解释的 , 我连B、C都不懂怎么 学A?没法学了!

不是人家书写得不好 , 而是没有任何办法能把一个圈扯成一条直线的 。 学习的过程本质上就是一个循环往复的过程 , 唯一的办法就是“存疑”:在本子上记着 , 有 B、C这样两个概念是我暂时不理解的 , 然后就不再去想这回事 , 而是相信自己已经理解了B、C , 基于自己的理解和假设去学习A , 由A再去理解X、Y , 这样学 下去 , 走完一圈之后再回来 , 自然就明白当初对B、C的假设正确不正确了 , 理解了这两个概念 , 就从本子上划掉 , 这时需要再走一圈 , 把原来的一些错误认识纠正 过来 。 所以 , 任何书都要至少看两遍 , 第二遍看的时候你会对很多概念有新的认识 , 因为你看过这个概念后面的章节 , 在此基础上产生了新的认识 。 古人早就明白这 个道理 , 所以提出了“温故而知新” 。

推荐阅读