第1章 计算思维与程序设计
1.1 计算思维
计算是人类文明最古老而又最时新的成就之一。从远古的手指计数、结绳计数,到中国古代的算筹计算、算盘计算,到近代西方的骨牌计算及计算器等机械计算,直至现代的电子计算机计算,计算方法及计算工具不断地发展,对推动社会进步发挥了巨大作用,现在已经进入到一个普适计算时代。
计算的本质就是基于规则的符号串变换。自然界的事件都是在自然规律作用下发展变化的。如果把特定的自然规律看作是特定的变换规则(称为“算法”),那么,特定的自然过程实际上就可以看作是执行特定自然“算法”的一种“计算”。例如,把一个小球扔到地上,小球又弹起来了,那么大地就完成了一次对小球的计算。计算可作为一种广义的思维方式,通过这种广义的计算(涉及信息处理、执行算法、关注复杂度)来描述各类自然过程和社会过程。
当代著名的未来学家尼葛洛庞帝(Negroponte)在他的《数字化生存》一书中写道“计算不再只和计算机有关,它决定我们的生存”。世界是被计算的,世界充满了计算。计算让不同领域的科学家找到新难题的解决办法,美国生物学家克雷格·文特尔采用让计算机实现海量计算的“基因测序霰弹枪算法”,使得基因测序工程比预计提前3 年完成。我国数学家吴文俊利用计算让几何证明实现了机械化。纵观世界环境,计算正改变着我们的工作方式和生活方式。
计算依赖思维,思维也是与时俱进的,1972年图灵奖获得者Edsger Dijkstra说:“我们所使用的工具影响着我们的思维方式和思维习惯,从而也将深刻地影响着我们的思维能力。”
2006年3月,美国卡内基·梅隆大学计算机系主任周以真教授首次较系统地定义了计算思维:计算思维是指运用计算机科学的思想、方法和技术进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。它属于三大科学思维(理论思维、实验思维与计算思维)之一,不仅仅属于计算机科学家,应当是每个人的基本技能,等同3R(Reading、wRiting、aRithmetic)。
从计算科学的角度来看,计算思维包括6个方面的特征:抽象性、数字化、构造性、系统化、虚拟化和网络化。
抽象性:计算思维是一种抽象思维,它是基于符号化的、有层次性的。
数字化:计算思维最终要用计算机完成表达,这种表达方式的基础是二进制数,包括编码与存储。可以把这种二进制符号化的特征理解为数字化。
构造性:计算思维的本质特征是基于计算模型(环境)和约束的问题求解,其核心方法就是“构造法”。
系统化:从系统本体论的角度来看,人类思维的对象世界是由各种各样的系统构成的。世界是系统的集合体,系统思维是一种综合性的思维,是整体思维与分析思维相结合的一种思维。
虚拟化:实践决定了思维,思维来源于实践并指导实践。既然现在处在一个广泛的虚拟实践的时代,自然也就产生了虚拟的思维。如果说虚拟实践是把客观世界虚拟化,那么虚拟思维就是把我们的主观世界虚拟化,从与现实的关系这个角度来看,任何的思维方式都具有虚拟性。
网络化:从狭义(形式)上讲,网络化思维是指利用以计算机为核心的信息网络作支撑的人机结合的思维方式。从广义(本质特征)上讲,网络化思维是指思维的一种状态和方式,它比喻思维空间的一种广度和深度,恰似网络的一种结构和空间分布,其思维特征往往体现着网络特征,是系统思维在信息时代的具体体现。
上述这些特征使得计算思维成为一种独立的思维方式。