读编程书

我买了不下 50 本编程方面的书籍, 涉及到的范围从编程语言到操作系统, 甚至 HTTP 标准解读等等方面, 但是我读的却少, 有一大部分原因是由于有不少分心的事情, 比如打游戏、电视剧、朋友聚会等等诸如此类不用费脑子的事情. 然而还有另外一部分原因是我还没有达到读那些书的条件. 我在大二的时候便拥有了操作系统一书, 并且也尝试去读过, 但我读到线程一章时便放弃了, 因为我脑子里根本没有线程的概念. 如今已经工作了三年, 并且有大量的机会来使用线程, 因而我轻松的读完了操作系统、并发编程实践等书. 之前看到一句话: 读懂编程书需要编程实践, 而编程实践又要求读懂编程书; 这真是两个互为对立的连体婴儿. 其实, 为了解决一个问题去编程会促使我们查阅资料, 汲取知识, 这之后反过头来看书会发现很多自己已经不知不觉中明白了, 比如, 之前我会觉得 <Java 编程思想> 一书很深奥, 很多费解的技术, 现在不会了, 因为我大部分都使用过了, 而且相关方面的知识在其它地方也学习过, 所以诸如栅栏、闭锁之类那时候没有看到的并发知识, 现在想来也不过如此.

此类经验还有很多, shell 脚本编程亦是, 那时候觉得鸟哥说的东西太过于松散很多非我想要的, 而 <Shell 命令行大全> 也非我读完便能精通脚本编程. 现在觉得, 我已经能够用 Shell 脚本去处理复杂的问题, 反过来读书岂不是事半功倍吗? 读起来岂不是查缺补漏, 验证我所知道的. 读书就是一个系统构建的过程, 之前通过编程或者阅读网上材料习得了零散但十分重要的知识, 如今阅读一本系统的编程书我便能够构建起来整一个知识系统. 我想这才是阅读编程书的正确之道. 这让我想起了当年学习键盘的过程, 高三毕业那年, 我在家乡的新华书店背下了整个键盘的排列, 不过然并卵, 等到一年之后我在被迫不熟悉键盘的情况下码了许多字的情况下, 回过头来学习键盘排布以及正确的指法时, 我发现学起来很快很快, 我甚至在没有键盘的情况也能快速将左中指前进一格按到 E .

如今我回过头来学习许多在大学没能学好的东西, 数据结构, 那个时候没有学好, 有一方面自信心的缘故, 觉得是一头可怕的老虎, 如今我已经用了 Java 中如此之多的 list 、 stack 、 queue 等等, 而且还实现过红黑树, 以及诸多的排序算法. 那么现在正是学习之良机. 有句话叫数据结构和算法是不分家的, 要实现算法就要用到某种数据结构. 而此时正是掌握他们的好时机. 我这手边有一本 <编程格调>, 出版年是 2015 , 实际写成却是 40 年前, 用的语言还是 FORTRAN 77, 薄薄的一本小册子我也借此学习一下大师在 40 年前表述出的良好编程风格, 同时了解一下 FORTRAN 语言, 未尝不可. 在我网上查阅 FORTRAN 77 语法时候, 有一位作者说明了 FORTAN 和 C 在效率之间的差异, 说 C 在系统编程方面的确够快因其设计便是为了更好处理硬件, 但是在科学计算等计算密集方面却望 FORTRAN 项背. 正是验证了没有最好的语言, 之后合适问题的语言.

lucida.me 的博客上看到说, 如果要找某一领域的好书, 就去参考其中一本的作者推荐书目或其参考文献, 我想来的确是这样的, 比在网上一通找或许会更快一点.