当前位置:C++技术网 > 资讯 > 新手学习编程的科学高效的方法详细总结

新手学习编程的科学高效的方法详细总结

更新时间:2017-11-30 13:42:34浏览次数:1+次

    对于新手编程学习,我之前应该是写过的,都发布在C++技术网上。然而,每一个人的情况都不一样,所以还有很多具体的情况具体去分析,然后给予指导。
    前几天一个QQ好友,即将大四毕业,计算机专业,然后发现自己学习编程出现了瓶颈,所以开通了我们C++技术网的会员,寻求帮助。这是很基础的问题,所有新手学习编程都会遇到的,所以我依然会将指导的方法分享出来,惠及更多的用户。
    那么会员会不会想,这样岂不是让会员不划算了?其实不然。会员的问题永远都是第一个主动提出来,及时被解答的,而且可以问的远不止一个问题。那么我分享出来,让更多人收益,我想会员也希望有同样疑问的朋友得到指导。乐于助人,我想是所有C++技术网用户希望看到的场面。当然,还有很多问题是因人而异的,尽管分享出来,可能只能给予一定的引导,但不能解决读者最具体的问题,这就需要用户自己去理解,根据自己的情况去分析了。我们没有办法做一个万金油的解决办法,每一个人都很特别,不是吗?所以,会员的价值更体现在定制化的指导服务,以最高效的方式解决问题。
    然而,会员们基本都一致给予了这样的评价:“其实会员是套路,但心是真的,真的支持哥”。这笔账谁都会算,我们的认真和贴心以及专业的指导,一点点会员费,真的只是一个过滤愿不愿意进步的人。毕竟我们精力有限,我现在还带着公司的一个开发团队,任务繁重,作为副业的网站,也最多就是建立一个精神的家园,帮助更多的新手找到出路。所以,网站不盈利,会员费也只够维持网站的服务器费用而已。所以得到这样的会员的评价,我只会会心一笑,充满了很多的安慰和开心。当然了,如果网站能够做的更好更大,能够帮助到更多的人,说不定可以将国内的编程氛围带的更浓,都能沉下心专注研究技术,发展国家的技术基础。这个意义自然不言而喻。这个只能作为一个憧憬吧。反正一路发展过来,能够帮多少就是多少,帮到的人都是缘分。
    
    这个会员的情况是:大学课余时间一直有自学c和c++,看培训视频然后自己敲代码,直到现在,问题是用不出来。为了求快,每一个视频和代码都只敲了一遍,就换下一个。如此循环。后来注意到问题,就用记事本一直敲一份代码,直到闭着眼睛都可以敲出来。自己不断的重复去敲去理解,最后去理解原理。
    在描述的过程中,我认真听着每一个描述,这个描述非常的普遍。也不知道是哪些老师提出来的方法。属于最笨的方法,而且是效果最差的方法。这就是所谓的“题海战术”,效率极低的方法。不能说这个方法不对,只能说不是高效的方法。所以,尽管如此,当新手在大量的学习完后,结果就是用不出来。最终的效果就是,似懂非懂。这种效果并不是我们需要的。而此方法基于的原理,就是编程是一门实践课,需要大量的练习。所以因此就衍生出这样的学习方法。这就是问题所在。
    所以我就给予了参考的科学的高效学习编程的方法。如果按照描述的方法,我提出一个场景:
1.照着视频写一遍代码,并确保不错。这样需要你认真的把代码写一遍。如果有代码,也敲一遍。这是让你熟悉代码。
2.关掉视频或者不看写的代码,全新重零来写,不要参考任何东西,从头到尾写代码。
    什么感觉??呀!!第一句怎么写??要先写什么后写什么?写的这些代码是什么意思?完全无从下手!!你会说,你只写了一遍,那么你可以看很多遍,或者照着写很多遍。然后情况会好点。这个好点也只是能够写一点代码了。然后,依然会出现这一句怎么写?那一句怎么是错的?很多语法关键词都写错,标点符号都写错了。
    这个描述击中了会员的内心的痛点。其实,这就是我当年学编程的真切的感受。我只是将我的经历再加上思考说出来而已,压根就不需要推测新手心里会怎么想,更不需要去假设和幻想一个难点。
    所以下面开始说科学的学习方法。前面两步保留,需要做。
3.对第2步写不出来的地方,查看代码,再写出来。查看的是写不出来的一部分,然后再继续独立写代码。写到后面,一样还会遇到写不出来的。
    问题在哪呢?因为你压根就不知道代码的思路,如何知道你后续该写什么呢?甚至你连语法都不熟,更是雪上加霜。那么此时再继续反复写代码,意义并不大。第3步让你感觉到,你对代码的熟悉度是0,得到一个冲击。通过写不出来,再去看,再写,你可以加深对代码的熟悉度。这样勉强写完了一遍,但是比对照着写100遍都强。因为你知道你在哪些地方写不出来。如果是语法不过关,你会发现基本的函数名和关键词以及标点符号写错,这就需要去加深语法的熟悉。如果是不知道写什么,就说明你对思路不清晰,需要整理思路。那么这一遍就是让你的问题暴露无遗,再暴露的过程中,加深熟悉度,进而再引发你去探究的欲望。
4.排除语法不熟练问题。
    此时不要重复第3步了。再你语法不过关或思路不清晰的时候,写N遍都是盲目的。语法不过关,去看书,针对性的复习语法。这样可以攻克语法关。如果是函数名不熟等,那么可以直接在键盘上多打打这个单词的拼写,找找手感。会记单词和会写单词是两码事。对于我们现在来讲,脑子还有想清楚一个单词的拼写,手已经打出来了。不需要特别去练习熟练度,至少不要让双手太僵硬,让大脑停下来一个个字母的去监督手指工作。所以稍微练习一下单词的熟练就行了,而且因为这些基础的敲键组合,以后大把的练习机会,只要敲代码都在练习,所以就不需要太刻意去练,除非你是真的是一点手感都没有。在这个代码敲击的过程,你会发现,可能中英文字符切换就是问题,写错了就是语法错误。所以,有意识的去注意这个问题,再去练习,效果非常好。我现在敲英文分号时会不自觉的检查一下输入法是否是英文状态。
5.排除思路不清晰问题
    语法没有问题,敲键也不是问题,但是你可能在包含头文件、调用函数、组织流程时卡壳。这个东西别人真的不好帮你,最多帮你讲解思路。但是人家最多就是讲讲思路,可能没法给你讲代码与思路的对应。那么你需要自己想办法了。思路搞不清楚,这一关永远都过不了。而且不要等到最后再做这个事情。
    其实解决这个问题也很简单,只是会慢点,但是非常有用,而且是高效的方法,让练习不再是盲目的无头苍蝇。你在每一个关键的地方写上思路的注释,然后分为大体思路的注释和局部功能的注释。在理解整体思路时,只需要看大体思路的注释,看局部思路时,看局部的功能注释。其实这个过程在阅读别人代码时是非常常用的,也是我个人的做法,效果很好。对于思路的记忆,依赖注释,而不是记忆。毕竟代码多了之后,记忆压力是很大的,很容易漏掉一些关键点,而重复思考。
    能够写清楚注释,并和原有思路一致,就说明在思路上理解了,然后你就知道先写什么,后写什么了。当然,你只是对思路了解了,但并没有真正掌握。思路的了解还包括对头文件的引用,函数调用等,这些的作用也都要了解。
    这样注释和熟悉下来之后,你对这份代码的理解已经提高了一个层次,而不在于熟悉代码了。对于熟练度的练习,往往都是再简单不过了。
6.再不看代码,从头到尾写,此时你虽然不熟,但是通过慢慢回忆和理解,可以慢吞吞的把代码写的差不多。
    此时还是会漏洞百出,但是比之前已经好很多了。漏掉的和错误的,都要足够的重视,这代表了你对这一块不熟悉或者不理解。那么此时你就要去研究为什么以及练习了。
    此步骤要重复多次,但不是很多次,而且必须不能是很多次。每一个敲错的地方,都要去反思去理解。这样几遍下来,代码就熟悉到深入骨髓了。那么最后就是真正的闭着眼写出来代码。这还没有结束。
7.真正厉害的从来不是一字不错的写出来。这不是我们的目标。我们是要改造,要创造。
    我们不是复印机,我们不需要复制别人的代码,否则我只要Ctrl+A、Ctrl+C、Ctrl+V就可以完美复制了。你还要敲半天。我们能够基本不错的情况下,说明你基本掌握了思路,也深入了解了思路,但是你还不一定完全学会了。真想完全学会,那就开始改造和创造吧。
    第一步就是改造。我们在原有的思路上全新写代码,加入改造的东西,但是思路不变,就是换汤不换药的写一遍,并能够达到自己的效果。比如学生管理,换成老师管理。函数名和变量名等都换成自己喜欢的,也就是完全脱离原有代码,写出一个全新的代码。如果此时能够依然不出错,说明确实熟悉了代码和基本思路。
    第二步就是加功能。我们可以在代码中加入我们想到的一些功能。这样可以培养自己的兴趣,自我驱动编程。加功能也是限于相同的思路的扩展,比如有加法,我再加入减法、乘法等。东西多了之后,会有新的挑战,会学到更多东西。而思路基本一样。也是循序渐进的过程。
    第三步就是创造。在前面的基础上,你可以尽可能发挥自己的想象力,改造代码的思路,融入更多丰富的功能。这样,你在发散你的思维,也会让你更加理解原有代码的思路。代码的思路的好坏你都更加清楚了,而不是只知道代码的思路就是这样的。这样可以锻炼你的思维的创新、发散和想象力。

    做完了以上这些,后续阶段的学习,请参考网站的关于不同新手阶段的文章来就是了,见《关于新手刚接触github上的开源代码的疑惑? 》。
    对于此会员的其他问题,就不再这里说了。是关于就业的问题,在网站其他文章分析。如果您支持我们的网站,可以向需要的朋友推荐我们的网站。网站得到更多人的支持,势必可以走的更远。谢谢。