学习C++编程想到的
最近学习《C++ Primer》,然后逛知乎网站,看看大家对《C++ Primer》的评价。看到很多人提到,这本书非常经典,但不适合入门,适合做C++的字典,常常查阅。这不禁让我联想到物理学习中常常面临的痛苦情形。
之前学习物理教材的过程中,常常有非常吃力的感觉。有时候是数学太困难;有时候是看了一大堆东西,但全部从脑海中流过去了,没有激起任何涟漪……总之是对一本教材的吸收或理解非常有限,并且过程非常吃力。经过这么长久的感悟才意识到,这应该就是一种非常正常的状态。我们物理学的教材,即便是编写教材的人,常常也是有几十年学习、工作、研究的积累,并且很多经典教材是许多物理学家几十年、几百年的思考凝练而成,因此这样成熟的体系,对于绝大部分初学者而言是不友好的。很多物理问题,我们之前从没有认识到,更不要说仔细琢磨过,而物理学的教材上来就是简单的提出问题,然后给出解答过程和结果。这样导致我们很多时候物理问题都没弄明白,物理情境都还没进入,就已经被动地去学习答案了,搞到最后一团迷糊也就非常不奇怪了。要问有更好的办法吗?我觉得很难有,这里根本的问题是我们初学者没有对问题进行过长期认真地思考,我想如果你对一个问题有过长期认真地思考,即使你最终没有找到问题的答案,那么这时让你再学习教材相关章节,就会变得容易的多,并且你肯定会常常拍案叫绝,而不是一头雾水。
既然这样,能提出什么很有建设意义的学习指导吗?要说非常革新的方法,可以说没有。最主要的原因是个人的时间和精力是有限的,那么多问题,不可能都给予你足够的时间去摸索,然后再指导你学习解答。但是有没有指导意义的学习思路?我想是有的。我之前犯过非常严重的错误,就是认为只有先打好基础,才能做研究(我想这可能也是我们传统教育造成的),这其实是大错特错的。其实如果有条件,整个人生的的学习,都是应该以做研究的姿态来进行的。而做研究的基本套路是提出问题,或者说面对问题,思考-调研-学习-思考……,直至给出问题答案,即使给不出答案,也不是很重要,但这期间进行的若干学习和思考,帮助将是巨大的。你在这个过程中获得的知识,那都是鲜活有力的,是可以内化成自身力量的东西。那我们如果对待经典教材?我的回答就是像对待字典一样对待经典教材(所以不能过于纠结于教材中一些不理解的问题,而不进行务实的研究。我相信一个武力超群的人,一定从战场上的一场场杀戮中诞生的)。我们需要首先面临一些问题,然后在研究过程中常常翻看参阅相关的章节即可。
我们可不可以把上面的学习套路推而广之,运用到别的学科上?我想是可以,对于其他凝练经典的学问,对于初学者通常是不友好的。那接下来我们讨论初学者友好这个问题。初学者友好,意味着不需要特别费力地层层提高,一个恰当的比喻就是,像爬一座山一样,初学者友好是沿着长长的阶梯,一步一个台阶层层上升,而一本经典凝练的教材就像是一个垂直而上的绳索,除非天赋极好者可以沿此路径快速上升,而对于普通人来讲这条路过于困难,此路而上,虽然垂直路径很短,但通常费力费时。阶梯虽然曲曲折折,看似绕远,但对于绝大多数人却可以相对轻松与快速的进步,只要阶梯合适。显然因为个人资质的差异,个人经历的差异,不同的人所适合的阶梯肯定是不一样的。但初学者友好的教材或者案例也该有一些比较通用的特点,比如需要问题导向,非常具体。
写于 2016.12.14