最近教几个朋友编程,感觉很多学校课程把本来简单、有意思的事情,变得枯燥乏味。起始阶段,应该是学到一点儿立马就能实际用到,从而提高兴趣。这个阶段,也应该越短越好,避免学习热情冷却。入门之后,再考虑系统地补足理论知识。
我心中编程入门的标准:能独立写一个 2048 ,遇到问题知道怎么查,查不到知道去哪问。
以前我学编程的时候,花了挺长时间才入门。但如果重新来过,方法得当的情况下,快则三五天,慢则几周,肯定能达到上述标准了。
找个老师
没老师当然也能学,但有老师指点,效率有云泥之别。没有老师的话,有很多没什么价值的坑要自己一个一个趟,很可能卡在哪个地方解决不了,就直接放弃了。老师的作用,一是指导方向,二是帮忙填平这些坑,保证入门过程的顺畅。
因为只是入门,所以这个老师的水平不必很高。一般学得不错的高年级计算机系学生都能胜任。至于怎么鉴别其是不是学得不错,一句话:有工作的看工作,没工作的看作品。能找得到开发类工作,或是能写出有价值的作品的人,编程水平带人入门应该不成问题。
不读经典
网上很多编程入门书单,言算法必称 CLRS,C 语言必称 K&R,网络必称《TCP/IP 详解》,说『只读经典』。但这种学习策略,在科技领域是不适用的,就像学进化论不用读《物种起源》,了解心理学不用看《梦的解析》,这些作品确实有非常高的历史地位,但年代久远的书籍,在知识的准确性和 易读性 上,已经远远落后了。
无论从哪个方向上入门,先让老师推荐一个比较新的简短教程,了解基本之后,开始大量实践积累经验。以后可以回过头来翻翻这些经典,补全一下知识体系,印证一下实践中产生的体悟。
大量实践
重中之重。
对编程有了基本了解之后,马上开始动手。喜欢玩游戏的可以开发外挂或着写小游戏,经常用 Excel 的可以写脚本简化工作,实在想不到也可以找编程习题来做。
一开始需要老师时不时指点,慢慢就能自己独立解决问题,这时就入门了。
进阶
入门之后,可以参考任意大学的计算机系课程设置,补全一下理论基础,然后沿着感兴趣的方向深入。
如果实在没老师
我推荐的学习路径
- 加个 Python QQ 群,方便问问题
- 完成一个在线课程 https://www.coursera.org/learn/hipython
- 写 2048
- 参与 Python 写的小型开源项目 https://github.com/trending/python
Some Chicken Soup
只要有一台便宜的二手 PC, 一张 Linux 光盘和一个因特网账号, 你就拥有了足够的工具和资源, 你就可以达到任何你期望的编程境界。
Happy Hacking.