大一上学期很快过去,应该是在大一下学期的时候,学校要开一门C++课程。我利用假期先把课本基本啃掉了,当时动机也很简单,先啃掉,就不用上课了嘛。
另一件事情是我经常喜欢去逛书店,看到侯捷的《深入浅出MFC》上面很多人说这本书好,我当时也对C++有一些基础认识和好感,所以就买下来啃了。一方面侯捷先生写的书的确图文并茂,深入浅出,有意思,另一方面理解一样复杂的东西是个智力挑战。所以看着看着倒是觉得兴致盎然。却不知就这么和C++结下了不解之缘。
这是另一个歪打正着:为什么说是“歪打”呢?因为MFC的设计也并不能说就是C++的Best Practice,另一方面若是以用为本的话也未必就要把MFC的原理摸个透。所以搞不好现在看来我就不会细看这本书。为什么说是“正着”呢?因为理解一个费解的东西本身需要长时间投入注意力,无形中练了理解能力和思维体力(专注),另一方面虽然MFC不是最佳设计,但理解里面的代码却加强了对C++本身的认识,这是基本功;也加强了对C++的兴趣,这是动力,后来这个动力驱使了我去看了大量的系统底层知识,从操作系统代码一直看到硬件体系结构。
大二发生了几件重要的事情:一是我在《程序员》上发表了第一篇技术文章,是剖析Boost源码的。我已经不记得什么时候、通过什么途径知道Boost这个库的了,总之是知道了,然后也是由于受到侯捷先生源码剖析的影响,也去看源代码,发现很难,越是难就越是觉得有趣,跟踪代码到临晨四点居然越看越精神了,后来火速写了一篇源码剖析。发给《程序员》杂志的技术主编孟岩先生,孟岩先生给了很大的鼓励,于是我很来劲。后来一鼓作气分析了N个库,写了一系列的Boost源码剖析的文章,在网上随处可以搜到这个系列。
这是第二个歪打正着,按理来说,研究语言技巧并不是程序员最佳的时间投入方法。所以现在我可能不会去做这件事情,会认为有更好的时间投入途径。但当时就一头扎了进去。为什么说也是正着呢?因为虽然这也许不是最佳的投入时间的办法,但总归比什么都不专注要强得多,至少这么一深入,对语言的缺陷和陷阱有了更深刻的认识、也锻炼了对代码的亲切感、跟踪调试的耐心(是的,耐心,而不是技巧)。
所以后来我在博客上总结自己学习编程中走过的弯路,孟岩先生说到,是不是弯路,不是那么容易界定的。
的确,也许真的有更好的路,但事前真的很难判断哪条路是最优的,我们能做到的,是把一条路走透了、走深了,只要不是一条太不靠谱的路,深入的过程中总会有很多的收获。只要不是太顽固,善于反省,总有一天也会逐渐意识到越来越靠谱的路。
除了发表第一篇技术文章之外,大二我还用业余时间做了一些技术翻译,寒假里我坐在家里每天晚上翻译半章《Effective C++》,当然,后来我把译稿提交给出版社的编辑时被告知文笔还显生硬。
同一时间,我继续啃N多C++以及底层知识的书,一段时间我的书架上全是这类书,根本不像数学系的学生。非典那阵子,把饭钱都拿来买了书,为什么买得这么疯,也是因为受父亲的一个影响,他告诉我买书不用心疼,因为是长远投资,收益远远大于这点金钱投入。那段时间我边看边写一些代码玩,有模仿Windows核心编程的小程序,也有尝试并失败的小游戏,也有拿来对宿舍玩的游戏文件分析的工具,还有为上机考试写的库,总之玩得不亦乐乎;不像很多知名的程序员在学校里面就写了被广为使用的工具,那个时候我完全没有这个意识,也不知道什么是开源,自己自娱自乐而已,所以没有系统训练编码量和编码素养,比较盲目。
本文地址: https://cnleya.com/read-157778.html
免责声明:本文仅代表作者个人观点,与乐雅养生网(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表乐雅养生网(本网)赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们联系,本网站将在规定时间内给予删除等相关处理.