看到题主要学《C++Primer》,正好学完了这本书,理工类的书学习方法大同小异。学习一本厚书就像完成一项工程,需要确定工期,控制进度,把大的工程分解为一小步一小步完成。
0.记录笔记
学习过程中,把知识点记下来,把书转换为自己的思想,相当于把书读薄,即f(书)=笔记,f是学习过程。笔记方式多种多样,如编程相关常用博客记录。
笔记独属于自己,理解比书轻松,接着把笔记消化就相当于把书读没。有困惑可以参考他人笔记,但不要通过他人的笔记完成整个学习,因为那不属于自己,他人思想方式的二次加工反而会影响自己的理解。
1.框架构建
看看前言、目录,网上对书的介绍,了解书的大致结构,知识范围,形成简单印象,虽然和学完后的认知差距很大,但作用在于给初学者方向指引。
2.分解进度
选取自己需要的范围,剔除不必学习的部分,把剩下的框架分解为一个个里程点,一般以章节作为里程点,每个里程点的完成时间自定。
学完第一章,适应书的叙述习惯,形成自己的体验方式。每个章节的体验方式大同小异,按进度进行,不要跳章节,防止后续部分用到前置知识,书的顺序安排是经过反复推敲的。
根据第一章的进度对整本书的学习能有一个工期预估,算上一些现实因素,可以确定下工期的上限和下限,对整个工程有清晰规划,按时完成里程点以获得良好正向反馈。
3.精读略读
理解与感兴趣部分精读,晦涩难懂部分略读但形成印象,不要跳过不读,即使头脑空白也要把每个字啃完。不要在一处卡死,想着停下来下次再学,痛苦咬咬牙就过去了,不然下次依然要承受痛苦。
第一遍过的重点在于理解不在于记忆,很多东西是不需要记的(或者说记不住,需要通过练习熟练),用时再查就行,而理解了能马上反应到在哪查。对于无法理解或认为不重要的部分,记录笔记,留一个印象,最后过笔记的时候解决困惑。这样即使每个里程点完成得不够完美,也能完全覆盖,即只有懂和存疑而不存在遗漏。
每完成一个里程点,即学完一个章节,看看对应目录,默默回忆涉及内容,加深理解,模棱两可的部分再看看,以此保证每个里程点质量良好。
4.进度整合
学完一本书或是一个part(通常由几个关联性强的章节组成)后,和上一点类似,看看目录回忆内容,串联起来形成体系,保证整个工程质量良好。这个阶段就把书过掉一遍了,接着就不用再看书了,而此时应当完成了整本书的笔记。
5.体系形成
接着过笔记就行了,把问题一个个解决掉,反复温习,进一步读薄,这个过程的主要目的是加深记忆,渐渐构建自己的知识体系直到完全脱离书。这是最轻松、最耗时、最关键的一步。