您好, 访客   登录/注册

计算思维:一种新的学科思维方式

来源:用户上传      作者: 王荣良

  摘要:计算思维是当前国际计算机界广为关注的一个概念,也是计算机教育需要重点研究的课题。本文介绍了什么是计算思维以及计算思维在大学计算机学科领域的研究现状,阐述了计算思维的引入会对目前中小学信息技术课程的目标、内容和方法所产生的影响,期待信息技术学科思维和方法的探索。
  关键词:计算思维;信息技术课程;计算机
  ● 计算思维的提出
  思维是人脑对于客观事物的本质及其内在联系间接的和概括的反应,是一种认识过程或心理活动。简单地说,思维是人进行思考、通过人脑的活动解决问题的能力,是人的智力在一个方面的体现。思维方式也是人类认识论研究的重要内容。
  2006年3月,时任美国卡内基·梅隆大学(CMU)计算机科学系主任、现任美国基金会(MSP)计算机和信息科学与工程部(CISE)主任的周以真(Jeannette M.Wing)教授,在美国计算机权威刊物《Communications of the ACM》上,首次提出了计算思维(Computational Thinking)的概念:“计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。它包括了涵盖计算机科学之广度的一系列思维活动。”周以真教授从思维的视角阐述计算科学,并以此来探索计算机学习的教育价值。为此,周教授撰写了针对大学所有新生的“计算思维”讲义,并以此作为“怎样像计算机科学家一样思维”课程的主要教材。
  计算思维这一概念提出后,立即得到美国教育界的广泛支持,也引起了欧洲的极大关注。目前,计算思维是当前国际计算机界广为关注的一个重要概念,也是当前计算机教育需要重点研究的课题。在美国,不仅有卡内基·梅隆大学的专题讨论,也有包括美国计算机协会(ACM)、美国国家计算机科学技术教师协会(CSTA)、美国数学研究所(AIM)等组织在内的众多团体的参与;计算思维还直接促成美国国家科学基金会(NSF)重大基金资助计划CDI(Cyber-Enabled Discovery and Innovation)的产生,CDI计划旨在使用计算思维产生的新思想、新方法,促进美国自然科学和工程技术领域产生革命性的成果。CDI的最终研究成果将使人们的思维模式发生转变。这种以“计算思维”为核心的转变,反映在美国国家自然科学与工程,以及社会经济与技术等各个学科领域。
  计算思维不仅影响着美国,也影响着英国的教育,在英国的爱丁堡大学,人们在一连串的研讨会上探索与计算思维有关的主题。每次研讨会,都有不少专家讨论计算思维对不同学科的影响。研讨会上所涉及的学科已延伸到哲学、物理、生物、医学、建筑、教育等各个不同的领域。另外,英国计算机学会(BCS, British Computer Society)也组织了欧洲的专家学者对计算思维进行研讨,提出了欧洲的行动纲领。
  ● 国内有关计算思维的研究
  上世纪80年代,钱学森先生在总结前人的基础之上,将思维科学作为11大科学技术门类之一,与自然科学、社会科学、数学科学、系统科学、人体科学、行为科学、军事科学、地理科学、建筑科学、文学艺术并列在一起。自从钱学森提出思维科学以来,各种学科在思维科学的指导下逐渐发展起来,计算学科也不例外。黄崇福教授可能是国内最早阐述计算思维的学者。1992年,黄崇福在其所著的《信息扩散原理与计算思维及其在地震工程中的应用》一书中给出了计算思维的定义:“计算思维就是思维过程或功能的计算模拟方法论,其研究的目的是提供适当的方法,使人们能借助现代和将来的计算机,逐步达到人工智能的较高目标。”
  国内关于计算思维的研讨大部分都是在与计算机方法论一起研究的。桂林电子科技大学计算机与控制学院董荣胜教授在对计算思维和计算机方法论的研究中指出:计算思维与计算机方法论虽有各自的研究内容与特色,但它们的互补性很强,可以相互促进,计算机方法论可以对计算思维研究方面取得的成果进行再研究和吸收,最终丰富计算机方法论的内容;反之,计算思维能力的培养也可以通过计算机方法论的学习得到更大的提高。两者之间的关系与现代数学思维和数学方法论之间的关系非常相似。
  2009年7月26日,中国工程院院士、中科院计算技术研究所所长李国杰在NOI2009开幕式和NOI25周年纪念会上的讲话提到:“计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,它选择合适的方式去陈述一个问题,对一个问题的相关方面建模并用最有效的办法实现问题求解。有了计算机,我们就能用自己的智慧去解决那些计算时代之前不敢尝试的问题。”同年11月9日,在《中国信息技术已到转变发展模式关键时刻》一文中,李国杰在展望未来信息技术的发展前景时指出:“20世纪下半叶是以信息技术发明和技术创新为标志的时代,预计21世纪上半叶将兴起一场以高性能计算和仿真、网络科学、智能科学、计算思维为特征的信息科学革命,信息科学的突破可能会使21世纪下半叶出现一场新的信息技术革命。”2009年12月27日,中国计算机学会青年计算机科技论坛哈尔滨分论坛(YOCSE哈尔滨)与哈尔滨工业大学计算机科学与技术学院青年沙龙共同举办了“计算思维”专题论坛的会议。哈工大计算机学院副院长王亚东教授作了题为“计算与计算思维”的报告。报告从科学技术发展的角度出发,讲述了计算思维已经和即将对各门学科产生的影响,在计算机专业的各门课程中渗透“计算思维”的设想,并倡议学者们总结计算思维有哪些类别,以及它们和各门学科、日常生活的关系。
  2010年7月19日至20日,北京大学等九所知名高校在西安交通大学举办了“C9高校联盟计算机基础课程研讨会”。教育部高等学校计算机基础课程教学指导委员会主任陈国良院士亲临大会,作了“计算思维能力培养研究”的报告。大会就增强大学生计算思维能力的培养发表了“C9高校联盟计算机基础教学发展战略联合声明”。
  ● 计算思维的关键内容
  当我们必须求解一个特定的问题时,首先会问:解决这个问题有多么困难?怎样才是最佳的解决方法?当我们以计算机解决问题的视角来看待这个问题,我们需要根据计算机科学坚实的理论基础来准确地回答这些问题。同时,我们还要考虑工具的基本能力,考虑机器的指令系统、资源约束和操作环境等问题。

  为了有效地求解一个问题,我们可能要进一步问:一个近似解是否就够了,是否有更简便的方法,是否允许误报和漏报?计算思维就是通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道怎样解决的问题。
  计算思维是一种递归思维,是一种并行处理。它可以把代码译成数据又把数据译成代码。它是由广义量纲分析进行的类型检查。例如,对于别名或赋予人与物多个名字的做法,它既知道其益处又了解其害处;对于间接寻址和程序调用的方法,它既知道其威力又了解其代价;它评价一个程序时,不仅仅根据其准确性和效率,还有美学的考量,而对于系统的设计,还考虑简洁和优雅。计算思维是一种多维分析推广的类型检查方法。
  计算思维采用了抽象和分解来迎接庞杂的任务或者设计巨大复杂的系统,它是一种基于关注点分离的方法(Separation of Concerns,简称SOC方法)。例如,它选择合适的方式去陈述一个问题,或者选择合适的方式对一个问题的相关方面建模使其易于处理;它是利用不变量简明扼要且表述性地刻画系统的行为;它是我们在不必理解每一个细节的情况下就能够安全地使用、调整和影响一个大型复杂系统的信息;它就是为预期的未来应用而进行数据的预取和缓存的设计。
  计算思维是按照预防、保护及通过冗余、容错、纠错的方式,并从最坏情况进行系统恢复的一种思维。例如,对于“死锁”,计算思维就是学习探讨在同步相互会合时如何避免“竞争条件”的情形。
  计算思维利用启发式的推理来寻求解答,它可以在不确定的情况下规划、学习和调度。例如,它采用各种搜索策略来解决实际问题。计算思维利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行权衡。例如,它在内存和外存的使用上进行了巧妙的设计;它在数据压缩与解压缩过程中平衡时间和空间的开销。
  计算思维与生活密切相关:当你早晨上学时,把当天所需要的东西放进背包,这就是“预置和缓存”;当有人丢失自己的物品,你建议他沿着走过的路线去寻找,这就叫“回推”;在对自己租房还是买房做出决策时,这就是“在线算法”;在超市付费时,决定排哪个队,这就是“多服务器系统”的性能模型;为什么停电时你的电话还可以使用,这就是“失败无关性”和“设计冗余性”。由此可见,计算思维与人们的工作与生活密切相关,计算思维应当成为人类不可或缺的一种生存能力。
  计算机科学是计算的学问,它研究什么是可计算的,怎样去计算。计算思维具有以下特性:(1)概念化,不是程序化。计算机科学不是计算机编程。像计算机科学家那样去思维意味着远不止能为计算机编程,还要求能够在抽象的多个层次上思维。(2)根本的,不是刻板的技能。根本技能是每一个人为了在现代社会中发挥职能所必须掌握的。刻板技能意味着机械的重复。具有讽刺意味的是,当计算机像人类一样思考之后,思维可就真的变成机械的了。(3)是人的,不是计算机的思维方式。计算思维是人类求解问题的一条途径,但绝非要使人类像计算机那样地思考。计算机枯燥且沉闷,人类聪颖且富有想象力,是人类赋予计算机激情。配置了计算设备,我们就能用自己的智慧去解决那些在计算时代之前不敢尝试的问题。计算机赋予人类强大的计算能力,人类应该好好地用这种力量去解决各种需要大量计算的问题。(4)数学和工程思维的互补与融合。计算机科学在本质上源自数学思维,因为像所有的科学一样,其形式化基础建筑于数学之上。计算机科学又从本质上源自工程思维,因为我们建造的是能够与实际世界互动的系统,基本计算设备的限制迫使计算机科学家必须计算性地思考,不能只是数学性地思考。构建虚拟世界的自由使我们能够设计超越物理世界的各种系统。(5)是思想,不是人造物。不只是我们生产的软件硬件等人造物将以物理形式到处呈现并时时刻刻触及我们的生活,更重要的是计算概念,这种概念被人们用于求解问题、管理日常生活、与他人交流和互动。(6)面向所有的人,所有地方。当计算思维真正融入人类活动的整体以致不再表现为一种显式之哲学的时候,它就将成为一种现实。就教学而言,计算思维作为一个问题解决的有效工具,应当在所有地方、所有学校的课堂教学中得到应用。
  ● 计算思维与计算机学科的方法论
  正如本文第二部分所述,计算思维与计算机学科的方法论研究有很大的相似性,国内很多学者都在同时研究。计算思维和计算机学科方法论都是试图通过可计算性原理、形理算一体原理和机算设计原理,从思维和方法的高度来进行抽象,以寻求具有一定普适意义的学科价值。
  所谓可计算性原理亦即计算的可行性原理。1936年,英国科学家图灵提出了计算思维领域的计算可行性问题:即怎样判断一类数学问题是否是机械可解的,或者说一些函数是否可计算。所谓形理算一体原理,是针对具体问题应用相关理论进行计算发现规律的原理。在计算思维领域,就是从物理图像和物理模型出发,寻找相应的数学工具与计算方法进行问题求解。所谓机算设计原理,就是利用物理器件和运行规则(算法)相结合完成某个任务的原理。在计算思维领域,最显著的成果就是电子计算机的创造(计算机的设计原理),比如,电子计算机构成就是五个外部设备(计算器、运算器、存储器、输入设备、输出设备)以及运用二进制和存储程序的概念来达到解决问题的目的。
  尽管计算思维的学科体系尚未成熟,但在教学和培训中的应用和推广已逐步开展。一些从事计算机教育的学者在教学过程中推进计算思维能力的培养,标志性的事情包括2008年美国国家计算机科学技术教师协会(CSTA)在网上发布了得到美国微软公司支持的《计算思维:一个所有课堂问题解决的工具》(Computational Thinking: A problem solving tool for every classroom)报告。2008年,ACM在网上公布了对CS2001(美国关于大学计算机科学的教学大纲)进行中期审查的报告(CS2001 Interim Review),开始将美国卡内基·梅隆大学计算机科学系教授周以真倡导的“计算机思维”与“计算机导论”课程绑定在一起,并明确要求该课程讲授计算机思维的本质。美国计算机科学技术教师协会认为,计算思维应当是所有学校所有课堂教学都应当采用的一个工具。采用这个工具,教师自然会问以下几个问题:(1)人所固有的能力与局限性?计算机的计算能力与局限性?(2)问题到底有多复杂?即问题解决的时间复杂性、空间复杂性?(3)问题解决的判定条件是什么?(4)什么样的技术(各种建模技术)能被应用于当前的问题求解或讨论之中?(5)什么样的计算策略更有利于当前问题的解决?

  计算机科学与技术方法论是认知计算学科的方法和工具,也是计算学科认知领域的理论体系。计算机科学与技术方法论也进一步推进了大学计算思维的培养。在大学计算机学科教学中,引入计算思维关注点分离的方法解决软件工程课程中的问题求解、算法设计、软件设计等设计方法以及软件开发过程、软件项目管理和软件开发方法学等诸多方面的问题,因为作为最重要的计算思维原则之一,关注点分离是计算科学和软件工程在长期实践中确立的一项方法论原则。离散数学课堂教学中可以引导学生利用计算思维去解决离散数学中的模型与数理逻辑、递归与等价关系数目的求解、模块化与群、等价关系证明等问题。
  目前,尽管计算思维已在大学教学中逐步应用,但是,计算思维本身还未成为独立的学科体系,并且在教学中的应用都是少数专家学者在进行小规模探索性的实验性教学,在培养过程中没有系统性的应用计算思维的系列方法,因此效果并不明显。
  ● 计算思维对信息技术课程的影响
  尽管有关计算思维的研究目前主要在高校,在国内,也仅在为数不多的高校计算机系或计算机学院开展教学实践探索。由于计算机学科和信息技术学科有着天然的紧密联系,计算思维也会对中小学信息技术课程产生影响。
  1.计算思维是每个人的基本技能
  计算思维是每个人的基本技能,不仅仅属于计算机科学家。我们应当使每个孩子在培养解析能力时不仅掌握阅读、写作和算术(Reading, wRiting, and aRithmetic——3R),还要学会计算思维。正如印刷出版促进了3R的普及,计算和计算机也以类似的正反馈促进了计算思维的传播。当大学计算机专业教学在尝试用计算思维开展计算机专业课程教学的时候,教授们已提出应当为大学新生开一门称为“怎么像计算机科学家一样思维”的课程,面向所有专业,而不仅仅是计算机科学专业的学生。我们应当使入大学之前的学生接触计算的方法和模型。我们应当设法激发公众对计算机领域科学探索的兴趣,传播计算机科学的快乐、崇高和力量,致力于使计算思维成为常识。从目前中小学的课程设置来看,通过信息技术课程让学生接触计算思维是最有效的途径。2000年以来,我们已经习惯于将提升学生信息素养作为信息技术课程目标,随着计算思维的引入,需要我们去探索信息素养与计算思维的关系。
  2.计算思维促进信息技术学科思维的研究
  目前的信息技术课程普遍存在着“只见技术不见人”和“什么实用教什么”的现象。前者反映我国课程实现中存在着过度的技术化取向问题,后者反映了功利主义的课程价值认识。其实,这两种现象所反映的本质都是相同的,即以简单技术掌握为第一要义,虽然强调了用信息技术解决实际问题,但也仅是解决如何操作软件以达到学以致用,缺乏从学生人生发展的高度看待信息技术课程所应有的价值。
  笔者曾从信息技术课程中有关算法与程序设计的学习价值的角度提出算法思维是一种解决问题的过程性思维方式:算法思维就是能清楚说明问题解决的方法,能够将一个复杂的问题转化成若干子问题并将其进一步简化,以达到解决问题的目的,这也是科学和设计领域的一项重要技能;算法思维就是能清楚地理解问题解决的规则,能够认识到问题的起点、边界和限定范围,按部就班地完成任务或解决问题;算法思维就是能清楚地分析问题解决方法的优劣,能够设计与构造操作步骤更少、更经济的算法。
  算法思维的提出在一定程度上解决“算法与程序设计”的学习价值不是仅对口程序员的培养,就像数学的学习不仅是培养会计一样。通过算法和程序设计的学习,学生可以体验解决问题的过程,规范的设计与工艺要求,以及人与计算机共存的思维特征。但是,算法思维是以算法为出发点,相比以计算理论出发的计算思维,有更多的局限性。因此,计算思维有利于推进信息技术课程在学科思维方面的研究,有利于学生通过信息技术课程获得终身有用的知识与能力,而不是面临过时的计算机操作步骤。
  3.计算思维引发有关信息技术与计算机学科的关系思考
  计算机界长期以来一直认为程序设计语言是进入计算学科领域的优秀工具,也是获得计算机重要特征的有力工具。早期中小学开展BASIC语言学习,其本意也是以认识计算机特征为目的。其存在的明显问题是缺乏学科思维,过多地关注具体语言的细节。而以应用软件为学习对象的计算机课程,虽然强调了应用,但仍然关注软件操作细节的学习,使得课程学习内容与社会上的软件培训班相差无几。随着计算机软件的丰富与普及,以及计算机操作的人性化,重视工具操作、缺乏思维和方法的计算机课程面临改革是必然的。
  信息技术课程不仅在课程目标上实现了从掌握计算机知识和技能到信息素养的转变,课程形态、教学内容、教学模式、评价方式、教材等方面都有了较大的发展与改进。但是,目前的信息技术课程在处理学习内容中,“人如何处理信息”、“人如何用工具处理信息”以及“工具如何处理信息(人如何制造信息处理工具)”三者关系时把握不清,特别是对于有关计算机原理与操作的学习内容,存在既想回避又无法回避的现状,要回避是因为要避免学科教学走回原计算机课老路,但计算机作为现代信息技术的典型代表在教学中又无法回避。
  信息技术和计算机都能对数据进行加工,这种加工有自动化属性。两者都反映了一个根本的问题:什么能被有效地自动进行。这也是计算思维经抽象以后反映的根本问题。计算思维将促进信息技术课程中信息技术与计算机技术的关系问题,即计算机在信息技术课程中的地位问题。
  ● 结束语
  对于计算思维来讲,要成为一门学科,还有很长的路要走。目前,计算思维还不是知识形态的学科,因为其本身的概念、原理、特征、培养方法论以及创新方法论等方面的知识体系并未形成,也不是大多数学校或研究所教学内容的基本单位。这方面的学者、知识信息及学术资料所组成的实体化组织虽然正在形成,但远远未达到成熟。另外,各国的教育行政主管部门还没有完全认识到计算思维的重要性。因此,计算思维学科体系的建立任重而道远。
  然而,从计算思维中引申出的方法论,对计算机学科的教学乃至信息技术学科的教学都有重要意义。用学科方法指导信息技术课程教学,将会在一定程度上解决信息技术飞速发展与课程教学内容需要相对稳定的矛盾,并从思维和方法的高度规范与重构信息技术课程的教学内容。计算思维具有强大的创新能力,培养计算思维能力的最高目标是为了创新。但是,目前缺少应用计算思维进行创新的方法论,即如何应用计算思维进行创新。这方面的工作仍然非常艰巨。
  最后仍用周以真教授的一段话作为本文的结束:“我们特别需要抓住尚未进入大学之前的听众,包括教师、父母和学生,向他们传送下面两个主要信息:智力上的挑战和引人入胜的科学问题依旧亟待理解和解决。这些问题和解答仅仅受限于我们自己的好奇心和创造力;同时一个人可以主修计算机科学而从事任何行业。”


转载注明来源:https://www.xzbu.com/9/view-3171517.htm