Update:关心新书推荐的,直接看文末。
学Python,我很久前就有这个念头了,Python入门恐怕才是最近的事情。同样,这本书也是两年前买的,最近才看完。
用了这么长时间才学会这么简洁有趣的一门语言实在是不可思议,无奈这个过程被各种事情打断。所以推荐初学者集中时间,快速入门。之后,写小程序看中级书,Python会越来越顺手。
在我看来入门书是非常重要,直接影响到学习效率和理解语言风格。一本入门书要薄,少量的内容就勾勒出这门语言的重要特征。还要介绍惯用法,潜移默化语言风格,这里称之为Pythonic。
先说说书,Python入门书知名的有这么几本。
《Learning Python》(Python学习手册),作者还有一本高级教程做为该书的延续,《Programming Python》。可惜的是,书写的太厚了,极不容易作为入门书来看。估计还没看出Python的轮廓,已经放弃了。
《Core Python Programming》(Python核心编程 2nd),我认为与本书不分上下,书写的不错,比这本略深略厚一些,我几年前最开始看的就是这本,可惜没看一点就学其他的事情去了。和本书相比,看完要花的时间要更多些,我是在入门后翻过一遍的。这书的三版拆成了两本书,也是一基础一高级,但反而不适合入门了。另外,这书的二版网上有中文的文字版PDF。
《Python Tutorial》,官方教程,简洁明快,很不错。对于有编程基础的人,看一个星期就可以写简单代码。作为简明教程合适,作为入门书,教育性不够。入门书需要给读者提一些小问题,来提高读书时的思维活跃度,否则很难记住必要的语法点。
《A Byte of Python》(简明Python教程),适合有编程经验的,想快速了解Python语法的人。 如果你希望看个几天并同时完成一个简单程序,这个手册还是不错的,我有几个同事就是用这个入门。英文版网上持续更新,中文版好像是很老的一个版本。
《Learn Python the hard way》,章节分割的有点多,不能短期看到Python轮廓概貌,适合时间多,有耐心的人。对于已经有一门语言基础的人来说,略繁琐不够流畅,不合我个人口味。
《Dive Into Python》,书是不错但根本不是入门书,适合有Python经验的人看。不知道多少年前,谁把它当入门书给推荐了,有点坑人。
《Python基础教程》,这么多书里,这本让我入门也是缘分。内容适度,一半是语法介绍,一半是小项目做演示。随便吐槽两点吧,第一,介绍yield语法时,那个八皇后解题真不算是好例子,应该选个更简单易懂的例子,当时我看了很久,一度怀疑自己的智商,因为之前例子都很简单,以为这个例子的理解难度也和之前差不多一致。第二,后面部分项目的顺序安排不是特别合理,没有做到由易到难,web编程那部分也有点落伍了。
语言的入门显然不是把书看完就可以。看完书后,正好有机会在工作中写了几个小程序,log文本分析,用echo方式测试丢包率,用Tkinter库写了个telnet界面。终于有入门的感觉了。
期间还做过部分Python challenge的题目,推荐一下,值得花些时间。
Pythonic在语法掌握后可以有意培养一下,Code Like a Pythonista这篇文章和其文末列出的引用文章,非常不错。
Python里Web框架众多,Web.py是蔚为大观的轻框架中著名一员,可以花几天时间看看,官网有中文教程。
至此,Python可以入门了。
Update:
最开始写本文的时候是2013年,那时候和我口味的,寥寥无几。短短几年,Python学习已经处于好时代,入门书籍中上乘之选已经很多。
-
《C++程序设计语言》真的是本入门书吗?
2012-04-11
《C++程序设计语言》这书鼎鼎大名,C++语言之父亲自写出,无数牛人推荐,如雷贯耳。
恰好部门采购一批技术书籍,我就挑了这本。虽然是众人推荐的入门书籍,但是也有人持不同建议,加之又贵,所以直到最近才有机会一睹芳容。
曾看到有人评论对本书推崇之至,“它不是那种让你看了会不断窃喜的小书,需要用心体会,反复咀嚼。在阅读过程中,请特别留心Bjarne先生强调了什么,又对什么一语带过。”
我挺反感对一种东西吹捧上天,这种东西一旦真正了解,总是让你后悔白浪费时间。所以上面说的评语,让我最开始看时,总带着怀疑批判的眼光。没想到,作者直接在书里写明,程序员对于各种技术要有着“健康的怀疑精神”,真是一语说中我心。
于是,花了一个多月的时间,终于把这本书完整的看了一遍,其中最后关于设计的三章还看了两遍。看完之后,只想对那些把本书推荐给初学者的人说一句:“你们看过这本书了吗?给初学者推荐,这不是搞笑嘛!”
真的是如此,本书把C++的各个方面完完整整的写了一遍,更可贵的是,对语言细节和技术做了点评和建议。这些建议在我看来,是本书价值之中很重要的一点。难怪有人说,Bjarne不是很看重那些effectiveXXX之类的书,那些书的大部分不过是拾他牙慧而已。诚如所言,真要是把Bjarne的建议用心体会,很多问题已经解决,部分问题就直接绕过或避免了。
本书赞誉甚众,也无需我再美言。不如让我以一个初级程序员的眼光来说明为什么这本书不适合初学者。
首先,书太厚了,初学者需要的是讲解C++的核心语法和简单库元素的小书,本书好像茫茫大海,初学者在里面找不到C++的核心,反倒被各种繁复语法迷花了眼,更可能是学一点忘一点,看到最后没耐性放弃了。
其次,初学者有可能没有编程经验,作者在书中的建议你很难体会到原因,作者不建议使用的技术,你也不知道其缺点。很多精华知识成了过眼云烟,太浪费本书的价值和读者的时间了。
第三,初学者对很多知识很难深入下去,对作者穿插在书中各处的编程技术发现不了。一例证明之,我在读标准库时,已经耐心磨尽,准备只是随便翻翻算了,没想到作者居然给了不少标准库实现的代码和点评,竟然把课堂搬到实践现场了,真是酒好也怕巷子深啊。甚至快到结束时,我又从21章输入输出流的哨位那一节,收获了一个和这章知识无关的启发,真是处处知识点啊。
总之,初学者看这个书,劳“命”伤财,实在不合适。万勿上了高手或是装高手的当,等略有些储备再看此书也不迟,而且收获更大。