《Python Cookbook 第二版》:伯乐是怎么找到千里马的?

来源:互联网 发布:淘宝服装哪里图片 编辑:程序博客网 时间:2024/04/27 21:13

序言

本书并非典型的 O'Reilly 图书。典型的 O'Reilly 图书是由一两位作者写就的完整文稿;而本书则不然,本书是一种新的“将开源软件开发原则应用于图书创作”的大胆尝试。Python 社区的300多位成员为本书内容作出了贡献。在本序言中,我们(即本书编辑)希望向您(即读者)提供一些背景信息,包括本书的由来、本书的成书过程以及所涉及的人员,还有对于“本书所采用的新形式之意义”的思考。

0.1 The Design of the Book
0.1 本书的设计

2000年初,当时 O'Reilly & Associates 的主编 Frank Willison 联系上我(David Ascher),征求我是否想写书的意见。Frank 曾是我与 Mark Lutz 合写的 Learning Python 一书的编辑。由于当时我刚刚在 ActiveState(那时被认为是一家做 Perl 业务的公司)接受了一份工作,因此我没有足够余力再撰写一本书了,于是写书的计划就被恭敬地搁置下来。然而 Frank 还是时不时地给我发电子邮件,或者在会议上与我聊,议题都是针对我们之前讨论过的新书主题。Frank 有一个想法就是,基于首次由 Tom Christiansen 和 Nathan Torkington 在 Perl Cookbook 所采用的概念,创作一本 Python Cookbook。Frank 希望重塑 Perl Cookbook 的成功之道,但他还希望有更多人投入其中,为书的内容提供素材。他认为,同真正的食谱图书(cookbook)一样,更多的作者参与可以提供更多风味。而在他看来,由技术编辑监督,再以 O'Reilly 的编辑审阅流程相配合,书的质量是可以保证的。

Frank 和 ActiveState 的 CEO Dick Hardt 认识到,Frank 的目标可以与 ActiveState 的目标——为开源程序员创建一个社区网站(称作 ActiveState Programmer's Network 即 ASPN)——相调和。ActiveState 拥有一家受欢迎的网站,由其架构支持,可容纳丰富内容,但网站还没有进入创作原创内容的业务。ActiveState 总是认为,准确且保持更新的内容来源于开源社区,即使有时候这种内容很难找到。

O'Reilly 和 ActiveState 的团队很快认识到,他们各自的目标是一致的,联合协作将是最好的方式,以便达到如下主要目标:

* 创建 Python recipes 的在线资源库,由 Python 程序员创作,为 Python 程序员服务。
* 汇集最优秀的 recipes 出版一本书,其中还配有主要 Python 专家所撰写的概述以及背景知识等素材。
* 通过采用与以往不同的创作模式来做书,习得此种做书方法。

与此同时,另外两项活动也在进行中。其一,身在 ActiveState 的众员——包括 Paul Prescod ——正在积极物色“明星”来加入 ActiveState 的开发团队。其中一位候选者被招收进来,他就是著名(在当时我们还不认识)的 Alex Martelli。Alex 在 Python 邮件列表上发表了为数众多、无所不包的帖子,并因此而出名;他在此举中显示出了无限量的耐心,为数目不断增加的 Python 程序员们讲解 Python 的好长坏短。当时他还不为人知晓,因为他当时住在意大利,而且当时在 Python 社区中算是相对比较新近的来客,Python的老前辈们之前从未遇见过他。早在1980年代,Python 前辈们没有与 Alex 有过邂逅,那时 Alex 还住在美国为 IBM Research 工作,激情高涨地使用和推广着其他高级语言(当时主要是使用和推广 IBM 的 Rexx)。

ActiveState 向 Alex 伸出了橄榄枝,希望说服他迁到 Vancouver。我们谈得很拢,但他的老板向他抛出了金手绢,而 Vancouver 的气候又无法与意大利的相比,因此 Alex 还是留在了意大利,让我深感遗憾。而于此同时,Alex 也正在与 O'Reilly 交涉写书事宜。Alex 希望写一本 cookbook,但 O'Reilly 解释说 cookbook 已经被别人签下了。后来,Alex 与 O'Reilly 签下了 Python in Nutshell 的合约。

其二,Python Software Foundation 的创建也是一项当时正在进行的活动。处于多种原因——这些原因最好是留待会议上啤酒交杯时再详述——所有 Python 社区的同胞们都希望创建一个非营利性组织,作为 Python 知识产权的所有者,以此来保证 Python 站稳脚跟。然而,要使这样的组织成功运作,需要财政支持和 Python 社区的资金买进。

考虑上述所有因素,所涉及各方达成了如下计划:

* 由 ActiveState 建立在线的 Python cookbook 栏目,任何人都可以向其提交 recipe(比如,针对某个特定问题的 Python 代码解法,并附有相应的讨论说明,就跟解释为什么蛋白里要加塔塔粉一样)[译注:塔塔粉,cream of tartar,用于中和蛋白的碱性]。为了孕育作者资源并鼓励 peer review 机制,网站还须允许读者提出 recipe 的修改建议和提问等。

* 作为在 ActiveState 的工作的一部分,由我来监督 recipes 的技术品质。Alex Martelli 在准备集结出版成书时作为协作编辑参与了图书制作项目,并与 Anna Martelli Ravenscroft 一起成为第二版的主要编辑人员。

* O'Reilly 将优秀的 recipes 集结出版成 Python Cookbook

* 作为作者对 recipes 的忠诚之回报,图书销售的部分盈利将捐献给 Python Software Foundation。

0.2 The Implementation of the Book
0.2 本书的实现

在线 cookbook(http://aspn.activestate.com/ASPN/Cookbook/Python/)是 recipes 的汇集地。用户可免费获得帐户,填写表单,顷刻之间就可让其自己的 recipes 加入在线 cookbook。数以千计的人阅读了 recipes,有些人还为其追加了评注;如此一来,peer review 以与出版等效的方式,使得 recipes 日渐成熟并有发展演化。不难预见,有机会让自己的名字出现在印刷品上,这固然是在线 cookbook 的诱人之处。而每月数以十计的 recipes 会被新增到 cookbook,新闻组中对 cookbook recipes 的引用也越来越多。Cookbook 的这种持续成功,印证了 recipe 作者们带给读者的巨大价值。

基于网站上已有的素材,本书的实现基本上就是选择、合并、理顺以及编辑素材的问题。关于此的部分细节在本序言的“本书的组织”一节有更多阐述。

0.3 Using the Code from This Book
0.3 使用本书中的代码

本书旨在帮助完成您的工作。总体来说,您可以在自己的程序和文档里使用本书中的代码。除非是要利用相当大部分的代码,否则您无须联系我们请求许可。比如,在您的程序里利用到本书中的几个代码片段,这就不须要获得许可;而将 O'Reilly 图书中的代码放到 CD-ROM 中进行销售或发布,这就须要获得许可。引用本书中的内容来回答问题,或者引用本书中的示例代码,这都不须要获得许可。将本书中相当大部分的代码放到您的产品文档中,这就须要获得许可了。我们鼓励但不要求您给出参考信息。参考信息通常包括图书名称、作者名称、出版社名称和 ISBN。例如:"Python Cookbook, 2d ed., by Alex Martelli, Anna Martelli Ravenscroft, and David Ascher (O'Reilly Media, 2005) 0-596-00797-3." 若您觉得您对本书的利用超出了上述无须获得许可的一般范畴,欢迎通过 permissions@oreilly.com 联系我们以便咨询许可事宜。

0.4 Audience
0.4 本书的读者对象

读者至少需要了解一些 Python 知识。本书并不旨在全面教授 Python 语言,而是展现用以“完成特定任务”的一些技术和概念(偶尔也有讨巧的小技巧)。若您是希望将 Python 学入门,敬请考虑本序言“扩展阅读”一节所列出的书籍。然而,你也不需要太多 Python 知识,就可以从本书中找到用处。本书各章包含了各种 recipes,有些展示完成一般的基本任务的技巧,有些展示完成复杂或特殊任务的技巧。对于书中使用到的概念,有些你可能听过但也还没有完全弄明白,因此我们还在书中必要处加入了 sidebar(附加说明栏目),用以阐明特定的概念。诚然,本书不是专门为 Python 初学者准备的。本书的主要目标读者是整个 Python 社区——主要由相当不错的程序员组成,不包括菜鸟和鬼才。若您对 Python 已经有了许多掌握,您可能会从本书得到快意的惊喜!我们在部分 recipes 中还探索了一些最新和最不为人知的 Python 特性。或许您会从我们这里学到两招儿!无论您是用 Python 做什么领域的事情,或者有何种程度的编程技能,我们都相信您会从本书中获益。

若您已经有本书的第一版,您可能会犹豫是否需要这本第二版。我们的回答是“需要。”第一版包含 245 条 recipes ,我们保留了其中的 146 条(几乎所有条目都经过了大篇幅的编辑),追加了 192 条新的 recipes ,这样第二版一共包含 338 条 recipes 。因此,第二版中有超过一半的 recipes 是全新的,而且所有的条目都针对 Python 2.3 和 2.4 版本进行了更新。的确,针对软件版本的更新是我们在同篇幅的书中追加 100 多条 recipes 的主要原因。第一版的针对性涵盖了从 1.5.2(包括更早版本) 到 2.2 的所有版本,而第二版则是集中针对 2.3 和 2.4 版本。有赖于现今 Python 的强大功能,更有赖于“第二版避而不谈如何在 5 年前的 Python 版本上完成任务,从而避免了‘历史性兼容问题’”,我们得以在大致相同的篇幅中,切实提供更多针对更新版本的 recipes 及信息。

慧眼识真人,伯乐找千里马。看了此文,更觉编辑不易。加油吧!

原创粉丝点击