计算思维:数字时代的核心素养
计算思维:数字时代的核心素养
计算思维作为21世纪人类认知能力的重要组成部分,其理论内涵与实践价值正随着数字技术的深度渗透而日益凸显。从计算机科学的内部概念演变为跨学科的通用素养,计算思维经历了数十年的理论建构与实践检验。本章旨在系统阐述计算思维的概念起源、历史演进与当代价值,深入剖析其四大核心要素——问题分解、模式识别、抽象化与算法设计——之间的内在关联,并通过与数学思维、科学思维的对比分析,揭示计算思维的独特认知价值。在此基础上,本章将引入具身认知理论,为后续阐述Scratch与Python的双轨编程教学实践奠定理论基础。
第一节 计算思维的溯源与概念演进
一、概念萌芽:从计算机科学到认知科学
计算思维(Computational Thinking)这一术语的正式提出,虽然与卡内基梅隆大学计算机科学系教授周以真(Jeannette Wing)的工作紧密相关,但其思想根源可以追溯到更早的学术传统。在计算机科学发展的早期阶段,研究者们已经意识到计算机科学家在解决问题时采用的思维方式具有独特的认知特征。1985年,数学家兼计算机科学家西摩·帕佩特(Seymour Papert)在其奠基性著作《头脑风暴:儿童、计算机与强力观念》中首次将“计算”(computation)视为一种具有变革力量的认知工具,强调儿童能够通过与计算机的交互发展出新型的思维方式。尽管帕佩特并未直接使用“计算思维”这一术语,但他的建构主义(Constructionism)理论为计算思维的提出奠定了重要的思想基础。
帕佩特的核心观点是:学习者通过构建外部可触摸的artifact(人工制品)能够更有效地内化抽象概念。这一洞见直接影响了后续计算教育研究者对编程学习的理解,也为本书所倡导的“做中学”(Learning by Making)理念提供了理论支撑。在帕佩特看来,计算机不仅是执行计算的工具,更是一种能够重塑学习者思维方式的认知伙伴。这种观点在当时虽然具有相当的预见性,但尚未形成系统化的理论框架。
与此同时,人工智能领域的先驱艾伦·纽厄尔(Allen Newell)和司马贺(Herbert A. Simon)在其关于问题解决(Problem Solving)的研究中,开始系统地分析人类在进行符号操作时的认知过程。他们的工作揭示了人类问题解决过程中涉及的搜索、启发式推理和知识表征等核心机制,为理解计算思维的认知基础做出了重要贡献。尽管这些研究并非直接针对“计算思维”这一概念,但它们深刻地影响了计算机科学家对人类智能与机器智能之间关系的理解。
二、周以真框架:概念的系统化建构
2006年,周以真在《ACM通讯》(Communications of the ACM)上发表了一篇题为《计算思维》的标志性文章,系统地阐述了计算思维的概念内涵与教育价值。在这篇具有深远影响的文章中,周以真将计算思维定义为一种涵盖问题分解、模式识别、抽象化与算法设计等核心要素的思维过程。她明确指出,计算思维是人类解决问题时应具备的基本技能,其重要性堪比阅读、写作和算术。这一论述将计算思维从计算机科学的专业领域提升为全体社会成员都应具备的通用素养,具有划时代的意义。
周以真对计算思维的系统化表述包含以下几个核心要点。首先,她强调计算思维是一种思维过程,而非关于计算机的编程技能。她写道:“计算思维是关于思考的思维,而非关于机器的思维。”这一区分对于理解计算思维的教育价值至关重要:计算思维的培养不应局限于培养少数能够编写程序的专业人才,而应面向所有学习者,成为一种普适性的认知能力。
其次,周以真详细阐述了计算思维的四大核心要素。问题分解(Decomposition)是指将复杂问题拆解为若干可管理的子问题的过程;模式识别(Pattern Recognition)是在看似不同的问题中发现共同的结构或规律;抽象化(Abstraction)涉及识别问题的本质特征而忽略无关细节;算法设计(Algorithm Design)则是构造一系列清晰的步骤来解决特定问题。这四个要素相互关联、彼此支撑,共同构成计算思维的核心框架。
周以真还从计算机科学的角度论证了计算思维的独特价值。她指出,计算机科学在本质上是一门关于抽象(abstraction)的学科:计算机科学家通过层层抽象来控制系统复杂性,在不同的抽象层次之间灵活切换。计算思维正是这种抽象能力的系统化体现,它不仅对计算机科学家有价值,对于处理复杂系统、进行逻辑分析、做出理性决策等普遍性认知任务同样具有重要指导意义。
三、概念拓展:从精英教育到大众素养
周以真的论述在学术界和教育界引发了广泛讨论,并推动了计算思维概念的进一步拓展。2010年,英国Computing at School工作组发布了《计算思维——一种每个人必备的技能》报告,将计算思维纳入K-12教育体系,强调所有学生都应接触并发展计算思维能力。2011年,谷歌公司发布了《探索计算思维》课程资源,进一步将计算思维的培养与中小学信息技术教育相结合。这些努力使得计算思维从学术概念逐步转化为可操作的教育目标。
2012年,巴巴拉·利索夫斯基(Barbara Liskov)和约翰·古塔克(John Guttag)在其著作《计算思维与软件工程》中,从软件工程的角度拓展了计算思维的内涵,强调其在大型复杂系统设计中的关键作用。2015年,美国计算机科学教师协会(CSTA)与K-12计算机科学框架编写组联合发布了《K-12计算机科学框架》,将计算思维作为计算机科学教育的核心实践之一,系统地规划了从幼儿园到高中阶段的计算思维培养路径。
在中国,2017年国务院发布《新一代人工智能发展规划》,明确提出要在中小学阶段设置人工智能相关课程,逐步推广编程教育。2018年,教育部发布《普通高中信息技术课程标准(2017年版)》,将“计算思维”列为信息技术学科核心素养的四大要素之一,标志着计算思维正式进入中国基础教育课程体系。这一政策调整为计算思维在中国的普及与深化提供了制度保障。
第二节 计算思维的理论框架与核心要素
一、四大核心要素的内涵解析
计算思维的四大核心要素——问题分解、模式识别、抽象化与算法设计——构成了一个相互关联、循环迭代的思维过程。为深入理解这一框架,本节将对各要素的内涵进行详细解析。
问题分解是计算思维的起点,其核心是将复杂问题拆解为更小、更易管理的子问题。这种分解并非随意的切分,而是基于问题内在结构的系统性拆分。以软件开发为例,一个大型应用程序可以被分解为用户界面模块、业务逻辑模块、数据访问模块等;每个模块又可进一步分解为更小的功能单元。问题分解的能力直接决定了一个人面对复杂问题时能否找到有效的解决路径。
从认知科学的角度来看,问题分解与工作记忆的局限性密切相关。人类工作记忆的容量有限,通常只能同时处理3-4个信息组块。通过将复杂问题分解为可管理的子问题,我们可以有效地控制认知负荷,使得原本超出人类认知能力的问题变得可解。这一原理不仅适用于编程领域,在项目管理、组织管理、科学研究等各个领域都具有普遍适用性。
模式识别是在问题分解的基础上,发现子问题之间或子问题与已有知识之间的相似性。模式识别的核心是从表象中抽取本质结构,将当前问题与已知问题的解决策略建立联系。例如,在编程中,我们可能会发现排序、搜索等操作虽然在具体实现上有所不同,但在算法结构上存在共同模式。识别这些模式能够让我们复用已有经验,避免重复发明轮子。
认知心理学研究表明,模式识别是人类学习与记忆的核心机制之一。人类专家之所以能够快速而准确地处理复杂问题,很大程度上是因为他们能够在长期记忆中存储大量的模式,并在遇到新问题时快速检索和应用这些模式。培养模式识别能力,本质上是扩展学习者的“模式库”,使其能够更高效地处理新情境。
抽象化是连接问题分解与模式识别的桥梁,其核心是在保留解决问题所需关键信息的同时,忽略不相关的细节。抽象化使得我们能够从具体的、特殊的问题中提取出一般的、普适的结构,从而实现知识的迁移与泛化。以编程为例,函数(function)的设计就是典型的抽象化实践:我们将特定的实现细节封装在一个接口之下,使得调用者无需了解内部实现,只需关注输入输出即可。
抽象化思维的能力直接决定了一个人处理复杂系统的能力。在软件工程领域,抽象层次的设计是系统架构的核心任务之一。良好的抽象设计能够使系统易于理解、维护和扩展;而不当的抽象则会导致系统耦合度高、难以修改。从更广泛的角度看,抽象化能力也是科学理论建构的基础:科学家正是通过抽象化,从纷繁复杂的现象中抽取本质规律,构建起具有解释力和预测力的理论模型。
算法设计是计算思维的操作层面,它涉及构造明确的、按步骤执行的解决方案。算法不仅是一系列指令的序列,更是一种将思维过程形式化、精确化的表达方式。一个好的算法应当具有正确性(能够正确解决问题)、效率(能够在合理的时间内完成)和可读性(易于理解和维护)。
算法设计需要综合运用问题分解、模式识别和抽象化的能力。在设计算法的过程中,我们首先需要将问题分解为可处理的步骤,然后识别问题中存在的结构模式,最后通过抽象化确定算法的高层结构与具体实现。算法设计也是计算思维中最接近“技能”层面的要素:通过大量的练习,学习者可以逐步发展出设计高效算法的直觉与能力。
二、四要素之间的内在关联
四大核心要素并非孤立存在,而是形成一个动态交互的有机整体。理解它们之间的内在关联,对于全面把握计算思维的内涵具有重要意义。
从线性流程的角度看,计算思维的问题解决过程可以描述为:面对复杂问题,首先进行问题分解,将其拆解为可管理的子问题;然后在子问题中识别与已知模式相似的结构;接着通过抽象化确定各子问题的本质特征;最后设计算法来具体解决每个子问题。然而,这种线性描述只是对真实思维过程的简化。在实践中,各要素之间存在着更为复杂的交互关系。
首先,问题分解与模式识别是相互促进的。在分解问题时,我们往往已经隐含地使用了模式识别的能力——我们之所以按照某种方式而非另一种方式分解问题,是因为我们识别了问题内在的结构模式。同样,模式识别也依赖于适当的分解:只有在适当的粒度上,问题结构才能被清晰地呈现出来。
其次,抽象化与算法设计是紧密交织的。抽象化决定了我们在何种层次上描述问题,而算法设计则决定了在该抽象层次上如何解决问题。在设计算法的过程中,我们常常需要在不同的抽象层次之间来回切换:在高层抽象中关注算法的主要结构,在低层抽象中处理具体实现细节。
从系统论的角度看,四大要素之间存在正反馈循环:良好的问题分解有助于发现模式,准确的模式识别促进恰当的抽象化,有效的抽象化支撑高效的算法设计,而设计良好的算法反过来可能揭示新的分解方式和模式。这种正反馈机制意味着计算思维能力的提升是一个螺旋上升的过程:每一次问题解决的经验都会丰富我们的模式库,提升我们的抽象化能力,从而使我们能够处理更加复杂的问题。
三、计算思维的认知科学基础
计算思维的四大要素并非凭空构造的概念,而是具有坚实的认知科学基础。理解计算思维的认知基础,有助于我们更深入地把握这一概念的实质,也能为教学实践提供科学指导。
从认知负荷理论(Cognitive Load Theory)的视角来看,计算思维的各个要素都与管理和优化认知负荷有关。问题分解直接针对复杂问题带来的高认知负荷,通过将问题拆解为较小的单元,使得每个单元的认知需求控制在工作记忆的可承受范围之内。抽象化同样具有降低认知负荷的功能:通过忽略细节、聚焦本质,我们能够显著减少需要同时考虑的信息量。模式识别则通过利用已有知识来减少新问题的认知需求——当我们识别出一个新问题与已知模式的相似性时,就可以复用已有的解决方案,而无需从零开始。
工作记忆与长期记忆的交互在计算思维中扮演核心角色。工作记忆是当前进行有意识思考的“工作台”,其容量极为有限;长期记忆则存储着我们的知识和经验,容量几乎是无限的。模式识别本质上是在长期记忆中检索与当前问题相关的模式,并将其调入工作记忆进行处理。抽象化则是将工作记忆中的具体信息转化为长期记忆中可存储的抽象结构,从而释放工作记忆空间以处理其他信息。
从具身认知(Embodied Cognition)的视角来看,计算思维的发展不仅涉及符号操作层面的认知过程,也与身体的参与密切相关。具身认知理论强调,认知活动并非孤立于大脑的抽象符号处理,而是深深地根植于身体与环境的交互之中。这一理论视角对于理解编程学习、特别是可视化编程工具(如Scratch)在计算思维培养中的作用具有重要启示,我们将在后续章节中详细讨论。
第三节 计算思维的独特认知价值
一、与数学思维的对比分析
计算思维与数学思维之间存在深刻的联系,同时也存在显著的区别。理解这两种思维方式之间的关系,有助于我们更准确地把握计算思维的独特价值。
从历史渊源来看,数学思维与计算思维有着共同的古希腊理性传统。数学思维的核心在于运用逻辑推理和符号抽象来探索数量、空间和结构的关系,其标志性特征包括演绎推理、公理化方法和形式化表达。计算思维则更加强调过程性、操作性和机械可执行性,其核心关注点在于如何通过明确的步骤序列来达成目标。
两种思维方式的第一个重要区别在于对“算法”的态度。在数学思维中,算法通常被视为实现特定计算目标的工具,关注的是结果的正确性而非过程的具体步骤。在计算思维中,算法则是核心关注对象:设计、分析和优化算法是计算思维的核心活动。计算思维不仅要求能够执行算法,更重要的是能够设计算法、理解算法的效率特征。
第二个区别在于对“执行”的重视程度。数学思维往往假设存在一个理想化的“执行者”,能够完美地按照指令行动,因此重点放在推理和证明上。计算思维则必须考虑执行者的实际能力和限制:计算机程序必须在有限时间内、有限资源下完成计算,因此计算思维特别关注时间复杂度、空间复杂度等效率指标。这种对执行约束的关注使得计算思维与实际问题解决之间具有更为直接的联系。
第三个区别在于“重复执行”的处理方式。数学思维通常关注一般性结论,一次证明即可覆盖无穷多的情况。计算思维则必须考虑程序可能被重复执行多次的情况,因此特别关注循环结构、递归算法和迭代方法。这种对重复执行的关注反映了计算思维与工程实践的紧密联系:在实际应用中,程序往往需要处理大量数据、响应多次请求。
二、与科学思维的对比分析
计算思维与科学思维既有联系又有区别。科学思维的核心在于通过观察、假设、实验和验证来探索自然世界的规律,其标志性方法包括控制变量法、归纳推理和假说-演绎法。计算思维则更加强调通过形式化、自动化的问题解决过程来处理信息。
从研究对象的角度来看,科学思维主要关注的是自然现象和自然规律,其目标是理解“为什么”;计算思维则更加强调处理人为定义的符号系统和程序结构,其目标是解决“如何做”的问题。然而,这种区分在现代科学中变得越来越模糊:计算科学(Computational Science)作为一个新兴学科,正在深刻地改变科学研究的方法论,大量科学问题现在需要通过计算机模拟和数值计算来研究。
科学思维中的建模(Modeling)与计算思维中的抽象化存在深刻的联系。科学家通过建立模型来简化复杂的自然现象,提取其本质特征;计算思维中的抽象化也是在做类似的事情——在保留问题本质特征的同时忽略无关细节。区别在于,科学模型的建立往往需要与自然世界进行比对验证,而计算思维中的抽象则更加强调逻辑一致性和可执行性。
另一个重要区别在于对“误差”的态度。科学实验必须考虑测量误差和统计不确定性,科学结论通常以概率形式表达。计算思维则更加强调确定性和精确性:一个算法要么正确地解决问题,要么就是错误的。这种对确定性的追求使得计算思维在某些方面更接近数学思维,但在处理不确定性信息(如概率算法、机器学习)时,计算思维也需要引入概率和统计的概念。
三、计算思维的不可替代性
尽管计算思维与数学思维、科学思维存在交叉,但计算思维具有其独特的、不可替代的认知价值。这种独特性主要体现在以下几个方面。
首先是关于“复杂性控制”的系统化方法。计算思维提供了处理复杂系统的一套完整方法论,包括模块化分解、层次化抽象、接口设计等工程化原则。这些原则不仅适用于软件开发,对于任何需要管理复杂性的领域都具有重要价值。特别是当复杂性超过人类直觉能够处理的范围时,计算思维的方法论往往是唯一可靠的控制手段。
其次是对“机械执行”的系统化研究。计算思维对可计算性(Computability)和计算复杂性(Computational Complexity)的深入研究,划定了哪些问题原则上可以被解决、哪些问题需要多少资源才能被解决的边界。这种对计算本质的追问,不仅具有理论意义,也有重要的实践指导价值:了解一个问题的计算难度,可以帮助我们在面对实际问题时做出更明智的技术选择。
再次是对“形式化”的深刻理解。计算思维培养了对形式系统的敏感性,包括对语法与语义、表示与被表示物之间关系的深刻理解。在信息时代,能够理解和运用形式化方法是处理复杂信息系统的基础能力。这种对形式化的敏感性与批判性思维(Critical Thinking)密切相关,都是理性素养的重要组成部分。
最后,计算思维提供了将想法“自动化”的桥梁。数学思维和科学思维主要产出的知识形态是定理、定律和理论;计算思维的独特贡献在于能够将人类的知识和方法转化为可自动执行的程序。这种可自动化性具有革命性的意义:一旦一个过程被形式化为程序,它就可以被无限复制和快速执行,从而实现知识的大规模传播和应用。
第四节 具身认知理论与编程学习
一、具身认知的理论框架
具身认知(Embodied Cognition)是20世纪90年代兴起的一种认知科学研究范式,强调身体在认知过程中扮演的核心角色。与传统认知科学假设“认知发生在大脑中、与身体无关”的观点不同,具身认知理论认为认知活动深深地根植于身体与环境的交互之中。
具身认知理论的核心主张可以从以下几个层面来理解。第一,认知活动依赖于身体提供的感知运动能力(sensorimotor capacities)。我们的概念系统、推理过程和语言表达都建立在身体经验的基础之上。例如,研究表明,人类对空间概念的理解与身体在空间中的运动经验密切相关;我们对温度高低的理解也与身体的温度感受经验相联系。这种“体验哲学”(experiential philosophy)的观点挑战了传统认知科学将心灵视为抽象符号处理系统的假设。
第二,认知活动的进行受到身体结构的约束和赋能。身体的大小、形状、运动能力和感觉器官的配置都影响着我们可以进行的认知活动。例如,人类工作记忆的容量限制可能与我们在自然环境中需要同时追踪的对象数量有关;我们对方位(前后左右上下)的天然理解与我们拥有垂直站立的身体结构有关。身体不仅约束着认知的可能性,也为认知提供了基本框架。
第三,环境在认知过程中发挥着重要作用。具身认知理论强调“耦合系统”(coupled system)的概念:认知不是发生在孤立的大脑中的事件,而是大脑、身体与环境作为一个整体系统的涌现属性。在这种观点下,工具和外部表征不仅是认知的辅助手段,更是认知系统本