很多初学者都会问到类似的问题“怎么才能学好编程呢?”、“我学了一年了,还是稀里糊涂,自己无法独立写出完整的程序”、“学编程有什么技巧吗?”、“学编程是自学好还是找培训班好?”。作为一个有着20年编程经验的老码农,用自身体会给大家一些建议。

这里我不给大家推荐书籍,也不对哪个培训机构做评价,其实跟老师学、自己学、看书学、网上找免费课程学,都不是最重要的,最重要的只有三点:

1、 勤动手。编程是个实践的活,如果你动手的时间太少,就别想着学会了,再好的老师教,看再好的书也没用。现在市面上有一些少儿编程机构,每周一次课,一次2小时,孩子学了一年还是不会自己编程,问我“这家机构教的不好啊”。或者买本书自学,每周拿出一二个小时照着书练,最后书也看完了,然后问“为什么学不会呢?”。

这都是一类原因,就是缺乏实践,编程必须在实操中寻找感觉,就像学英语,如果你只是背单词、背语法,最终学出来就是哑巴英语,因为没有应用到生活中去,英语还好,就算是哑巴英语,应对查阅资料等场景也够用了,但编程是必须动手的,你必须写出程序来解决实际问题,不动手怎么行。所以要勤动手,动手的频率当然是越多越好,如果你太忙,一周至少要拿出二到三次集中的时间来,每次2小时,这样才能尽快见效。

1、 多积累。有些同学每次上课都会编写一些代码,但下次上课却带着空杯心态过来,学了一年,看似代码写了不少,你问他学了什么,一脸懵逼。

所谓积累是知识的积累,通俗的说,每次学习的结果你是否都保留了?是否有笔记?不管学习什么学科,善于记笔记当然能学好,这个道理大家都懂。这是积累的第一个层次,第二个层次的积累指的是代码的积累。随着学习的深入,我写的代码越来越多,会发现有很多相似的功能是可以重用的,例如我写了一个记录日志的函数,用于将指定的内容记录到某个路径下的日志文件中,这是个很通用的功能,以后在其他地方也会用到,那么我就可以把它保留下来,形成我自己的工具库,下次再遇到要写日志的地方,直接调用这个函数就行了。一些有经验的程序员都有自己的工具库,所以他的效率很高,一个项目,普通人需要做一周,他只需要三天,因为他不是从头写起,就这么简单。所以学编程必须学会积累,什么时候你有自己的工具库了,你就入门了。

1、 定目标。学编程必须找到编程的感觉,什么是编程的感觉呢?就是一种掌控感,你可以利用这些工具来实现自己的目标。举个例子,我在刚学python的时候,用一个月突击了编程语言的基本语法结构,也就是变量、常量、数据类型、类型转换、运算符、字符串、列表、字典、循环结构、选择结构等等,接下来就可以实战了(有人会说,还有面向对象等高级知识呢?先别考虑那些,有了前面的基础就可以写任何程序,只不过是效率高低的问题)。

如何实战呢?就是自己编写一个最简单的小项目,方向随意,只要是你自己感兴趣的就行,游戏、工具……都可以。但有一个前提,就是实现这个项目的基本知识你都已经具备了,以python为例,有的人学习了基础语法后,选择的项目是做一个图形化的游戏,这就有问题,因为这个图形化游戏需要基于pygame之类的库,那就意味着pygame也变成了你的必备知识才行,所以很多初学者为了做一个完整的项目,不得不学习很多库,这是不对的。如果你只学习了基础语法,能做的项目一定是基于命令行的,不要用那些花里胡哨的界面。所以你在选择项目的时候可以借鉴别人的成熟项目,但仅仅是开阔思路而已,别指望以它为蓝本,因为这些成熟的项目往往包含了太多的东西,不仅要考虑功能完善,还要考虑安全性、执行效率等等,所以作者会尽可能的完善它,但对于初学者而言,这却是梦魇,因为它会把你带偏,本来你只想利用基础知识做一个小项目,但摆在你面前的完美项目却需要你通古博今、博览群书,怎么可能?所以最靠谱的方式就是自己想一个项目,具备什么样的功能由你决定。项目选择好后,就去努力实现吧,因为这是你自己感兴趣的项目,所以不用担心自己会半途而废。在做的过程中一定会遇到各类困难,没关系,遇到问题解决问题,查资料、问牛人都可以,有时一个问题会困住你好几天,百思不得其解,很痛苦,但柳暗花明往往就在这个过程中出现。经历过后你会发现,你已经上了一个崭新的台阶!随着学习的深入,你要持续为自己订立更高的目标,每一个目标达成都意味着你的一个新高度。

上述三点是从自身的角度来分析如何学好编程,当然我不否定一本好书、一个好老师的作用,但客观地说,目前市面上的好书、好老师、好课程太少了,真的太少了。本来这里我想延展下我认为的好书、好课程应该是什么样的,发现内容太多,以后有时间单出一篇文章吧。

来源: 孙老师聊人工智能