Python是一种编程语言,可以用来做网站、写自动化测试脚本、做数据分析,不过,我在2015年第一次决定在Mooc上莱斯大学的Python课程,只是因为一个在国内某知名企业做软件测试的朋友说她们用的是Python,那时我并不知道它还有那么多功能。
后来工作中并未用到Python,但业余时间又重学了Mooc上莱斯大学的课程,然后看过静觅的爬虫教程,最近又花了八天时间学了Python教程“Learn Python the Hard Way”。
我学Python一开始是想用它来找工作,后来是想用来写脚本,汇总下一些微信公众号的文章。这些愿望现在也没全部实现,因为发现已经有像传送门这样的专门网站做这类事情了。
但我对Python的兴趣却没有减退,因为通过这些学习,我实现了许多突破,比如对命令行的操作从无知排斥到理解喜爱,从完全看不懂别人的脚本到能够运行调试更改,从不知道爬虫到发现很多人已经写过了微信公众号的爬虫脚本;还从畏惧阅读全英文网页转变为现在更倾向于阅读像StackOverFlow这类国外高质量的程序设计问答网站、或者像Learn Python the Hard Way这种优秀的国外教程。
所以,虽然在Python本身学习上,我进步甚微,但对它的学习,却为我推开了通往有更多更好资源世界的一扇门。这篇文章将分享我在这个学习过程中的一些经验,这些经验有:有个小目标
一个教程多看几遍,多看几个教程
尽量多看英文网站
每天积累一点点
持续写笔记记录
练习英语口语、听力、翻译
这些经验有什么用?我是如何获得的?下面将一一道来。
经验一:有个小目标
要有一个想做成的东西,学习才可能持续;也就是要为了用而学,而不是为了学而学。
编程有时候轻松有趣,有时候则困难重重令人沮丧,这时如果没有一个特别想要达成的目标,就会很快轻易放弃。
我就是因为一直有批量抓取公众号文章的心愿,所以才持续学到今天。
经验二:一个教程多看几遍,多看几个教程
如果想学一门编程语言,不要妄想仅看一个教程就能学会(已经有一门编程语言基础的人则另当别论);一个教程看不懂,就多看几个教程。每个教程作者的侧重角度不一样,多看几个,就意味着获得多个角度,也多些理解。
我最初看别人的爬虫教程看不懂,然后看着网上那些博客里热热闹闹的排满了各种编程语言教程,Java、Android、Python、PHP……等等,心里异常崩溃,沮丧为何别人能学那么多语言,还能写出这么多教程来,而我,却连个简单的爬虫脚本都搞不定?
原本以为学过MOOC上的课程、能完成作业写出小游戏程序就算是会了,可为什么还有那么多代码看不懂呢?我开始注意到有个博主介绍python 基础时罗列了4个教程,忽然想到,连博主这么厉害的都要看好几个教程,那我这样的初学者,怎么能幻想连一个正儿八经的教程都没看过、就啥都能懂呢?
正是这个念头把我带到了一个好教程那里。
经验三:尽量多看英文网站
动了多看几个教程的念头后,又想起自己写过,有人在知识领域开心地赚取差价,有人则因为懒惰、心甘情愿地花钱买质量存疑的二手知识。我想,那些知名博主会那么多编程语言,他们是怎么学会的呢?我们在看他们写的教程,可是他们看谁的教程?他们很少透露过。
这些编程语言首先兴起于国外,那国外的信息资源更多吧?他们是不是直接看国外教程,然后转化成中文教程呢?(后来觉得他们也可能是直接看官方文档,然后写出教程。)
又想到了英语的学习。忽然冒起个念头:为何不直接看外国人写的教程呢?国内有免费的中文教程,国外开源精神更甚,很可能有呢。
就这样搜索了下“Python Tutorial”,真的找到了个“Learn Python the hard way”教程,随着后续阅读了解,发现它的确很好:它几乎能让一个完全不会python、不会命令行的人相当清晰透彻的理解python和命令行。
这也很容易理解,编程语言以英语为基础,而且起源于国外。国外那些从小就熟练掌握英语的程序员,他们的编程基础通常比国内的扎实得多,计算机知识范围也宽得多,所以讲起来也更加透彻些,我们看起来也就更容易理解些。
而国内的教程,有些地方作者自己本身就不太懂,所以讲起来就生硬、难以理解,要靠死记硬背,所以就人为地给读者额外增加了难度。(想象一下你本来要拆一座墙,别人说我帮你拆,结果给你又多树一堵墙。)
我从看不懂到看懂脚本的突破,全是拜这个教程所赐;再回过头去看爬虫教程,理解起来也轻松多了;而且它还教会了我如何提问、如何利用官方文档,总之,它让我从一个面对问题束手无策的小白,转变为学会独立地利用搜索引擎和网络解决问题的小白。
经验四:每天积累一点点
慢慢学,每天学一点点,哪怕一页、一段、甚至一句话都行;累了或者受到挫折了,休息一下再继续学。甚至干脆暂时停下,等到第二天再看。
经验五:持续写笔记记录
我从2月23号开始,几乎每天都写笔记总结,在技术博客上更新。笔记很零散,但只要写,就相当于复习巩固了当天所学内容。
同样内容也不在多,哪怕一句话都行。有时候只要开始写第一句话,就会接着写第二句、第三句……第N句。
经验六:练习英语口语、听力、翻译
我每天在扇贝听力练习十几句听力,在扇贝口语上练习3-4句口语。有段时间把某公众号的语音素材当朗读材料,每天跟读10篇,累计跟读190篇,现在能够做到跟读流畅(除非遇到生单词),跟读时没懂材料意思,但重播录音时发现能够听懂,也挺有意思的。
这样做的一个收获就是,在阅读全英文内容时,忽然没有了以前那种畏惧感。这说明听力和口语促进了阅读,让我对英语的感觉变得熟悉起来。这也是从心理学的学习中得到的启示,才转变策略(原先是狂刷单词,侧重练习阅读)。事实证明了,这个转变是正确的。
另外一个策略转变就是每天做一道翻译题,现在已经累计做了69道题。做翻译题的好处就是,能在github上用有那么一点点地道的英文提问题了。当看到在调试程序过程中遇到的棘手问题有人认真回答、并且回答能够增进对编程语言的理解时,瞬间成就感爆棚。
六条经验都分别讲述完了,再总结一下吧:有个小目标
一个教程多看几遍,多看几个教程
尽量多看英文网站
每天积累一点点
持续写笔记记录
练习英语口语、听力、翻译
在这些经验中,我觉得积累最重要。
去年有段时间热衷于早起,开始关注太阳出来的时间。
一年当中太阳出来最早的时间大约是凌晨5点,最晚时间大约在早上7点。两者之间的差别,均来源于半年当中每天都比前一天早或者晚一分钟,有时候还不到一分钟。这样每天难以察觉的细微变化,持续180天左右,就造成了夏至和冬至的日出时间有两小时的显著差别。
这就是积累的力量。学习编程,或者其他任何东西,亦是如此。
助我脱离苦海的快捷键
看累了吧,给大家介绍一个Mac上很好用的快捷键。有两周时间,我要经常选择一段文字做标记或者复制,频繁点按拖拉,弄得手指关节很痛,十只手指都快废掉了。为了减少痛苦,我无意摸索出了shift这个快捷键。
选中某一段文字时,通常做法是:光标放置到目标区域起始位置,然后手或者鼠标拖住不放,拖到终止位置,松开。
用快捷键的做法是:光标放置在目标区域起始位置,然后按住shift键不放,再单击终止位置,即可选中目标区域。
这个方法可帮我减少了不少人生痛苦,我想也许有人还不知道,所以分享出来,希望能普度众生。
再就是建议不会用命令行的人都学下用命令行,它使我少了很多手指点按的工作。苦海无边,学会命令行就是岸。codecademy和learnpythonthehardway上都有资源。
资源列表
最后汇总下本文提到的资源列表:
编程相关
交互式教程网站:
交互式教程网站:
https://www.codecademy.com/
(我在这个网站上学了HTML + CSS+ Javascript + Command Line + Git,虽然不是为了爬虫学的,但后来发现对爬虫学习有不可或缺的帮助。)
Web技术教程网站:
http://www.w3school.com.cn/
(在这个网站上学了SQL,有时候查阅资料也会使用这个网站。)
MOOC上的Python课程:
静觅的爬虫教程:
Python英文教程:
国外问答网站:
另一个可以提问的网站:
微信爬虫专门网站:
http://chuansong.me/
(我觉得这个网站作者很厉害,网站是用Python做的)
帮过我的一位程序员公众号:
赤兔金马奖(lijinma3)
我的技术博客:
英语相关
跟读材料的公众号:
清晨朗读会
练习听力口语的app:
扇贝听力、扇贝口语
翻译所用材料:
《通过翻译学英语——150实例使你迅速提高汉译英能力》,李学平编著,南开大学出版社
心理学相关
发展心理学(第6版)
罗伯特.费尔德曼著