前言: 编程是一门实践学问

1 学习编程与其他学问的区别

学习编程与学习其他学问区别很大,因为它非常依赖练习和实践。事实上,编程只不过是把我们对事情的解决思路,翻译成一种计算机可以理解的语言。从这点上说,学习编程相比于理工科更接近学习外语。但幸运的是,这门外语的知识容量极其有限,词汇量充其量不过那么30,加上一篇文章就能概括的语法。

circle-info

学习编程的关键在于理解和熟练、灵活运用。而这两个目标,通过被动学习(听课,阅读)很难达到,需要大量的主动思考和实践。实际上你经常会发现自己独立总结规律、debug、开发一个没有教程项目的过程,非常痛苦,但这也意味着这个过程大有裨益。被动接收信息,就算都能听懂看懂,离自己能够灵活应用仍然相差甚远。

这是一个老掉牙的图,但是还是有参考价值,对学习编程也非常适用

2 冗余学习理论

当你学习一个单词,你可以选择阅读词典里对这个词所有的释义和例句,这显然是overkill,并且也只能吸收其中的一小部分。但是你对这个单词的熟悉度已经足够高了,以后再也不会忘记他的基本释义。这一条对学习编程也适用,如果有一部分的概念或者算法让你感到疑难,彻底花半天到一天时间,不惜成本地研究一下这个话题。

circle-check

3 解决疑难的方法

根据前文的1和2,解决疑难概念和问题的首选方法是使用IDE来调试(比如尝试一些不同类型的变量传入一个简单函数,看看运行之后变量的reference和变量里的内容会不会修改,来验证语言里function在传copy还是传reference),次选方法是搜索相关的资料(比如quicksort的不同变种的讨论),注意尽可能去找不直接给你答案,而是有详细的探讨的资料。简单地说,就是那些“不应试”的资料。

triangle-exclamation

Last updated