0.1 本书与众不同的历史1999 年 1 月,我正准备使用 Java 教一门编程入门课程。我之前已经开了三次课,但是却感到越来越沮丧。课程的不及格率太高,即使对于及格的学生,他们整体的收获也太低。我看到的问题之一是教材。它们都太厚重了,写了太多关于 Java 的不必要细节,却缺乏如何编程的上层指导(highlevel guidance)。这些教材都陷入了陷阱门效应(trap door effect):开始的时候简单,逐渐深入,然后大概到了第五章左右,基础差的学生就跟不上了。学生们看的材料太多,进展太快,最后,我在接下来的学期里都是在收拾残局(pick up the pieces)。所以,在开始上课前两周,我决定自己写一本书。我的目标是:• 尽量简短。让学生们读 10 页,胜过让他们读 50 页。• 谨慎使用术语。我会尽量少用术语,而且第一次使用时,会给出定义。• 循序渐进。为了避免陷阱门,我将最难的主题拆分成了很多个小节。• 聚焦于编程,而不是编程语言。我只涵盖了 Java 最小可用子集,剔除了其余的部分。我需要一个书名,所以一时兴起,我选择了《如何像计算机科学家⼀样思考》。这本书的第一版很粗糙,但是却起了作用。学生们读了它之后,对书中内容理解的很好,因此我才可以在课堂上讲授那些困难、有趣的主题,并让学生们动手实践(这点最重要)。我将此书以 GNU 自有文档许可的形式发布,允许用户拷贝、修改和传播此书。有趣的是接下来发生的事。弗吉尼亚一所高中的教师 Jeff Elkne 采用了我的教材,并改为使用 Python 语言。他将修改过的书发给了我一份,就这样,我读着自己的书学会了Python。2001 年,通过 Green Tea Press,我出版了本书的第一个 Python 版本。2003 年,我开始在 Olin College 教书,并且第一次教授 Python 语言。与 Java 教学的对比很明显。学生们遇到的困难更少,学到的更多,开发了更有趣的工程,并且大部分人都学的更开心。此后,我一直致力于改善本书,纠正错误,改进一些示例,新增教学材料,尤其是练习题。最后的结果,就是此书。现在的书名没有之前那么浮夸,就叫《Think Python》。下面是一些变化:3Think Python 2e 中译版, 1.0• 我在每章的最后新增了一个名叫调试的小节。我会在这些小节中,为大家介绍如何发现及避免 bug 的一般技巧,并ᨀ醒大家注意使用 Python 过程中可能的陷阱。• 我增补了更多的练习题,从测试是否理解书中概念的小测试,到部分较大的项目。大部分的练习题后,我都会附上答案的链接。• 我新增了一系列案例研究——更长的代码示例,既有练习题,也有答题解释和讨论。• 我扩充了对程序开发计划及基本设计模式的内容介绍。• 我增加了关于调试和算法分析的附录。《Think Python》 第二版还有以下新特点:• 本书及其中的代码都已更新至 Python 3。• 我增加了一些小节内容,还在本书网站上介绍如何在网络浏览器上运行 Python。这样,如果你嫌麻烦的话,就可以先不用在本地安装 Python。• 在海龟绘图这章中,我没有继续使用自己编写的海龟绘图包 ‘‘Swampy‘‘,改用了一个更标准的 Python 包 turtle。这个包更容易安装,也更强大。• 我新增了一个叫作“The Goodies”的章节,给大家介绍一些严格来说并不是必须了解的 Python 特性,不过有时候这些特性还是很方便的。我希望你能使用该书愉快的工作,也希望它能帮助你学习编程,学会像计算机科学家一样思考,至少有那么一点像。
评论