无处不在的计算思维
本书前言
由于计算技术的进步和计算科学的进步,计算思维成为日常生活中无处不在的一种思考能力。它除了有助于我们更灵活地使用计算机、提升应用计算机解决实际问题的能力外,还能扩展我们的思路、提高工作效率、避免错误和意外,以及增加与他人沟通的能力。总之,计算思维能够使我们的生活和事业更加多彩。
计算机是傻瓜,它只会跟随程序指令来操作数据。无论指令还是数据都是用0和1的比特序列来表示的。然而,在有了指令和数据之后,计算机却是无所不会的“万能”机器。理解计算机的编程、控制以及完成任务的方式已经是令人着迷的事,更何况我们还从中学习到新的思维模式——计算思维。学习计算机课程,除了掌握它的知识和技能之外,还可以训练我们的思维,学会处理事务的方法,以及培养良好的工作习惯,例如:
细致缜密——把0变成1,或者变成大写的O,就可能弄乱整个程序。所以你需要鹰一样的眼睛和侦探一样的头脑,以及一丝不苟的态度。忽略任何事情都可能导致失败。
准确表达——计算机只能读你的手指,而不能读你的头脑!你需要准确和完整地表达要做的事情,不要放过任何细节,哪怕是一丁点儿的含糊都是不能容忍的。
逻辑推导——逻辑规则是一种精确描述问题的方式,学会正确地使用逻辑来思考和表达问题是非常有益的。
巧妙安排——对于一系列的任务进行巧妙而合理的安排,使得完成任务的总的花费时间最少,或者消耗的资源最少。
统筹协调——在为计算机设计算法和操作时,必须考虑各种资源的合理使用与调度,既避免冲突,在有些场合,通过折中平衡各种矛盾。
分工合作——通过模块化的设计,以接口协议形式实现不同模块之间的信息交互,是实现分工合作完成复杂任务的科学方式。 等等。
由此我们提出一个新的概念,叫做“计算化”(computize)。计算化是指应用计算思维来思考、分析、设计、阐述,以求实现目标。计算化是计算思维在方法层面的表现,是利用计算机解决问题时所遵循的系统的原则和步骤。
本教材希望通过讲授计算机科学和技术中最基本的内容,来介绍有关计算思维的一些概念。目的是让同学们通过学习计算机科学美妙的算法设计、逻辑电路、体系结构、网络环境等方面的知识,体会和理解其背后表现出来的诸如操作体验、用户中心、可视化等人文主义的基本思想,这些才是计算机科学的精华。我们要仔细学好教材中的内容,掌握好有关它的知识和技巧,将自己的专业和计算机有机融合,做好信息技术在本专业的应用。在此基础上,才能真正体会到计算思维反映出来的科学精神。无数历史经验告诉我们,真正能够改革旧事物,创造新思想的人,一定是对于旧事物十分熟悉和精通的人。
当然,作为大学本科通识类课程的一本教材,不可能讲解有关计算思维的深刻的内容,只是介绍一些关于计算思维的最初步的内容和结论。尽管如此,其中展示的内容已经是令人着迷和催人深思的了。不论是什么专业和将来从事什么工作,需要大家在学习时牢牢铭记的是:人永远是计算机的主人而不是奴仆,这是决定计算机科学与技术今后发展的关键。
希望读者能从中学到思考问题和解决问题的新方法,例如:不必使用编程语言来编写程序,就能体会到熟练程序员所具有的思维和解决问题的技巧;会用计算思维和计算化的角度来重新审视工作和生活。这些新的见解和观点可以培养读者的计算思维能力,使我们在看待这个世界的时候多了一个维度、多了一种视野,把一个领域的思想应用到另一个领域是实现突破与创新的有效途径。
2010年,中国9所高校发表了《九校联盟(C9)计算机基础教学发展战略联合声明》,其中明确提到“旗帜鲜明地将计算思维能力的培养作为计算机基础教学的核心任务”。同时也表明,“培养复合型创新人才的一个重要内容就是要潜移默化地使他们养成一种新的思维方式:运用计算机科学的基础概念对问题进行求解、系统设计和行为理解,即建立计算思维。无论那个学科,具有突出的计算思维能力都将成为新时期拔尖创新人才不可或缺的素质。国外一些著名高校开始尝试基于计算思维的课程改革,就是为了使其继续保持在计算机科学研究与计算机技术发展中的优势”。声明提出,“应该毫不犹豫,旗帜鲜明地把培养具有国际竞争力的高级人才的计算思维能力作为计算机基础教学的一项重要的、长期的和复杂的核心任务,为国内高校的人才培养引领方向,为计算机教学树立标杆”。
本教材正是在这一号召下,根据多年的研究成果而编写的。希望能够为大学计算机基础教学的改革起到添砖加瓦的作用。我们热切盼望读者能够通过本书配套网站(http://ct.hfut.edu.cn)分享自己的观点和案例,真诚希望通过汇聚各方面的贡献来促进计算思维能力的培养。
本书在编写过程中,得到了深圳大学陈国良院士、清华大学武永卫教授、浙江大学何钦铭教授以及国防科技大学殷建平教授的帮助,他们仔细审阅了书稿,并提出了富有针对性和深刻见解的修改意见,使得这本教材更加贴近学生和教师,在此表示衷心感谢。
本书在编写过程中,还得到了一些研究生和本科生的帮助,他们是:金柳颀,贵芳,李荣灿,王永近,向润昭,段荣,巩博文。其中贵芳、金柳颀和向润昭协助开发了本书的网站,李荣灿设计了本书的卡通画,贵芳和王永近测试了本书所有例子并编排了名词索引,段荣和巩博文整理了书中的一些内容。没有他们的帮助,本书不可能这么快完成,在此对他们一并表示感谢。
在这里还要特别感谢葛孝薇女士,她作为本书手稿的第一个读者,不仅为书稿的完善提出了建设性的意见,还参与了本书前言的撰写工作。
计算思维索引
计算思维:协议 119
计算思维:互操作 120
计算思维:用户体验 123
计算思维:分散化 125
计算思维:云服务 129
计算思维:互联网+ 133
计算思维:标记 144
计算思维:预存 151
计算思维:瓶颈 152
计算思维:慎待网络信息 154
计算思维:信息安全 163
计算思维:信息保密 165
计算思维:公钥 172
计算思维:评价指标 188
计算思维:分拆和复合 192
计算思维:迭代 192
计算思维:递归 198
计算思维:概念模型 206
计算思维:复杂问题 207
计算思维:算法复杂度 207
计算思维:资源限制 208
计算思维:启发式策略 209
计算思维:适用原则 218
计算思维:编码与解码 223
计算思维:数据类型与数据结构 232
计算思维:可计算性 5
计算思维:抽象化 6
计算思维:自动化 11
计算思维:语义辨析 13
计算思维:算法 16
计算思维:领域知识 20
计算思维:分治 21
计算思维:符号含义 31
计算思维:逆向设计 38
计算思维:信息及其表示 43
计算思维:由简入繁解决问题 54
计算思维:逐步求精 55
计算思维:逻辑检验 59
计算思维:构建复杂系统 63
计算思维:开源软件 76
计算思维:折中 82
计算思维:数据组织 85
计算思维:解读环境 86
计算思维:并发与并行 88
计算思维:协作 97
计算思维:程序 98
计算思维:容错 101
计算思维:引导升级 103
计算思维:接口 106
计算思维:系统结构 106
计算思维:冗余 115
|