我一直担任着公司游泳协会的教练。主要负责教会员学习蛙泳和自由泳。夏天要到了,最近收到了一些新会员学游泳的咨询。
今年的新会员比较特殊,很多压根不会游泳但说起游泳的要领都是如数家珍,对蛙泳腿的“收翻蹬夹”四要领,自由泳的最优划水线路这些知识的了解程度甚至超过很多老会员。也许无数个无聊的夜晚,他们通过网络学习了整套的教学视频,也曾在床垫上练习过多次基础动作,唯一的问题就是没有勇气下水试试。
我总开玩笑对他们说:“难道你们要等到在床垫上学会了游泳再下水吗?”
这些人实在是匪夷所思,但他们却活生生地出现在我身边,IT怪咖的思维方式有时候就是这么奇葩。
不过,这件事让我联想到了很多简书的朋友问我学习编程有什么捷径。我总说最好的捷径就是多敲代码。这就好像学游泳最好的捷径就是下水去游。其中的各种好处也只有亲身体会过的人才能了解。总结一下主要有四个功效。
1. 在敲代码中记忆
我本人刚学C语言的时候,自己还没有电脑。由于是利用寒假自学,也没有实验室的机器可以用。你能想象我当时有多痛苦。死记硬背32个关键字都让我颇费了一番功夫。在没有计算机的情况下学编程和学马经差别不大,除了死记硬背做选择填空题之外没有什么太好的方法,我一度有了放弃的打算,因为完全没有乐趣可言。
后来有了电脑,我第一次把自己写在纸上的代码敲在计算机上运行的时候,那感觉变得完全不一样了。虽然我在教科书里已经见过Turbo C那个丑丑的黑框无数次了,但当它出现在我眼前的显示器上的一刹那我还是激动得不行。那种感觉不能简单地用一个“神奇”来形容,它充满着神秘感,让我一下拥有了好奇心想要探索下去。
有了这份动力,对我而言学习C语言不再是痛苦而是享受。每次上机练习的时候我都感觉自己状态特别好。之前记不住的关键字敲两遍就自然记住了。自己做过的每一个练习被深深地烙在了脑海里,想忘也忘不掉。仔细想想,敲代码与阅读教材最大的不同就是它是以试错为基础的。在你不断地输入调试的过程中,你所有的精力都被用到了你最容易出错的地方,因此这样的学习特别有效。
2. 让IDE帮你检查代码
为什么试错能提高学习效率呢?很多同学有这样的精力,信心满满地输入了一段代码,觉得肯定不会有任何问题,结果IDE告诉编译失败。最郁闷的是报错信息还看不懂,你很抓狂。这时候你能做的就是用自己仅有的知识进行排查。是不是什么地方少了个分号?是不是大括号没有匹配?是不是关键字写错了?是不是头文件没有包含?是不是...?
也许最终你花了半个小时的时间终于发现是有个变量没有初始化导致的错误。成功运行之后你真想说脏话,但这半个小时让你这辈子都不会再忘记变量要先初始化。
有时候编译器告诉你代码编译成功,你很开心。可是运行的时候却弹出了错误信息。一堆你根本看不懂得提示信息。你又郁闷了。你盯着IDE指出的错误位置发呆,心想它究竟又在闹什么脾气。最后实在想不到,你只能求助老师,结果是你的数组访问越界了。从此你学会了要规范地使用for语句的条件控制。
这些就是上机练习的意义。
3. 在调试中培养逻辑性思维
最难的还不是这些。有时候你的代码能够成功运行,没有任何问题。当你刚舒一口气的时候,突然发现结果并不是你想要的。上机练习时常听到这样的自言自语:“怎么是3,应该是5呀...”。
这个时候,你该发挥IDE的优势调试你的代码了。最常用的方法就是通过打断点、单步调试的办法跟着代码的逻辑一步一步走,过程中要监视着各个变量是如何变化的。这样,你就会在某一次循环中突然发现原来你有个环节没有考虑周全。
不断地这样练习会让你的逻辑思维能力越来越好,而这个恰恰是编程能力最重要的组成部分。
4. 成就感就是动力
这些过程是痛苦的,很多人都倒在了这条痛苦的路上。但正因为过程痛苦,成功后才格外的喜悦。每当看到自己千辛万苦调试的程序成功地显示出正确的结果,你一定想大声欢呼出来。
工作多年的程序员们每次提交代码的瞬间都是喜悦的,这一点从他们的表情和话语中就能感受得淋漓尽致。如果说什么让这些程序员们对繁重的编码工作欲罢不能的话,那一定是这些星星点点来之不易的成功的喜悦。
程序员们心中最大的优越感就是觉得自己的工作是在改变世界。我想,改变世界的成就感足以让任何人有毅力完成繁重而枯燥的编程学习。不过你要习惯从现在的上机练习开始寻找这份成就感。
5. 最后
不要再纠结于教程上的某一个小小的知识点,也许它并不影响你掌握一门能够改变世界的软件开发语言。当你开始用键盘敲代码的时候,每敲一个字符你就离成功更近了一步,因为你走的是学习编程唯一的一条捷径。
我是天花板,让我们一起在软件开发中自我迭代。
如有任何问题,欢迎与我联系。