今天邮箱中收到这么一个问题:
天花板你好,你的某某文章我看了,非常喜欢。里面的某某例子我自己写了一下,代码是这样的:
int main()
{
bala...bala;
bala...bala;
}
你看这样写是否正确?
很容易看出,这个孩子最近一定是刚学C语言不久,他的学习热情和好奇心非常值得赞赏。在这个前提下,我要说的是,编程学习仅仅靠态度是不够,的还需要科学的方法论。编程是人和计算机交流的过程,准确的说是指挥计算机工作的过程。那么这个过程的结果与好坏应该由计算机来反馈而不是另外一个普通人来反馈。
最近这样的邮件收到了不少,看来这样的误区还是普遍存在的。于是我想要和大家重新讨论一下究竟该如何学习编程。
我曾在文章里多次提到过,不能只是通过读教材和记笔记来学习编程,这样学到的东西是死的,很可能写出的代码根本就编译不过。那究竟如何系统地学习编程呢,我总结为以下几点。
系统学习教材
对教材的学习是特别重要的,尤其是对初学者而言。对于初学者,软件开发是一个完全陌生的领域,通过阅读教材能够迅速让自己在这个空白的领域构建出自己的一个知识体系。这对后面继续深入地学习至关重要。
如何读教材就有学问了。很多同学读教材非常仔细,每一个细节都要搞得非常清楚,这样慢慢推进会让战线拉得非常长,读一本教材大概要花一两个月的时间。对于这些同学,经常出现看第五章的时候已经把第二章的内容忘得差不多了。这样学习最大的问题就是虽然把细节知识点搞到非常清楚,但由于时间太长,让这些知识点相互间无法联系起来形成体系,这样既不利于理解也不利于记忆。
我给同学们的建议是要由粗向细地阅读教材。一般分三个阶段:
- 粗读
粗读就类似于囫囵吞枣地读。对于一本入门级的教材一般400到500页的样子,在两周内快速通读一遍。阅读过程中,对于不是太清楚的知识点可以跳过,知道有这么回事就行。这样读一遍之后,你会发现自己虽然依然不怎么会写代码,但基本已经知道编程是怎么回事了。现在可以进入下一个阶段。
- 精读
在这个阶段里,要仔细把教材重新阅读一遍。在这一遍里,重点了解每一章里介绍的编程方法,能够在计算机上把实例代码调通就达到要求。最好把课后习题有关上机练习的部分都自己完成一下。至于那些你还不清楚究竟如何去用的冷门方法,可以不用掌握。这个过程耗时比较久,大概2个月左右。这个阶段完成后,你已经能够用某种语言完成一些最基本的功能了。
- 贯通
最后这个阶段就是融汇贯通的阶段。在第二遍结束后,基本的功能你已经都掌握了,但可能对于大部分功能你还不知道他们除了写例子程序还有什么用。或者你干脆就忘记了都学会了那些方法。接下来,你需要在互联网上找一些基础的编程实例,在学习这些实例的过程中,你会发现涉及到的很多东西你都了解过,但又有些模棱两可,这时候你就要像查资料一样回到教材中认认真真、仔仔细细地去研读相关的知识点,把它完全吃透。
这也是一个反复的过程,在你学习了一些别人分享的实例内容后,你还可以自己按照兴趣完成一些小工具之类的东西。一段时间后,你会发现,你已经基本掌握了一门编程语言。
敲代码
在编程学习的过程里,写代码是非常重要的东西。即使对于同一段例子程序,读一遍和自己敲一遍的效果都是天壤之别。敲代码的过程是你对编程知识的二次思考的一个过程,同时还能帮助你建立对编程语言的肌肉记忆。就我而言,一些基础的代码片段都是不用思考就能敲出来的,这就是肌肉记忆。
另外,在代码编译和寻找Bug的过程能够帮助你更深入地理解和记忆。敲得多了,很多知识点自然就记住了,压根不用那么刻意地学习。
拓展学习
教材里介绍的东西往往是有限的,当你掌握到一定程度的时候,你需要继续丰富自己的知识和技能。最好的方法就是自己设计一个小工具,然后用掌握的知识去实现它。在这个过程中,你一定会遇到很多问题不知道该如何实现,这时,解决问题的欲望会推动你通过各种渠道去寻找解决方法。当你最终完成了这个小工具时,你会发现你的编程能力已经上升到了一个新的水平。