如果重新来过,我会如何学习编程

最近教几个朋友编程,感觉很多学校课程把本来简单、有意思的事情,变得枯燥乏味。起始阶段,应该是学到一点儿立马就能实际用到,从而提高兴趣。这个阶段,也应该越短越好,避免学习热情冷却。入门之后,再考虑系统地补足理论知识。

我心中编程入门的标准:能独立写一个 2048 ,遇到问题知道怎么查,查不到知道去哪问。

以前我学编程的时候,花了挺长时间才入门。但如果重新来过,方法得当的情况下,快则三五天,慢则几周,肯定能达到上述标准了。

而所谓方法得到,主要是三个点:找个老师不读经典大量实践

找个老师

没老师当然也能学,但有老师指点,效率有云泥之别。没有老师的话,有很多没什么价值的坑要自己一个一个趟,很可能卡在哪个地方解决不了,就直接放弃了。老师的作用,一是指导方向,二是帮忙填平这些坑,保证入门过程的顺畅。

因为只是入门,所以这个老师的水平不必很高。一般学得不错的高年级计算机系学生都能胜任。至于怎么鉴别其是不是学得不错,一句话:有工作的看工作,没工作的看作品。能找得到开发类工作,或是能写出有价值的作品的人,编程水平带人入门应该不成问题。

不读经典

网上很多编程入门书单,言算法必称 CLRS,C 语言必称 K&R,网络必称《TCP/IP 详解》,说『只读经典』。但这种学习策略,在科技领域是不适用的,就像学进化论不用读《物种起源》,了解心理学不用看《梦的解析》,这些作品确实有非常高的历史地位,但年代久远的书籍,在知识的准确性和 易读性 上,已经远远落后了。

无论从哪个方向上入门,先让老师推荐一个比较新的简短教程,了解基本之后,开始大量实践积累经验。以后可以回过头来翻翻这些经典,补全一下知识体系,印证一下实践中产生的体悟。

大量实践

重中之重。

对编程有了基本了解之后,马上开始动手。喜欢玩游戏的可以开发外挂或着写小游戏,经常用 Excel 的可以写脚本简化工作,实在想不到也可以找编程习题来做。

一开始需要老师时不时指点,慢慢就能自己独立解决问题,这时就入门了。

进阶

入门之后,可以参考任意大学的计算机系课程设置,补全一下理论基础,然后沿着感兴趣的方向深入。

如果实在没老师

我推荐的学习路径

Some Chicken Soup

只要有一台便宜的二手 PC, 一张 Linux 光盘和一个因特网账号, 你就拥有了足够的工具和资源, 你就可以达到任何你期望的编程境界。

《DOOM 启示录》

Happy Hacking.

Leave a Reply