|
计算思维正在影响到每一行业的每一个人。这个趋势对我们的社会教育提出了新的挑战,尤其是对孩子们的教育。在思考计算方法时,我们需要整合计算领域的三个驱动者:科学、技术和社会。正在迅猛发展的技术变革和巨大的社会需求强制着我们去重新思考计算方法中最基础的科学问题。
计算思维(Computational Thinking)
计算思维是运用计算机科学的基本概念,去解决问题、设计系统以及理解人类的行为。
计算思维是一种分析思维。它与数学思维交叉,因为我们需要利用数学方法来解决问题;它与工程思维交叉,因为我们需要设计和评估现实世界中大型、复杂的系统;它与科学思维交叉,因为我们需要解释可计算性、智能、心理和人类的行为。
(a) 计算:抽象与自动化
计算思维的本质是抽象。在计算的时候,我们从物理学的时空维度中抽象出概念,这些抽象是很宽泛的,因为它们变成了一个个符号。例如,数字的抽象,就是一个很特殊的例子。
在两个方面,计算思维的抽象相比数学和物理抽象有着更丰富和复杂的特性。第一,我们所说的抽象并不一定是干净、优雅或者说容易从数学上定义的,如实数和实数集一样。举个例子,元素的栈是一种在计算机里常用的数据类型。我们不会像整数的加法一样,让两个栈相加。算法是一步步过程的抽象,它通过读取输入并生成相应的输出。那么,让两个算法交错是什么意思呢,也许是想做高效的并行处理。程序语言是一系列字符串的抽象,这些字符串经过解释执行后会产生相应的计算行为。那么,什么叫做把两门程序语言合成?这样的合成器可能需要经过仔细的思考,并且遵从一种研究范式来定义了。第二,我们所说的抽象,最终是需要应用在物理世界条件下的,我们不得不担心其边界和异常情况。当磁盘爆满了或者服务器没有响应怎么办呢?如果程序在运行时遇上了那些本该在编译时发现的错误,会出现什么情况?怎么样让机器人从走廊通过而不撞倒行人?
在和广泛丰富的抽象思维打交道时,如何定义“正确”的抽象,是一个很关键的问题。抽象过程,也就是去决定需要强调什么和需要忽略什么,是计算思维的基础。
抽象过程引入了层次的概念。在计算中,我们至少同时和两个抽象的层次打交道:关注层(注:关注层,就是需要与之交互的层面)和底层,或者关注层和上层。轮廓清晰的层次接口能让我们构造出一个巨大的复杂系统。用户不需要知道软件构件的具体实现,就可以通过应用程序接口(API)来和软件打交道。同样的,开发人员也不需要知道所有调用这个API的人有哪些。因特网的分层结构,尤其是“瘦腰型”互联网协议分层,不仅支持底层新计算设备和网络技术的加入,也支持成千上万的新应用在其上层运行。
在处理抽象的分层时,我们必须记住各个层次间的关系,更具体的说,就是一些抽象函数、模拟关系、转换或者更泛的映射。通过映射,我们可以观察一个状态机和它的改进版的等价性,可以证明对一个规范的实现是否正确,可以将高级语言翻译成更高效的机器代码。
所以计算思维的基本要素,就是定义抽象,实现多层次的抽象以及理解各个层次间的关系。抽象是计算的心智工具。
心智工具的力量,通过机械工具变得更强大。计算,是抽象的自动化。我们把抽象、层次及其关系,通过机械化来实现。之所以能够实现机械化,是因为我们严格定义的符号和模型。自动化暗示了需要一些计算机来解释抽象。最显而易见的计算机就是机器,也就是有着处理器、磁盘和通信部件的物理设备。没错,计算机可以是一个机器,但其实它也可以是一个人。人可以处理信息,也可以做计算和通信。换句话说,计算思维并不局限于机器中。而且,当我们把人和机器配合形成计算机时,我们就可以整合人和机器各自的处理能力。举个例子,人类在语法分析和图像识别方面要比机器强很多,而机器在执行确定指令方面,又比人类快的多,并且能够处理远远超过人能搞定的数据。
从操作意义上讲,计算就是要回答——“怎样能让计算机来解决这个问题”,这里的计算机可以是机器、人或者人机组合,或者更递归一点的说法:计算机的组合(比如网络)。笼统的回答这个问题就是,选择合适的抽象,然后找到适合的计算机去执行它。不幸的是,除非采用蛮力模拟,这个问题还真不容易回答。计算思维能够给出更多比使用简单机器蛮力更有效的方法。
(b) 计算思维无处不在
“计算思维正在影响这科学研究的方方面面,不管是自然科学还是人文科学”(Bundy 2007)。计算思维影响了其他学科的例子有:计算思维正在重塑统计学,通过机器学习,用自动化的贝叶斯方法和概率图模型从如天文图、功能性磁共振成像扫描、信用卡交易记录和超市收据的海量的数据中识别模式和异常现象(e.g. Machine Learning Department 2008)。计算思维正在重塑生物学,起初鸟枪法加快了我们排序人类基因组的速度,现在通过抽象的表示,我们从自然中发现了从细胞周期到蛋白质折叠结构的动态演化过程(e.g.Fisher & Henzinger 2007)。计算思维正在重塑经济学,孵化出计算经济学这一新的领域,衍生出广告投放、在线竞拍、信誉系统甚至是找寻合适的肾脏捐助者等应用 (Abrahamet al.2007)。
在其他很多领域,计算思维还处在一个简易思维的阶段:在机器上运行若干天以得到结果。很多科学和工程领域都依赖巨型机来模拟自然界发现的数学和物理过程。航空领域需要仿真一个飞行器或是太空任务的飞行轨迹。地球科学研究者敢于利用计算机从地壳到地表来模拟整个地球。在人文科学和艺术领域,数字图书馆、收藏品和人造制品通过计算性方法比如数据挖掘、数据联合等方法来发掘新的趋势、模式以及潜藏在表象背后的事物联系规律。
展望未来,更深层次的计算思维,更智能或更复杂的抽象将可能帮助科学家和工程师在新的维度为我们的系统建立起分析模型。通过计算抽象层的应用,比如层次分解方法(Hierarchical decomposition),我们期待看到何时我们能够将系统在多维度的时间和多分辨率的三维空间中被建模分析;去建立复杂系统中的交互模型,来发现爆发点和突变行为;增加参数的个数,并且为这些模型设置初始状态;自由地切换这些模型的时间节点;以及在现实中测试这些模型。
更深层次的计算思维,不仅可以帮助我们为复杂系统进行建模,还可以使得我们有能力去分析那些我们产生和收集的海量数据。通过分布式传感网络的部署,监测系统的安装,智能手机上照相机的流行,世界信息的数字化,复杂系统的机器模拟等,我们会收集到越来越多可分析的数据。这都会利用计算思维表示和处理数据的抽象,我们可以从数据中提取出其蕴藏的知识。如此以来,会有一个开放的反馈回路:这些挖掘出来的知识刺激我们的好奇心,引导我们提出新的问题,而这些问题又需要更多的数据;或者这些知识帮助我们更好地调整仿真程序,从而生成更多的数据。
愿景:我预想计算思维会成为一切领域发现和创新的助力。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-1 09:26
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社