我学习C/C++的历程
故人有云:察己可以知人,察今可以知古。古今一也,人与我同耳。所以,通过回顾我个人的学习历程,我也能推知他人的学习过程。他人(读者朋友)也可以通过我的学习经历,启发自己的学习过程。
第一阶段:目标导向。我的目标是想开发一个系统,需要用到c/c++,这个目标驱动着我去学习c/c++。透过现象看其本质,这个阶段的两大要素是目标和导向。类比于为了找个Java的工作而学习Java这种情况,也类比于为了使用Java的某个框架或者工具来学习这个框架或者工具这种情况。
第二个阶段:漫不经心的初步了解。我先翻了翻c/c++的基础语法书籍,感觉挺简单的,所以匆匆忙忙的结束了这个阶段。透过现象看其本质,这个阶段的最大特点就是自以为简单。察己可以知人嘛,我觉得很多人都是如此。类比于刚开始学习springmvc或者刚开始学习mybatis,翻了翻相关的资料,挺简单的啊,所以匆匆忙忙就开始动手操练起来用到项目上去。
备注:自以为简单,这种情况无可厚非,毕竟接触时间尚短,没有看出它的门道,只是从面上看起来挺简单的。
第三阶段:操练项目处处碰壁。我下载了一个c/c++的项目原型,里面的代码根本看不懂啊,看的眼熟,但是根本理解不了。一两千行的代码,磕磕绊绊的花费两三个星期才能看懂。我发现,学习一门语言本质就是养成一种思维的习惯,既然上升到了习惯层面,那靠上一阶段的漫不经心的了解,怎么可能形成习惯呢!透过现象看其本质,这个阶段的最大特点就是碰壁。学习其他的语言的人,例如Java,Python等人,一样会出现碰壁的阶段。
第四阶段:查缺补漏,重新变得认真。操练项目处处碰壁,然后就变得沮丧,变得的低调,变得认真。一改之前的漫不经心态度,开始认真认真的学习基础知识,结合项目,将项目走通。
第五阶段:项目走通,束之高阁。项目走通之后,自以为会了,然后就束之高阁。放下的不仅仅是项目,还有对这个语言领域的深入学习。做完项目之后,我感觉c/c++学会了,毕竟,杂七杂八的积累了上百个知识点的笔记和理解,当然觉得自己学的不错了。
第六阶段:眼高手低。项目做完了,知识点也积累了不少,能不眼高手低吗。很多人往往止步于这个阶段,有实战经验,有深厚的知识积累,但是知识并不系统化,这是一个很大的隐患。想一下吧,你的初衷是目标导向,仅仅是完成了目标,再往好的地方说一点,也只是顺带着多学了些知识,并没有把知识做到系统化。
第七阶段:放下身段,回归简单,因为简单不肤浅。最痛苦的事情,莫不是当头一棒,来个自我否定,让自己满身冷汗。我花费了很多时间把项目跑通,学了很多高深的知识点,但是我发现有些基础的知识点,竟然还是理解的不到位。狠下心里,把自己当做菜鸟,将基础书籍再走一遍。因为有项目的经验,因为有大量的知识点积累,我发现了一个道理:简单但不肤浅。
第八阶段:回归简单就是回到系统化学习之路。因为简单,所以能让你一鼓作气,轻舟已过万重山。因为不肤浅,让思维更有张力,承接上文而接下文。操千曲而后晓声,观千剑而后识器。
第九阶段:回归生活,发挥联系与想象。生活的场景是平凡的,但是足够伟大,因为它是文化和文明的沉淀。