计算思维

来自计算思维百科
跳转至: 导航搜索

计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为的涵盖了计算机科学之广度的一系列思维活动。

定义

2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊《Communications of the ACM》杂志上第一次给出了计算思维(Computational Thinking)的定义。周教授认为:计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为的涵盖了计算机科学之广度的一系列思维活动。

对于上述定义需要强调以下三点:

求解问题中的计算思维

利用计算手段求解问题的过程是:首先要把实际的应用问题转换为数学问题,例如求解鸡兔同笼问题,就需要建立二元一次方程,这个方程就是对问题的抽象、建模,然后设计算法和编程实现,最后在实际的计算机中运行并求解。前面的步骤是计算思维中的抽象,后面的步骤是计算思维中的自动化。

设计系统中的计算思维

R.Karp教授提出的“计算透镜”(Computational lens)理念中认为:任何自然系统和社会系统都可视为一个动态演化系统,演化伴随着物质、能量和信息的交换,这种交换可以映射为符号变换,进一步地就可以利用计算机对这些符号进行离散的符号处理。当自然或社会中的这些动态行为抽象为离散符号后,就可以采用形式化的规范描述,建立模型、设计算法和开发软件来表达这种演化的规律,并且通过自动执行实现实时控制系统的演化。

理解人类行为中的计算思维

王飞跃认为:计算思维是基于可计算的手段,以定量化的方式进行的思维过程。计算思维就是应对信息时代新的社会动力学和人类动力学所要求的思维。在人类的物理世界、精神世界和人工世界等3个世界中,计算思维是建设人工世界需要的主要思维方式。

利用计算手段来研究人类的行为,可视为社会计算(Cyber-Society Computing),即通过各种信息技术手段,设计、实施和评估人与环境之间的交互。社会计算涉及到人们的交互方式、社会群体的形态及其演化规律等问题。研究生命的起源与繁衍、理解人类的认识能力、了解人类与环境的交互以及国家的福利与安全等等,都属于社会计算的范畴,这些都与计算思维密切相关。

基本概念

计算思维就是通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个人们知道怎样解决的问题。

计算思维是一种递归思维,是一种并行处理,是一种把代码译成数据又能把数据译成代码,是一种多维分析推广的类型检查方法。

计算思维是一种采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法,是一种基于关注点分离的方法。

计算思维是一种选择合适的方式去陈述一个问题,或对一个问题的相关方面建模并使其易于处理的思维方法。

计算思维是按照预防、保护及通过冗余、容错和纠错方式,从最坏情况进行系统恢复的一种思维方法。

计算思维是利用启发式推理寻求解答,也即在不确定情况下的规划、学习和调度的思维方法。

计算思维是利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行折中的思维方法。

特征

概念化,不是程序化

计算机科学不是计算机编程。如果你能像计算机科学家那样去思维,那就意味着你的能力远远不止能为计算机编程,还能够在更好的抽象层次上进行思维。

根本的,不是刻板的技能

计算思维是一种根本技能,也就是说是每一个人为了在现代社会中发挥职能所必须掌握的。计算思维不是刻板的,因为刻板技能意味着机械的重复,而计算思维强调的是解决问题的能力。

是人的,不是计算机的思维方式

计算思维是人类求解问题的一条途径,如果说你具备了计算思维的能力,非不是说你会像计算机那样地思考。因为计算机是枯燥且沉闷,而你是聪颖且富有想象力的。

数学和工程思维的互补与融合

计算机科学在本质上源自数学思维,因为像所有的科学一样,其形式化基础建筑在数学之上。计算机科学又从本质上源自工程思维,因为人们建造的是能够与实际世界互动的系统,目前计算机的处理能力迫使计算机科学家必须计算性地思考,而不能只是数学性地思考。

是思想,不是人造物

计算机硬件和软件这些东西都是人造物,他们存在于生活的方方面面,并时时刻刻影响我们的生活,而其中包含的计算的概念更为重要,这种概念被人们用于问题求解、日常生活的管理,以及与他人进行交流和互动。

面向所有的人,所有地方

当计算思维真正融入人类的工作、生活中,而不是以一种高大上的哲学形式存在时,计算思维就将成为了现实。在教学过程中,计算思维作为一个问题解决的有效工具,应当在所有地方,所有学校的课堂教学中都得到应用。

本质

计算思维的本质是抽象(Abstract)和自动化(Automation)。它反映了计算的根本问题,即什么能被有效的自动进行。计算是抽象的自动执行,自动化需要某种计算机去解释抽象。

计算思维中的抽象完全超越物理的时空观,可以完全用符号来表示,其中,数字抽象只是一类特例。与数学相比,计算思维中的抽象显得更为丰富,也更为复杂。数学抽象的特点是抛开现实事物的物理、化学和生物等特性,仅保留其量的关系和空间的形式,而计算思维中的抽象却不仅仅如此。堆栈是计算学科中常见的一种抽象数据类型,这种数据类型就不可能像数学中的整数那样进行简单的相“加”。算法也是一种抽象,也不能将两个算法简单地放在一起实现一种并行算法。

抽象层次是计算思维中的一个重要概念,它使人们可以根据不同的抽象层次,进而有选择的忽视某些细节,最终控制系统的复杂性。在分析问题时,计算思维要求将注意力集中在感兴趣的抽象层次或其上下层,还应当了解各抽象层次之间的关系。

计算思维中的抽象最终是要能够机械的一步一步自动执行。为了确保机械的自动化,就需要在抽象过程中进行精确和严格的符号标记和建模,同时也要求计算机系统或软件系统生产厂家能够向公众提供各种不同抽象层次之间的翻译工具。

计算思维与计算机的关系

计算思维虽然具有计算机的许多特征,但是计算思维本身并不是计算机的专属。实际上,即使没有计算机,计算思维也会逐步发展,甚至有些内容与计算机没有关系。但是,正是由于计算机的出现,给计算思维的研究和发展带来了根本性的变化。

由于计算机对于信息和符号的快速处理能力,使得许多原本只是理论可以实现的过程变成了实际可以实现的过程。海量数据的处理、复杂系统的模拟和大型工程的组织,都可以借助计算机实现从想法到产品整个过程的自动化、精确化和可控化,大大拓展了人类认知世界和解决问题的能力和范围。机器替代人类的部分智力活动催发了对于智力活动机械化的研究热潮,凸显了计算思维的重要性,推进了对于计算思维的形式、内容和表述的深入探索。在这样的背景下,作为人类思维活动中以形式化、程序化和机械化为特征的计算思维受到重视,并且本身作为研究对象被广泛和深入地研究。

什么是计算?什么是可计算?什么是可行计算?计算思维的这些性质得到了前所未有地彻底研究。由此不仅推进了计算机的发展,也推进了计算思维本身的发展。在这个过程中,一些属于计算思维的特点被逐步揭示出来,计算思维与理论思维、实验思维的差别越来越清晰化。计算思维的内容得到不断地丰富和发展,例如在对于指令和数据的研究中,层次性、迭代表述、循环表述以及各种组织结构被明确提出来,这些研究成果清晰化了计算思维的具体形式和表达方式。从思维的角度,计算科学主要研究计算思维的概念、方法和内容,并发展成为解决问题的一种思维方式,极大地推动了计算思维的发展。