基本信息
- 原书名:Introduction to Computing and Programming in Python: A Multimedia Approach, Second Edition
- 作者: (美)Mark Guzdial Barbara Ericson
- 译者: 王江平
- 丛书名: 计算机科学丛书
- 出版社:机械工业出版社
- ISBN:9787111387381
- 上架时间:2012-6-25
- 出版日期:2012 年7月
- 开本:16开
- 页码:314
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > Python
教材

内容简介
计算机书籍
计算机程序设计课程往往是枯燥乏味的,而本书根据教育理论,开发了一种新的教学方法,介绍如何通过多媒体编程来学习计算机程序设计,将趣味性和实用性融手枯燥的编程课程的教学当中。本书方法独特新颖,实例通俗易懂,可帮助读者快速入门并深入掌握编程技能,是一本理论联系实际的程序设计教程。
《Python计算与编程实践:多媒体方法(原书第2版)》使用的编程语言是Python,这是因为Python强大实用(比如网站开发)、易于入门,计算机科学专业和非专业人士都可以学匀。本书以Python数字多媒体编程为主线,从图像、声音、文本和电影这些学生已经熟知的内容开始,讲解它们的处理方法,其中穿插介绍计算机科学与程序设计的基础知识。在讲解知识点的时候也独具匠心,先介绍容易理解的基本概念,如赋值、顺序操作、迭代、条件式、函数定义等,逐步涉及抽象内容,如算法复杂度、程序效率、计算机组成、层次式分解、递归、面向对象等。本书还提供了大量例题和习题,方便教学。
作译者
Barbara Ericson是佐治亚理工学院计算机学院“计算机普及”课程的主管和研究人员。她从2004年开始就致力手改善计算机基础教育,现在是计算机科学教师协会的师范教育代表,美国女性信息技术中心K-12联盟的合作主席,计算机科学AP考试开发委员会成员。她的研究兴趣涉及计算机图形学、人工智能和面向对象编程等多个领域。
目录
出版者的话
译者序
第2版前言
第1版前言
第一部分导论
第1章计算机科学与媒体计算导论
1.1计算机科学是关于什么的
1.2编程语言
1.3计算机理解什么
1.4媒体计算:为什么要把媒体数字化
1.5大众的计算机科学
1.5.1计算机科学与交流有关
1.5.2计算机科学与过程有关
习题
第2章编程导论
2.1编程与命名有关
2.2 Python编程
2.3 JES编程
2.4 JES媒体计算
译者序
这是一本什么样的书呢?根据主要内容,我们不妨先给出3种可能的诠释:
1)一本讲Python编程的书,以多媒体处理为例增强趣味性;
2)一本讲多媒体编程的书,选用Python作为示例语言;
3)一本别出心裁的“计算机导论”教程,以Python多媒体编程为线索讲解各种有趣的计算机科学知识,把读者带进充满乐趣的计算机科学殿堂。
每个答案都不算错,但最恰当的当数第3个。没错,本书以Python数字多媒体编程为主线,依次讲解了图像、声音、文本和电影的处理,其中穿插介绍了大量的计算机科学基础知识。方法独到,示例通俗,条理清晰,将趣味性和实用性融于讲解之中,所有这些都会给阅读本书带来美好的体验。
除了主要内容(数字多媒体处理)之外,本书的最后一部分还介绍了更通用的计算机科学与编程知识:计算机性能、函数式编程和多媒体编程。
本书读者对象
显然,本书适合用做计算机专业导论课或者非计算机专业编程课程的教材。
想了解或温习一下计算机数字多媒体处理知识的专业程序员也可以翻翻这本书。
想学习如何用程序处理多媒体的非专业人士也可以读一读。新东方的李笑来老师因为“能够编写一些批处理脚本”,才有了((TOFEL核心词汇21天突破》。想学习编程的朋友们,可别忘了Python是非常强大、非常流行,同时又易懂易学的脚本语言。
最后,所有对Python语言感兴趣,想通过一些简单实用的例子来学习这门编程语言的朋友,都可以看看这本书。
我与华章
自从跟聂雪军、王昕等朋友合作翻译《代码之美》起,这是我与机械工业出版社华章公司的第5次合作了,非常感谢他们五六年来对我一贯的信任,特别是陈冀康先生。
华章一直在大量引进国外的优秀计算机图书,我本人也是受益者,最近正在精读他们引进的《Computer Systems:A Programmer's Perspective》第2版。
致谢
首先感谢我的家人在这4个多月的时间里给予的支持。
本书的审校工作再次邀请了校对奇人张伸(新浪微博:@loveisbug)帮忙,此人眼尖、心细,再加上因博览群书而培养起来的文字感,每次都能帮上大忙。上次审校《Java语言精粹》一书,出版后发现的唯一一处错别字出现在未经他过目的“译者序”中。这次他又帮忙通读了全书译稿(包括译者序),十分感谢他的辛勤和一丝不苟。
遇到较难翻译的内容时,译者经常上译言网(www.yeeyan.org)论坛求助。感谢耐心解答过问题的以下网友:nc、桥头堡、dingdingdang、qmiao和sparklark。
在我的gtalk上,高远(新浪微博:@狼大人)是随叫随到的翻译顾问。谢谢他的不厌其烦和及时响应。
前言
第1版和第2版的主要区别如下:
1)增加了对Python语言的覆盖面,包括更多标准库方面的话题、全局域和更多的控制结构。
2)更加强调了抽象代码和可复用代码。
3)第13章增加了一些内容,指导大家制作标准的AVI或QuickTime电影与他人分享。
4)每章结尾处大大增加了练习题的数量。
5)所有的下标都改为从0开始,而不是从1开始。使用0,而不是1作为第一个下标,与标准Python更兼容。
6)去掉了使用Swing创建用户界面和介绍JavaScript的一章。
7)重写了关于设计和调试的一章,加入了设计和测试示例,强调了维护。
8)把创建和修改文本的一章拆成了两章。增加了有关隐写术(steganography)的例子。
9)把关于语言范式(编程风格)的一章拆成了两章,以提供更多关于函数式编程(比如非可变函数:non—mutable function)和面向对象编程(使用与Logo中类似的小海龟来介绍对象)的内容。
10)增加了更多教师们希望在导论课中提及的概念,比如负数的二进制表示。
11)整体上,语言描述更加清晰,删掉了一些不必要的细节。(希望如此。)
12)所有软件和素材的最新版本可从http://mediacomputation.org网站找到。
第2版增加了一位合著者为本书的写作出版带来了美好的回忆。
MarkGuzdial和BarbaraEricson
佐治亚理工学院
书摘
这些问题当中,比较著名的一个就是旅行商问题(Traveling Salesman Problem)。想象自己是一名负责很多客户的售货员——比如说客户数量是30,前面最佳歌曲问题的一半。为提高工作效率,你想在地图上找一条能把每个客户访问一次,且不会重复访问的最短路径。
要求给出旅行商问题的最优解,一种最有名的算法是O(n!)级的。那可是n的阶乘。另外有些耗时较短的算法能给出近似最短,但无法保证绝对最短的路径。对30个城市来说,使用这种O(n!)复杂度的算法需要执行30 !个步骤,或者说265252859812191058636308480000000步。到1.5 GHz的处理器上运行看吧——在你有生之年是运行不完的。
真正严重的问题是:旅行商问题并不是人为搞出来的玩具题目。确实有人需要在全世界范围内规划最短路由。还有一些类似问题,从算法上考虑与旅行商问题如出一辙,比如规划机器人在厂房中的行走路线。这是个又大又难的问题。
计算机科学家把问题归为三大类:
许多问题,比如排序,可以用运行时间为多项式复杂度(比如O(n2))的算法解决,我们把这类问题称为P类问题(P代表“多项式”)。
另一些问题,比如求最优组合,存在已知的算法,但解法太大太难,即使中等规模的数据量都难以在合理的时间内解决。我们把这类问题称为难解型(intractable)问题。
还有另一些问题,如旅行商问题,看似难解,但可能存在P类解法,只是我们尚未发现。
我们把这类问题称为NP类问题。
理论计算机科学领域最大的未解问题之一就是证明要么NP和P完全不同(意味着我们永远不能在多项式时间内解决旅行商最短路径问题),要么P包含NP。
你可能疑惑,有关算法的问题可以“证明”吗?毕竟我们有这么多不同的编程语言和编写算法的不同方式。如何能确定地证明一件事情是可做或不可做的呢?然而,这的确可以。事实上,Alan Turing(阿兰?图灵)甚至证明了某些算法是编写不出来的。
在编写不出来的算法当中,最著名的一个是程序停止问题(Halting Problem)。我们编写过读取或输出其他程序的程序。可以想象,一个程序完全可以读取另一个程序并输出相关信息(比如此程序中有多少print语句)。那么,能否编写一个程序,输入另一个程序(比如通过文件),然后告诉我们那个程序会不会停止呢?考虑这样一种情况:输入程序中有一些复杂的while循环,导致我们难以判定while循环表达式会不会变成false。然后再想象一下这样一组循环相互嵌套的情况。
……