历时三个月的时间,现在基本完成了此书的笔记。笔记的主要内容是提取出书中的知识点,并将很多与例子相关的解释性文字省略,所以,最终的篇幅依然是偏长的,也谈不上那种浓度非常高的笔记——自己的想法或简短的篇幅。但有一个好处就是方便查阅以及学习,任何时候忘记了点东西一搜索就出来,从头到尾看一篇也是值的。在里边我没有省略任何重要的内容。
这个笔记项目用的材料是 《 C++ primer 》的 C++11 版本,是英文原版。这避免了陷入抄书的陷阱,里边所有的输出都可以认为是对英文的翻译,但更加灵活,很多不必要的字眼被替换为更加容易理解的语句,甚至于语言的顺序都会进行替换。相比于翻译出来的那本大部头来说,这种形式更加灵活。对我自己来说的好处在于,翻译书中有些字眼如果不看英文的原文会导致不知所云。如:对应于 16 章中的引用折叠里边的一句话“ clobber an lvalue ”,翻译书中译作“截断左值”,但我觉得“攫取左值对象内容”更为恰当。如果看了原文对照翻译可能容易理解其中的含义,但如果仅仅是看译文搞不好真的难以理解。之所以取这个例子,因为,我买的那本翻译书中,我就是用了荧光笔标了这一句,我刚看的时候也没有理解。
之所有我想做这件事,原因在于 C++ 语言的确很难,这门语言也是我自己的一个情结,大学时候尝试去学习这门语言,无奈掌握的不好。至工作之后常年使用别的语言写代码,如今重学 C++,为了让自己的学习有效,我开启了这个项目,花掉了几乎所有的业余时间。好在看到目标即将完成了。最后学到头,我悟出了一个道理就是几乎所有语言的工作都是差不多的,就是为了表达程序的应该干什么,所以语言的细节不是重点,重点在于程序干什么。很多时候我们会用不同的语言去表达同一个算法,完成同一个项目(如:用 Android 和 ios 写同一个应用)。语言最终还是为问题服务的。我说这些的原因是将来重点的方向我会放在解决问题这一块,也许研究算法,研究开源程序本身,或者如何将各个程序组件以合理而有效的方式组合起来,等等诸如此类的。
目前项目还未完全完成,一些我认为没有那么重要的章节会在以后的时间里慢慢补全(肯定会在今年过年前补全),我将尝试用 C++ 写一些小的项目(如:处理配置文件,redis 连接和命令管理的组件),阅读一两个重要而简单的项目(如:leveldb )。