论文部分内容阅读
计算思维为我们提供了一种问题解决的过程性思维,它不是一门独立的学科,而是嵌入问题解决过程的一种思维方式,甚至可以称作是一种信息社会人类的新思维习惯。计算思维与传统数学思维在解决问题的基本方法上有很多相似之处,但在解决策略上也存在明显的差异。两种思维到底有何不同?又有何关联之处?我们从中又能得到什么启示?本文尝试对两种思维做一次比较研究,或许有助于我们对计算思维解决问题的本质有一个更深刻的认识。
● 两种思维所依赖的工具不同
数学思维依赖于人脑作为解决问题的工具,计算思维需要思考的则是如何通过计算机等辅助性工具来帮助快速地解决问题,如何把现实问题转化成可以用计算机的技术、方法和思想加以解决的方式。计算机在解决复杂的、系统性的、需要大量重复迭代的问题时,价值体现尤为明显,为此计算思维也常被用于解决那些像四色定理证明等那样由于人类思维的局限性所造成的无法独立解决的问题。例如,同样对待“大数据下的学科质量精准分析”这项任务,数学思维着力思考的是如何组织和统计各种数据,如何进行求平均数、中位数、众数、方差、极差、标准差等计算,以及理解每类分析数据背后所代表的质量含义和比较意义,它充分调动的是大脑的智力。而计算思维的着力点在于思考用什么智能工具、什么智能软件、什么数据结构、什么算法组合可以简化检索、汇总等统计过程,优化数据呈现的形式和方式,它充分调动的是智能工具的资源和效能。
● 两种思维的链接方式不同
思维从本质上讲其实就是一种链接,人的知识、思想、认知、能力就是在一个个递进的链接中升华、深刻、精致与完善。但从生理机制看,人脑的神经网络链接因有突触间隙的存在,仍属于浅链接,浅链接的好处是可以随时解链,也可以随时搭建,也让信息传递产生无限种链接组合可能,为此也造就了人脑计算“创意、创新、创造”的鲜明特点,数学思维最集中地体现了这种链接优势。而计算机思维过程虽然模拟的是人脑的神经系统,但其本质是一种深链接,会显得有点机械呆板。人如果像计算机AI一样存在深链接(可计算),就会丧失其特有的创造性,但现实世界中有些问题、有些工作(如机器阅卷的客观题、门禁保安系统)反而需要这种机械性来克服人为干扰以确保结论的准确性、公正性。
● 两种思维的动作机制不同
计算机计算与数学计算有很大不同。数学思维中虽然包含了许多数学推理、演算等可计算的内容,但数学思维中时常发生的联想、猜测、灵感、会意、顿悟、潜意识等是人脑生理中特有的学习触发机制,这些心理现象可能会在数学思维中发生,但在计算机思维中还极难实现,甚至难以计算和模拟。
案例1:求13、27、8、20、6、11这组数中的最大数。
人脑可以在视线过后迅即找到其中的最大数27,其搜寻的思维过程和心理机制是瞬间完成的,而电脑则必须精准推演出“打擂法”的每一步,才能准确计算搜寻过程并找出最值。人脑的算法只适用于有限度搜寻,对于海量的数据则无法应对,而电脑的计算,1000个数与6个数的最值搜寻其本质并无显著差异。
计算机计算的优势在于可重复、全自动,但前提是预設的过程必须能被精确计算和描述。可计算,是电脑最有别于人脑之处。相对于人脑,计算思维解决问题更严谨甚至刻板、机械,它需要一个语义明确、可行有效的算法,需要每一步必须可操作、确定化、清晰化,换句话说,数学思维可以是不连续的,但计算思维必须是连续的,它尚不具备人类的模糊和联想等高智慧思维能力。
● 两种思维的基本方法不同
每一种思维方式在其学科长期发展过程中都会沉淀形成其特有的解决问题的固定方法,例如,数学思维下解决问题的方法表现在数学抽象、推理和建模领域(如表1)。
相对于数学思维的成熟和多元,计算思维解决问题的方法研究尚处于起步阶段,我们常用的计算机方法有抽象、分解、约简、结构、递归、算法、化归、程序、仿真、网络等。以分解为例,对待“大数据下的x年级段学科质量精准分析”这项具体任务,可以思考用模块化的信息管理方式进行组织数据的统计(分语、数、英、科等学科统计,分年级段、班级、个人等层次统计,分总分、平均分、优秀率、合格率、前后20%等类型统计),以分解复杂问题的规模,把大事化小,小事化常(定式),它模仿的便是计算机学科的模块化、逐步求精的思想。
计算思维与数学思维在处理问题时采用的许多方法有诸多相似之处,如简化、转化、优化等,只是两者处理的方式不同,目标不同。数学思维的优势在于其逻辑性、推理性、公式化、符号化,体现了涵盖所有理科的普识性方法,而计算思维体现的是机械化计算,其优势在于流程化、模块化、复用性(递归)、结构化,充分体现了学科特点。
● 两种思维的研究对象不同
同样是问题解决,数学思维和计算思维研究的对象很不相同。数学思维研究的更多的是数学本身的内部规律(学科问题),它会撇开具体的内容,剥离非学科性的外表,以纯粹的形式去研究事物的数量关系和空间形式,成果也是以有典型数学特征的形式呈现。
何谓信息技术问题?我认为,一切以信息技术为核心内容的问题,或者必须运用信息技术的技术、概念、思想或方法才能解决的问题,就是信息技术问题。技术已不是计算机解决问题的唯一工具,学科思想与方法也是工具;计算机解决的也不限于狭隘的本学科的技术问题,还包括了信息问题、生活问题、社会问题。周以真教授说过,计算思维就是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等的一系列思维活动。计算思维中的许多概念——并行思维、系统思维、分治法、递归(迭代)、模块化等,其应用也已超越了学科范畴,面向所有人,深入所有领域。这些方法不仅在计算机学科中有效,在其他学科的问题求解中同样可以被有效应用。例如,我们常用的分治算法,其价值已不限于是一种程序的算法,更是一种解决复杂问题的思维方式,甚至成了解决经济问题、社会问题的具有普遍意义的方法与策略。 ● 两种思维的抽象内容不同
抽象是思维的本质,没有抽象的思维是肤浅的,数学与计算思维下的问题解决都需要从抽象开始,但数学思维下的抽象会抛开现实事物的物理、化学和生物等特征,仅保留其量的关系和空间的形式。数学抽象包括了数量的抽象(如,45克鸡蛋,45与克就是从这个鸡蛋的重量属性中抽象出来的数量词)、空间的抽象、模型的抽象等。
计算思维的抽象源于数学的抽象方法,但计算思维除数量与模型的抽象之外,还包括了学科特有的对象的抽象、(数据)关系的抽象、规则的抽象等,它让抽象的内容变得更丰富,让抽象的行为更有意思,这为其他领域的问题解决提供了更多有益的启示和解决思路。
计算思维中对象的抽象,涵盖了一切我们想研究的事物,它可以是一个具体的物体,也可以是一个抽象的事物,甚至是一个我们想象中的虚拟事物。每个抽象的对象都有自己的状态,其状态可通过若干个关键属性来描述,如我们对一个人的抽象,可以通过一组量化的数据编码组合(如姓名、性别、年龄、身高、籍贯、专业等信息),实现从客观世界的人到计算机世界的人的抽象与映射,如VB中“按钮”对象的状态可以修改“Caption\BackColor\MouseIcon”等属性来呈现,通过这些属性的描述,我们可以区分不同的对象,操作不同的对象,实现不同的方法和事件响应。计算机特有的基于对象的思维和操作方式,让我们可以将复杂问题的事物场景分解成有形的若干个对象组合,这些对象可视作程序与作品的最基本单位,也是我们用来描述问题、解决问题过程中的行为主体。
再如规则的抽象,它是智能工具特别是计算思维的重要特征。组成现实世界的问题都是由许多规则构成的,在解决问题过程中,我们需要从事物的描述中梳理和抽象出可以控制执行的若干条规则,并且将这些规则转换成计算机可以“理解”的表达形式。例如,浙江摄影版小学信息技术教材《创编游戏》,我们可以先尝试让孩子玩游戏,然后理解并抽象出游戏中有哪些最关键的规则存在(如表2),从而实现对应的分支结构的Scratch脚本编码。
● 两种思维的建构模型不同
有问题必然有思维的抽象,但对待同样的问题,学科不同,抽象出的结果即学科模型也大相径庭。数学建模就是把生活问题从数学学科视角转化成数学问题,聪明的数学解题优化方式,需要的就是把将未知问题转换或改造成适应于已有的计算公式的经典模型(定式)。计算机的优势在于自动化,所以计算机建模更多的是把生活问题从计算机科学的视角转化成计算机问题,我们要善于将问题转换或改造成适应于重复与自动化的计算的递归或递归公式的模型。
案例2:“1 2 3 … 100”数列求和。
数学思维解题时多选用高斯法也就是等差数列求和的公式S=(1 N)*n/2去解。如果遇见“1 2 3 3 4 … 100”的变异性问题,人类思维也会尽量把问题简化成公式性工作来完成,即分成“1 2 3 4 … 100”和“3”两段再求解比较快捷。而同样的问题求解,计算思维则会思考把问题“剪”化成重复性工作:S=s a(按序求和,其中a=1…100)。
案例3:鸡和兔共15只,共有40只脚,有鸡和兔各几只?(鸡兔同笼)
数学思维的方式有两种。方案一为方程法:设鸡的数量为X,兔的数量为Y,则列方程组:X Y=15;2X 4Y=40。列方程组相当于建立了解决“鸡兔同笼”的数学模型,将该问题化归为典型的二元一次方程的问题进行求解。方案二为纯数学法:15*2=30;40-30=10;10/(4-2)=5(兔)。而解决此典型问题的计算思维方式,就是选择常用算法——穷举法:鸡1~15,兔1~15,然后一一枚举找出符合这两个条件的数据。该模型就最大化地利用了计算机高效、精确、自动化的数值处理优势。
数学建模重点思考的是如何让问题的解决得到最简洁、最高效的执行,得到最正确的结果;而计算思维需要思考的核心是如何把问题解决过程自动化的实现,至于结果与效率并非中心着力点。
● 两种思维对待数据的处理方式不同
数学和计算思维都把数据作为主要的研究对象,但传统数学思维仅仅把数据当作处理、计算的“死”对象,它在数据收集、模拟预测等环节上所花费的时间是相当少的,像学生最主要的数据来源,来自表格、统计图或者通过观察简单测量形成的数据,它们往往是现成的,或已按照某种特定的数学形式结构化了的,或者说是已被处理的。
数据是计算机科学的基础,但计算机世界里的数据是活化的。计算思维不仅把数据作为处理的对象,它还覆盖了数据从诞生到再造的每一阶段——数据收集、数据编码、数据存贮、数据处理、数据预测(数据不仅仅是数据,数据还产生新数据),这五个环节都是构成信息社会里数据素养的不可或缺的重要组成部分。例如,解决问题中的先决条件——数据收集,就是计算思维教学中一项极其重要的内容,我们要让孩子们亲身体验使用现代工具来采集和记录多种类型的数据,掌握不同测量工具的使用方法,了解数据本身的复杂性(获取的原始数据许多是非结构化、劣构形式呈现),在必要的时候还需通过计算机来模拟所需的数据。
● 两种思维的表征方式、结果用途不同
数学与计算机在解决问题时都有各自的一套独立的符号表征系统。在运用数学思维解决问题时,往往用字母、数、公式、运算符、方程、函数、不等式等数学符号来对问题进行表征和运算,同时辅以文字性的说明,它是以一种便于“人”理解的形式呈现出来的,如案例2的求和过程,就可用最简洁的数学符号来表示。数学思维的结果是要求学生通过抽象的符号推理和缜密的公式演绎来认识世界,会熟练运用数学的语言来发掘和理解这些抽象结构之间的关系,最终掌握客观世界的规律。
计算思维下的解题过程,除了用数学符号等传统表达方式外,它的语言组织和呈现形式更需要符合特定系统或工具的逻辑,需要符合智能工具“可识别、可理解、可接受”的方式。计算思维的算法里还新增了流程图、伪代码、机器语言、高级语言等全新的形式化方式,数据关系中还提供了诸多数据流图、状态转换图、链式关系图等结构化形式,如案例2的伪代码实现方式是:for A←0 to 100
● 两种思维所依赖的工具不同
数学思维依赖于人脑作为解决问题的工具,计算思维需要思考的则是如何通过计算机等辅助性工具来帮助快速地解决问题,如何把现实问题转化成可以用计算机的技术、方法和思想加以解决的方式。计算机在解决复杂的、系统性的、需要大量重复迭代的问题时,价值体现尤为明显,为此计算思维也常被用于解决那些像四色定理证明等那样由于人类思维的局限性所造成的无法独立解决的问题。例如,同样对待“大数据下的学科质量精准分析”这项任务,数学思维着力思考的是如何组织和统计各种数据,如何进行求平均数、中位数、众数、方差、极差、标准差等计算,以及理解每类分析数据背后所代表的质量含义和比较意义,它充分调动的是大脑的智力。而计算思维的着力点在于思考用什么智能工具、什么智能软件、什么数据结构、什么算法组合可以简化检索、汇总等统计过程,优化数据呈现的形式和方式,它充分调动的是智能工具的资源和效能。
● 两种思维的链接方式不同
思维从本质上讲其实就是一种链接,人的知识、思想、认知、能力就是在一个个递进的链接中升华、深刻、精致与完善。但从生理机制看,人脑的神经网络链接因有突触间隙的存在,仍属于浅链接,浅链接的好处是可以随时解链,也可以随时搭建,也让信息传递产生无限种链接组合可能,为此也造就了人脑计算“创意、创新、创造”的鲜明特点,数学思维最集中地体现了这种链接优势。而计算机思维过程虽然模拟的是人脑的神经系统,但其本质是一种深链接,会显得有点机械呆板。人如果像计算机AI一样存在深链接(可计算),就会丧失其特有的创造性,但现实世界中有些问题、有些工作(如机器阅卷的客观题、门禁保安系统)反而需要这种机械性来克服人为干扰以确保结论的准确性、公正性。
● 两种思维的动作机制不同
计算机计算与数学计算有很大不同。数学思维中虽然包含了许多数学推理、演算等可计算的内容,但数学思维中时常发生的联想、猜测、灵感、会意、顿悟、潜意识等是人脑生理中特有的学习触发机制,这些心理现象可能会在数学思维中发生,但在计算机思维中还极难实现,甚至难以计算和模拟。
案例1:求13、27、8、20、6、11这组数中的最大数。
人脑可以在视线过后迅即找到其中的最大数27,其搜寻的思维过程和心理机制是瞬间完成的,而电脑则必须精准推演出“打擂法”的每一步,才能准确计算搜寻过程并找出最值。人脑的算法只适用于有限度搜寻,对于海量的数据则无法应对,而电脑的计算,1000个数与6个数的最值搜寻其本质并无显著差异。
计算机计算的优势在于可重复、全自动,但前提是预設的过程必须能被精确计算和描述。可计算,是电脑最有别于人脑之处。相对于人脑,计算思维解决问题更严谨甚至刻板、机械,它需要一个语义明确、可行有效的算法,需要每一步必须可操作、确定化、清晰化,换句话说,数学思维可以是不连续的,但计算思维必须是连续的,它尚不具备人类的模糊和联想等高智慧思维能力。
● 两种思维的基本方法不同
每一种思维方式在其学科长期发展过程中都会沉淀形成其特有的解决问题的固定方法,例如,数学思维下解决问题的方法表现在数学抽象、推理和建模领域(如表1)。
相对于数学思维的成熟和多元,计算思维解决问题的方法研究尚处于起步阶段,我们常用的计算机方法有抽象、分解、约简、结构、递归、算法、化归、程序、仿真、网络等。以分解为例,对待“大数据下的x年级段学科质量精准分析”这项具体任务,可以思考用模块化的信息管理方式进行组织数据的统计(分语、数、英、科等学科统计,分年级段、班级、个人等层次统计,分总分、平均分、优秀率、合格率、前后20%等类型统计),以分解复杂问题的规模,把大事化小,小事化常(定式),它模仿的便是计算机学科的模块化、逐步求精的思想。
计算思维与数学思维在处理问题时采用的许多方法有诸多相似之处,如简化、转化、优化等,只是两者处理的方式不同,目标不同。数学思维的优势在于其逻辑性、推理性、公式化、符号化,体现了涵盖所有理科的普识性方法,而计算思维体现的是机械化计算,其优势在于流程化、模块化、复用性(递归)、结构化,充分体现了学科特点。
● 两种思维的研究对象不同
同样是问题解决,数学思维和计算思维研究的对象很不相同。数学思维研究的更多的是数学本身的内部规律(学科问题),它会撇开具体的内容,剥离非学科性的外表,以纯粹的形式去研究事物的数量关系和空间形式,成果也是以有典型数学特征的形式呈现。
何谓信息技术问题?我认为,一切以信息技术为核心内容的问题,或者必须运用信息技术的技术、概念、思想或方法才能解决的问题,就是信息技术问题。技术已不是计算机解决问题的唯一工具,学科思想与方法也是工具;计算机解决的也不限于狭隘的本学科的技术问题,还包括了信息问题、生活问题、社会问题。周以真教授说过,计算思维就是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等的一系列思维活动。计算思维中的许多概念——并行思维、系统思维、分治法、递归(迭代)、模块化等,其应用也已超越了学科范畴,面向所有人,深入所有领域。这些方法不仅在计算机学科中有效,在其他学科的问题求解中同样可以被有效应用。例如,我们常用的分治算法,其价值已不限于是一种程序的算法,更是一种解决复杂问题的思维方式,甚至成了解决经济问题、社会问题的具有普遍意义的方法与策略。 ● 两种思维的抽象内容不同
抽象是思维的本质,没有抽象的思维是肤浅的,数学与计算思维下的问题解决都需要从抽象开始,但数学思维下的抽象会抛开现实事物的物理、化学和生物等特征,仅保留其量的关系和空间的形式。数学抽象包括了数量的抽象(如,45克鸡蛋,45与克就是从这个鸡蛋的重量属性中抽象出来的数量词)、空间的抽象、模型的抽象等。
计算思维的抽象源于数学的抽象方法,但计算思维除数量与模型的抽象之外,还包括了学科特有的对象的抽象、(数据)关系的抽象、规则的抽象等,它让抽象的内容变得更丰富,让抽象的行为更有意思,这为其他领域的问题解决提供了更多有益的启示和解决思路。
计算思维中对象的抽象,涵盖了一切我们想研究的事物,它可以是一个具体的物体,也可以是一个抽象的事物,甚至是一个我们想象中的虚拟事物。每个抽象的对象都有自己的状态,其状态可通过若干个关键属性来描述,如我们对一个人的抽象,可以通过一组量化的数据编码组合(如姓名、性别、年龄、身高、籍贯、专业等信息),实现从客观世界的人到计算机世界的人的抽象与映射,如VB中“按钮”对象的状态可以修改“Caption\BackColor\MouseIcon”等属性来呈现,通过这些属性的描述,我们可以区分不同的对象,操作不同的对象,实现不同的方法和事件响应。计算机特有的基于对象的思维和操作方式,让我们可以将复杂问题的事物场景分解成有形的若干个对象组合,这些对象可视作程序与作品的最基本单位,也是我们用来描述问题、解决问题过程中的行为主体。
再如规则的抽象,它是智能工具特别是计算思维的重要特征。组成现实世界的问题都是由许多规则构成的,在解决问题过程中,我们需要从事物的描述中梳理和抽象出可以控制执行的若干条规则,并且将这些规则转换成计算机可以“理解”的表达形式。例如,浙江摄影版小学信息技术教材《创编游戏》,我们可以先尝试让孩子玩游戏,然后理解并抽象出游戏中有哪些最关键的规则存在(如表2),从而实现对应的分支结构的Scratch脚本编码。
● 两种思维的建构模型不同
有问题必然有思维的抽象,但对待同样的问题,学科不同,抽象出的结果即学科模型也大相径庭。数学建模就是把生活问题从数学学科视角转化成数学问题,聪明的数学解题优化方式,需要的就是把将未知问题转换或改造成适应于已有的计算公式的经典模型(定式)。计算机的优势在于自动化,所以计算机建模更多的是把生活问题从计算机科学的视角转化成计算机问题,我们要善于将问题转换或改造成适应于重复与自动化的计算的递归或递归公式的模型。
案例2:“1 2 3 … 100”数列求和。
数学思维解题时多选用高斯法也就是等差数列求和的公式S=(1 N)*n/2去解。如果遇见“1 2 3 3 4 … 100”的变异性问题,人类思维也会尽量把问题简化成公式性工作来完成,即分成“1 2 3 4 … 100”和“3”两段再求解比较快捷。而同样的问题求解,计算思维则会思考把问题“剪”化成重复性工作:S=s a(按序求和,其中a=1…100)。
案例3:鸡和兔共15只,共有40只脚,有鸡和兔各几只?(鸡兔同笼)
数学思维的方式有两种。方案一为方程法:设鸡的数量为X,兔的数量为Y,则列方程组:X Y=15;2X 4Y=40。列方程组相当于建立了解决“鸡兔同笼”的数学模型,将该问题化归为典型的二元一次方程的问题进行求解。方案二为纯数学法:15*2=30;40-30=10;10/(4-2)=5(兔)。而解决此典型问题的计算思维方式,就是选择常用算法——穷举法:鸡1~15,兔1~15,然后一一枚举找出符合这两个条件的数据。该模型就最大化地利用了计算机高效、精确、自动化的数值处理优势。
数学建模重点思考的是如何让问题的解决得到最简洁、最高效的执行,得到最正确的结果;而计算思维需要思考的核心是如何把问题解决过程自动化的实现,至于结果与效率并非中心着力点。
● 两种思维对待数据的处理方式不同
数学和计算思维都把数据作为主要的研究对象,但传统数学思维仅仅把数据当作处理、计算的“死”对象,它在数据收集、模拟预测等环节上所花费的时间是相当少的,像学生最主要的数据来源,来自表格、统计图或者通过观察简单测量形成的数据,它们往往是现成的,或已按照某种特定的数学形式结构化了的,或者说是已被处理的。
数据是计算机科学的基础,但计算机世界里的数据是活化的。计算思维不仅把数据作为处理的对象,它还覆盖了数据从诞生到再造的每一阶段——数据收集、数据编码、数据存贮、数据处理、数据预测(数据不仅仅是数据,数据还产生新数据),这五个环节都是构成信息社会里数据素养的不可或缺的重要组成部分。例如,解决问题中的先决条件——数据收集,就是计算思维教学中一项极其重要的内容,我们要让孩子们亲身体验使用现代工具来采集和记录多种类型的数据,掌握不同测量工具的使用方法,了解数据本身的复杂性(获取的原始数据许多是非结构化、劣构形式呈现),在必要的时候还需通过计算机来模拟所需的数据。
● 两种思维的表征方式、结果用途不同
数学与计算机在解决问题时都有各自的一套独立的符号表征系统。在运用数学思维解决问题时,往往用字母、数、公式、运算符、方程、函数、不等式等数学符号来对问题进行表征和运算,同时辅以文字性的说明,它是以一种便于“人”理解的形式呈现出来的,如案例2的求和过程,就可用最简洁的数学符号来表示。数学思维的结果是要求学生通过抽象的符号推理和缜密的公式演绎来认识世界,会熟练运用数学的语言来发掘和理解这些抽象结构之间的关系,最终掌握客观世界的规律。
计算思维下的解题过程,除了用数学符号等传统表达方式外,它的语言组织和呈现形式更需要符合特定系统或工具的逻辑,需要符合智能工具“可识别、可理解、可接受”的方式。计算思维的算法里还新增了流程图、伪代码、机器语言、高级语言等全新的形式化方式,数据关系中还提供了诸多数据流图、状态转换图、链式关系图等结构化形式,如案例2的伪代码实现方式是:for A←0 to 100