假期结束,该上班的上班,该奋斗的奋斗。懒惰是暂时的,向上才是永恒的。
今天推荐两本书,一本是写Python的,另外一本也是写Python的。(记得之前有篇课文也是用的这样的描述手法:我家门口有两个树,一棵是杨树,另外一颗也是杨树)。
从大学开始,确切的说是从大学的图书馆开放开始,在无聊的时候总是会到里面四处逛逛,看着一排排的书架,书架上一排排的书,自己好像是鱼儿游到大海,觉得这些书都是我能看的,里面的知识都是我要掌握的,但有时又会觉得“大海”太大(大海啊,全是水),无所适从。兴趣广泛的人注定会觉得失落。太多的东西想要掌握,但是“胃口”就那么大。
之后随着在编程不断方面的学习,视野变的越来越聚焦,路线变的越来越清晰。在编程领域上了解的更多之后,也就知道了有些书,不可不读,有些书,可以不读,也有些书,不要去读。
简单解读一下就是,可以把书粗暴的分为:入门级,进阶级,高级,大神级。每一个级别的书,就专门某一领域来说,同质化是非常严重的。入门级的书,你精读十本你也还是个入门的水平,不管你信与不信,书的定位就在那里。拿Python来说,基础的教程都是讲解Python的语法,然后通过项目作业带你快速入门。不太可能一本基础教程中出现一大片陌生的知识,上来就让你不知所措。
说的这里我不得不提一本书,王爽的《汇编语言》,在这本书上不仅学会了汇编,也学习到了很重要的东西,用书上说法叫做:知识隔离。每个知识点之间既有关联,又是独立的,又是递进的。通过将知识点有序的拆分开来,才能铺成一条不断向上的“台阶”。让读者轻松的步入初级,步过初级。同时除了知识点隔离,还能引申到团队建设上,不同的任务也有难易程度,也有涉及到知识面、业务面的广泛与否的问题。如何“喂”给团队成员,让他/她不断踩着任务上行。不一样的领域,一样的道理。
现在看电子书居多,书店逛的也不如网店多了,但偶尔还是会逛那么一逛,不为买书,就是感受下氛围,有时候就是找找感觉。刺激下自己(看看这么多书,你才了解那么点东西,还不赶紧学习去)。
自从我进入Python编程领域之后,或者说靠Python吃饭之后,每次逛书店也必定看看Python的书,遗憾的是从一开始到现在看来看出还是那几本,并且没有正确的分类,而看看隔壁家的ruby方便的书不但有正确的分类,而且还很多(内个,至少比Python多)。
随着我靠Python吃饭的时间越来越长,有时候我想,要不要攒点劲儿,弄它一本书出来,让其他喜欢逛书店的Python程序员,看到Python的书是在变多的这样的趋势。但是看看现在市面是已经有的书,那些个作者,各领域的大牛都有。那些书的内容可能在某些领域算是比较先进的经验,但是在Python上却差点意思,怎么说呢,就是感觉不那么的Pythonic。我自己能搞出一个对别人有价值的书吗,我也不好说。
好了,读不下去的同学,推荐的书马上就要来了。容我再说一句,开卷有益,任何书都是如此,哪怕是一本烂书。难的是如何分辨,能分清楚说明功力已经不错了。经历过这么多年应试教育的我们经常被老师训导说:不要相信参考答案,因为那只是参考用的。书也是一样的,它是一个人的知识和经验积累到一定阶段(谁知道是什么阶段呢)的输出。因此,读的时候要不断的质疑作者的言论,去动手验证。
对于初级来说,任何一本评分不是很低的书都可以,只要是覆盖了Python大部分的基础知识就行。对于进阶的书来说,the5fire个人认为分为两种,一种是对于Python中的高阶用法的讲解,比如推导式和生成器,元编程等;另外一些是偏应用的部分,侧重于实践,基于Python,但又涵盖了很多其他的内容,更多的是在实践中的经验,以及对于Python应用场景的扩展,熟练了Python的基础语法之后,能做些什么呢?写一个基于socket的通讯工具?写一个p2p的共享程序?还是只能写出一个斐波那契数列生成函数?当你掌握一个“锤子”,看哪都是“钉子”,这时的问题在于你的视野,目所能及如果只是前面说的那些,那用Python这把“锤子”能做的事情确实有限。
这次要说的第一本书,之前the5fire博客上也说过,《Python高级编程》这本书现在来看确实有点老,但是内容还是够初学者吸收一下的。里面介绍了一些Python进阶的用法比如生成器,装饰器,上下文管理,MetaClass,MRO之类的,还有一些最佳实践。另外还有就是关于软件工程整体的介绍,开发流程,代码管理,如何打包分发代码等等内容。对于刚学完Python基础,能够熟练运用Python基础语法之后,看看这本书是个不错的选择。
另外一本就是董伟明(小明明)刚出版的一本书《Python Web开发实战》,新鲜出炉的,现在能买到的应该是第二次印刷了吧。书写的不错,卖的也不错。书上有我的推荐短评。这里就不再贴过来了。the5fire在看到书稿之后也是学到了不少东西,作者对于大部分接触到的项目、技术都能够有很深的了解。这其实就是做技术的应该有的精神,拿到一个东西,玩透它,有能力修改它。我们常说不要重复造轮子,但并不是说不用掌握造轮子的能力。
伟明的这本书就属于我上面说的另外一种书,能够开阔你的视野,最重要的一点是,这也是我想推荐他这本书的原因————伟明是在Python社区比较活跃的开发者,给多个优秀的开源项目提交过代码,相较于其他的Python中文书来说,这本算是比较存粹的具有Pythonic气质的书籍。书里面的内容涉及的非常广泛,对于初级或者初中级Python程序员来说,能够开拓视野。了解Python在Web开发上的方方面面。但缺点就是不够系统,这点从豆瓣上的评论也可以看的出来。这其实还是我上面说的那两种书的差别,不可能兼得。
正确阅读这本书的姿势是,边读边写代码,然后follow作者。开卷有益,何况是一个优秀的技术人写的东西,除了这本书,大家了解下书背后的东西也会有不少收获。
- from the5fire.com微信公众号:Python程序员杂谈