昨天安利大家学习编程,顺带着还提升了英语阅读量和沟通能力。后台有不少小伙伴让我提供点学习资料,方便大家轻松上车。
那我就从自身经历出发,给的也是小白教程。资深程序员请勿喷。
首先解决好多人的疑问:「
我数学一塌糊涂,那是不是还要回头学高数?」
99%的人,编程能力都走不到数学为瓶颈的程度。在这个阶段之前,数学在编程中所占的比例非常小,以至于你完全不用担心自己的数学不够好。
1
如果你和我一样半路出家,那么我建议你以项目为导向,也就是
learn by doing
。
举个例子来解释,我们以前学数学,是先学会定理,再去做练习题,这叫
learn to do
,是青少年的求学方法。很多成年人依然延续这种思维,习惯学完整个教材,掌握了全部体系,才有自信去解决问题。可最后他们发现,自己什么问题也没有解决。
编程的逻辑是相反的。你该先给自己找道练习题,将其分解成一个个小步骤,一个个解决,一点点学习。在解决问题的过程中,你不断拼凑碎片,最后形成一个大致的知识体系。
这种反向的学习过程,叫做
learn by doing
。
为什么要采用这种方式?
首先,半路出家的人没有太多时间。我们没有整块的时间来学习教材,洞悉整个体系。成年人的时间是碎片化的,你只能以一个具体问题为目标,随时解决一个小问题,学习一点点知识,慢慢将这些碎片形成一个完整的拼图。
其次,这更符合成年人世界的逻辑。现实世界往往状况百出,充斥各种不确定。写程序类似如此,无论你准备的多充分,大部分的时间还是在找 bug 和调试错误。你尝试一个动作,得到一个结果,然后再调节自己的动作,这才是现实生活的学习。
你为自己找的这个「练习题」,可大可小,可难可易,由你自己决定,但必须是一个具体的问题,一个可执行的目标。
如果你不知道如何设定,我提供给你两个:
1.
写一个爬虫,找出知乎上关注人数最多的10000个人。
2. 开发一个Web App,其实就是一个网站,不过你不能用现成的web框架,自己写一个。
不必拘泥于上面的两个目标,你完全可以自己设定或者依个人兴趣修改。
设定了具体的目标,我们来选择工具。
2
既然都是小白,那不如就直接选择Python作为学习语言。理由是它
足够简单,容易上手。语法非常简单,编程过程就像写英文句子。
你只需要用两三天的时间快速过一下Python的语法,我推荐两个免费的学习资源(建议选择Python 3):
1. https://www.learnpython.org/
英文教程,内容比较简单,建议用很快的时间过一下。
2. 廖雪峰老师的Python教程
中文教程,稍有难度。如果对自己的学习能力有自信,建议直接学廖老师的教程。
这一阶段,会遇到各种莫名其妙的bug,不用担心。你会发现,在百度上很难找到解决这些问题的答案。这时候你应该借助google,在里面键入问题的关键词,我保证你99%的问题都可以马上解决。
当然,前提是你要学会科学上网。
Stack Overflow
在上面这个网站,你基本可以找到所有疑问的答案。最重要的,你的英语能力也会得到很大的锻炼。
3
学完了Python,你就可以开始执行第一步中为自己设定的目标了。
这里告诉大家一个tip:
你应该自上而下地完成一个项目。
第一步,利用搜索引擎(google,非百度),尽可能感性地了解项目的整体,在脑海中形成一个全景。
在此之前,不要投入到非常具体的技术细节中去。
这时候,我推荐你读那些科普性质的文章,而要避开晦涩的技术细节讨论。
比如你要做爬虫,你就应该用google去搜索有关爬虫的科普文章。你就明白了爬虫不过就是模拟一个速度特别快的浏览器。到这时,你自然清楚它涉及了浏览器和服务器这两个角色,那么你顺理成章地到了下一步。