第1版序
Python理所当然地被视为一门通用的程序设计语言,非常适合于网站开发、系统管理以及通用的业务应用程序。它为诸如YouTube这样的网站系统、Red Hat操作系统中不可或缺的安装工具以及从云管理到投资银行等大型企业的IT系统提供技术支持,从而赢得了如此高的声誉。Python还在科学计算领域建立了牢固的基础,覆盖了从石油勘探的地震数据处理到量子物理等范围广泛的应用场景。Python这种广泛的适用性在于,这些看似不同的应用领域通常在某些重要的方面是重叠的。易于与数据库连接、在网络上发布信息并高效地进行复杂计算的应用程序对于许多行业是至关重要的,而Python最主要的长处就在于它能让开发者迅速地创建这样的工具。
实际上,Python与科学计算的关系源远流长。吉多?范罗苏姆创建这门语言,还是在他在荷兰阿姆斯特丹的国家数学和计算机科学研究学会(CWI)的时候。当时只是作为“课余”的开发,但是很快其他人也开始为之做出贡献。从1994年开始的头几次Python研讨会,都是在大洋彼岸的科研机构举行的。例如国家标准技术研究所(NIST)、美国地质学会以及劳伦斯利福摩尔国家实验室(LLNL),所有这些都是以科研为中心的机构。当时Python 1.0刚刚发布,与会者们就已经开始打造Python的数学计算工具。10多年过去了,我们欣喜地看到,我们在开发具有惊人能力的工具集以及建设多彩的社区方面做出了如此多的成绩。很合时宜的是,就我所知的第一本涵盖了Python的主要科学计算工具的综合性著作,在另一个海洋之遥的中国编著并出版了。展望今后的十几年,我迫不及待地想看到我们能共同创建出怎样的未来。
吉多他本人并不是科学家或工程师。他在CWI的计算机科学部门时,为了缓解为阿米巴(Amoeba)操作系统创建系统管理工具的痛苦,他创建了Python。当时那些系统管理工具都是用C语言编写的。于是Python就成了填补shell脚本和C语言之间空白的工具。操作系统工具与计算逆矩阵或快速傅立叶变换是完全不同的领域,但是从Python诞生开始,世界各地的许多科学家就成了它最早期的采用者。吉多成功地创建了一门能与他们的C和Fortran代码完美结合的、具有优雅表现力的程序语言。并且,吉多是一位愿意听取建议并添加关键功能的语言设计师,例如支持复数就是专门针对科学领域的。随着NumPy的前身——Numeric的诞生,Python获得了一个高效且强大的数值运算工具,它巩固了在未来几十年中,Python作为领先的科学计算语言的地位。
对于一些人来说,“科学计算编程”会让人联想起Numerical Recipes in C中描述的那些复杂算法,或是研究生们在深夜中努力打造程序的场景。但是真实情况所涵盖的范围更广泛——从底层的算法设计到具有高级绘图功能的用户界面开发。而后者的重要性却常常被忽视了。幸运的是在本书中,作者为我们介绍了科学计算编程所需的各个方面。从NumPy库和SciPy算法工具库的基础开始,介绍了任何科学计算应用程序所需的基本工具。然后,本书很恰当地介绍了二维绘图以及三维可视化库——matplotlib、Chaco、Mayavi。用Traits和TraitsUI进行应用程序和界面开发,以及用Cython、Weave、ctypes和SWIG等与传统的C语言库相互结合等内容在书中也有很好的介绍。除了这些核心的工具之外,本书还介绍了使用SymPy进行数学符号运算以及其他的各种有用的主题。
所有这些主题都被汇编到一本书中真是一件令人欣喜的事情。本书所提供的一站式服务,能够指导读者从最初的入门直到创建一个漂亮的、全功能的分析与模拟应用程序。
Eric Jones
2011年12月8日
关于序言作者
Eric Jones是Enthought公司的CEO,他在工程和软件开发领域拥有广泛的背景,指导Enthought公司的产品工程和软件设计。在共同创建Enthought公司之前,他在杜克大学电机工程学系从事数值电磁学以及遗传优化算法方面的研究,并获得了该系的硕士和博士学位。他教授过许多用Python做科学计算的课程,并且是Python软件基金会的成员。
关于Enthought公司
Enthought是一家位于美国得克萨斯州首府奥斯汀的软件公司,主要使用Python从事科学计算工具的开发。本书中介绍的NumPy、SciPy、Traits、TraitsUI、Chaco、TVTK以及Mayavi均为该公司开发或维护的开源程序库。