计算思维:从概念演进到实践路径
作者: 于晓雅 魏宁》 于晓雅
计算机应用专业博士,北京教育学院教授,硕士生导师,人工智能和创客教育研究中心主任,北京市高校教学名师,美国弗吉尼亚理工大学访问学者,中国教育学会中小学信息技术教育专业委员会常务理事,中国教科院“中国STEM教育2029行动计划”专家。主要研究方向为信息科技、人工智能和STEM教育、数字赋能教育研究等。主持教育部“国培计划”项目、北京市信息综合名师项目、信息科技和人工智能特级教师工作室等。主编华东师范大学出版社出版的普通高中信息技术教材《人工智能初步》及教学参考用书、地方初中信息技术和小学信息科技教材等6部,著有《STEM与计算思维》等著作,发表中英文论文40余篇。
》 魏 宁
北京市东城区教育科学研究院研修员,《中国信息技术教育》杂志特约撰稿人/专栏作者。
概念:从计算学科到智能计算
魏宁:于教授您好,《普通高中信息技术课程标准(2017年版2020年修订)》以及《义务教育信息科技课程标准(2022年版)》,都将计算思维列为学科核心素养之一。这几年,计算思维无疑成为中小学信息科技课程的重点和热点问题,引起了广泛的关注。
我注意到您去年出版的专著《STEM与计算思维》,对计算思维做了深入的思考,也有不少真知灼见。所以,很高兴能有机会和您聊一聊有关计算思维的话题。
于晓雅:多谢《中国信息技术教育》杂志的邀请,这些年我对计算思维一直保持着持续的关注,作为学科核心素养之一,计算思维确实是一个重要的概念,不但需要老师们准确把握,更需要其在实践中找到适切的培养内容和途径。
魏宁:对于计算思维,首先需要搞清楚它的概念、界定,在这方面您的视角与众不同,因为您是从理解计算开始认识计算思维的,这背后您有怎样的思考?
于晓雅:我认为,要想理解计算思维,我们有必要对计算思维形成的主要领域——计算作一番了解。在这里我向老师们推荐一本书——《伟大的计算原理》,这本书的作者之一Peter J.Denning认为“计算不是其他科学的子集,计算科学是与物质科学、生命科学和社会科学并列的科学研究第四大范畴”,所有计算背后的一个基本问题,就是“什么是可以计算的”,也就是“什么可以有效实现自动化”,在此基础上,Denning开发了计算原理框架,把计算原理分成了七类:计算、通信、协调、记忆、自动化、评估和设计。
在计算领域,在各个国家、不同时期,其名称不断变迁,内涵和外延都逐步发展,到了20世纪90年代,“计算”这一概念开始成为公认的标准术语,计算学科也开始成为一级学科。在这个大背景下,大家就开始思考,作为计算学科应该有怎样独特的思维方式?而这种思维方式就是计算思维。
计算思维是计算学科独特的思维方式,若想确切理解其本质和内涵,可以先把计算思维从计算机科学中暂时剥离出来,从计算学科的思维方式的角度来理解计算思维,从数学、工程、科学甚至艺术学科多个维度的起源和融合去理解计算思维,也就是说,我们可以把计算思维看作人们制订问题解决方案,并将解决方案表示为可以由计算代理有效执行的计算步骤这一算法思维过程。这样,我们对计算思维的理解也会宽广很多。
魏宁:我感觉从计算学科入手,计算思维的概念已经呼之欲出了,这确实是理解计算思维的一条好路径。
现在公认的计算思维概念,是由卡内基·梅隆大学计算机科学系主任周以真教授在2006年提出的,此后十几年得到了快速发展,您如何看待当前计算思维概念的发展?
于晓雅:今天广为熟知的计算思维概念是周以真在2006年提出的,她认为,计算思维是运用计算机科学的基础概念进行问题求解、系统设计、人类行为理解等涵盖计算机科学之广度的一系列思维活动。从这个概念可以看出,计算思维不仅仅局限在计算机科学领域,它是广泛存在的,这是周以真的一个重要贡献。今天,计算思维已经和读、写一样,成为一种普适性的思维,是21世纪公民必备的基本思维。
在计算思维概念提出以后,为了在实践中更好地培养计算思维,一些国家相继给出了计算思维的操作性定义。例如,MIT媒体实验室于2012年提出计算思维包括计算概念、计算实践和计算观念,进而又对其进行了具体描述,建立起一个计算思维的三维框架。英国学校计算课程工作小组(CAS)在2015年提出了计算思维方法包括反思、编码、设计、分析、应用。美国计算机教师协会(CSTA)在2016年推出《K-12计算机科学标准》,将计算思维分为九个方面:数据收集、数据分析、数据呈现、问题分解、抽象、算法和步骤、自动化、模拟、并行化。
2023年12月,美国白宫网站发布由计算素养跨机构工作组(IWGCL)编写的《通过STEM教育培养计算素养:联邦机构和利益相关者指南》报告,把计算思维又向前推进了一步,提出了“计算素养”这一概念。我们都知道,思维属于做事的一种过程和方式,但素养就不一样了,它已经提升为每个人必须具备的行动能力了。
报告总结了在STEM教育中培养计算素养的最佳做法,包括在在线学习、多样性、公平、包容和可及性方面将计算素养成功融入STEM教育的案例,以及通过新兴技术实现计算素养的案例。同时,报告还针对解决计算素养培养面临的障碍提出了建议。
我认为,计算思维概念的变化与近年来人工智能,特别是大语言模型的快速发展密切相关。因为未来世界,人工智能就像人类的合伙人,人们的工作将无法脱离人工智能,更可能的方式是人和人工智能共存的一种双主模式。当智能时代来临的时候,每个人都需要具备与人工智能相处的能力,计算素养的重要性无疑就更加凸显。
魏宁:您刚才提到了近年来计算思维概念的演进,我觉得老师们都需要对这一概念保持密切的关注,从某种意义上说,随着技术的快速发展,计算思维将始终保持它的开放性。
说到这两年人工智能,特别是大语言模型的快速发展,也促使人们重新思考计算思维这一概念。我注意到不久前中国工程院孙凝晖院士在全国人大所作的一个报告,题目是《人工智能与智能计算的发展》。他特别提到最近十几年智能计算已经发展到了深度学习计算系统和大模型计算系统,转向了“大模型+生成式”的计算模式。这其实已经与传统意义上的计算思维过程不同了,站在智能计算角度,您如何理解计算思维的发展?
于晓雅:这是一个非常重要的问题,也是我们必须回应的。我的理解是,从广义上讲,智能计算的思维过程也是计算思维的一种,当然,它确实丰富和发展了传统的计算思维。
通俗地说,计算思维就是人把自己想做的事交付给机器,让机器帮我们来做。在这个过程中,我们可以看出来,计算思维既表现为人的思维,同时又离不开我们要交付给的那个工具,或者称为代理。至于机器,无论是自动化的,还是智能的,都是帮我们解决问题的。
传统的计算思维是让机器学习人类的思维,人类通过分析与综合,进而判断、推理,理解世界、解决问题,人类制定规则、算法,并编写程序代码,而机器则严格执行人编写的程序指令并输出“答案”。在这个过程中,我们主要发挥了计算机的三个优势,也是人类无法实现的功能:第一个是计算机的高速运算功能;第二个是计算机的可视化功能;第三个是计算机可以实现一些人类难以工程实现的算法,如递归、分治。
对于智能计算,我们可以理解为让机器自我学习,让机器拥有自己的“思维”,人类通过人工神经网络这样的机器学习算法和大数据的“喂养”,让机器能够自己去判断、推理。如果说传统的计算思维本质上是人的大脑神经系统在思维,那么智能计算则相当于我们赋予机器一个大脑神经系统,让它自己去思维。
我再举一个机器人学习走路的例子,传统的计算思维是让机器人模拟人是怎么走路的,把人走路的各种姿态转化为数据,如先迈哪条腿、后迈哪条腿、身体如何保持平衡等,让机器模仿人走路的姿势去学习走路,相当于我们手把手教机器人走路。大家能想象,这样学走路太困难了,因为实际场景太复杂了,总有我们教不到的地方,没教的地方机器人就不知道该如何处理了。
而智能计算不是让机器人简单地去模仿人走路的姿势,而是我们先告诉它什么是平稳的走路,人平稳走路的姿态是什么样的,然后给出各种走路的场景:平地、爬坡、躲避障碍物和水坑……这相当于我们给了机器不同场景下的“答案”,让机器人去学习人是如何处理这些问题的,自己总结规律,提炼规则和模型,再通过不断试错,不断生成数据,不断学习,最终学会走路。只不过这样一来,得出答案的算法是机器自己学习、总结出来的,我们反而无从知道了。
但是,我并不认为智能计算是一种全新的思维,就像我上面说的,它们本质上都是人把自己想做的事交付给机器,让机器帮我们来做。只不过这个机器、这个代理进步了,它自己学会学习了。但人把自己想做的事情交付给机器来做这个过程没有变,所以它依然属于计算思维的范畴。
魏宁:我觉得您上面的解读还是非常清晰的,有助于老师们理解传统的计算思维和人工智能时代的智能计算之间的差异。
随着这两年大语言模型的火爆,还出现了一种观点,认为人工智能可以自动编写程序代码了,编程是否变得不那么重要了呢?
于晓雅:确实,大语言模型的出现,可以代替我们进行一些编码工作。但这个工作只是帮助我们跨越了编程语言自身的障碍,如程序语法结构的困难,真正的如何用计算思维去理解、构建真实世界的要求反而比以前更高了。至少我们要能理解、沟通真实世界和虚拟世界,如果不具备计算思维和素养,是没有办法做到的。
实践:从思维培养到评价工具
魏宁:下面咱们来聊聊计算思维的实践,也就是如何培养计算思维的问题。很多老师会拿一些生活中做事的过程比拟计算思维,也就是把计算思维看作生活问题的过程性描述,如一个炒菜的过程,也含有明显的步骤、序列,也具有鲜明的计算思维特征。用这样的生活化案例能否培养学生的计算思维呢?
于晓雅:是这样的,很多老师喜欢用做菜等生活过程来比拟计算思维,这样做可以把枯燥的计算借助情境直观呈现给学生,在计算与思维之间架起一座桥梁。并且,它凸显了计算思维中包含统筹思维、逻辑思维的一面,但是,在用自然语言描述时,不能忘记计算思维是生活问题的形式化描述,形式化描述本质上是一个抽象的能力,而不是简单的步骤描述。
同时,用这种情境化的方式来学习计算思维,在特定的阶段和特定的环境中是有着积极意义的。所谓特定的阶段,指的是计算思维学习的早期,如幼儿园阶段,这时学习计算思维,采用不插电或者无屏幕的方式就有很好的效果。我们可以把计算思维的一些要素提炼出来,融入幼儿活动中,像一些分支、循环的思维方式,都可以通过幼儿的身体活动、跳房子等游戏的过程让学生去体验,甚至复杂一些的“七桥问题”,很多孩子在幼儿园也玩过。虽然这个阶段的幼儿可能不涉及编程让机器去执行,但有了这些基础,今后学习编程就会顺畅得多。
还有就是在特定的环境中,因为各个地区条件存在差异,不是所有地方的学生都具备一上来就学习编程的条件,这时候我们可以通过这种生活化的方式,通过不插电、无屏幕的方式让学生理解计算思维。
总的来说,在培养学生计算思维的过程中,可以暂时不涉及如何交付给机器去实现这部分内容,开展基于计算思维要素的培养。但是我们一定要清楚完整的计算思维的培养目标,就是所有的解决方案最终目标还是要让学生学会把自己想做的事情交付给机器完成的能力。
魏宁:也就是说,完整的计算思维的体现,不只是在头脑中的思维过程,还包含了在实践中如何实现它。
于晓雅:是这样的,首先,计算思维并不是独立存在的,刚才我们提到,它包含了统筹思维、逻辑思维,但也包含了工程思维,是一种与应用场景和交付执行的代理密切相关的思维过程,因此,计算思维是一种融合的思维。
并且,非常重要的一点是,计算思维既有抽象的成分,又有实践的一面,且更多的时候体现出它的实践性,我们也可以把它看作一种应用思维。我注意到,在国外的很多有关计算思维的报告中,会把它称为“计算思维与技能”,在很多专家看来,计算思维通常是与技能联系在一起的,思维与技能相辅相成、密不可分。如果这么去理解计算思维,那么,计算思维就不能只停留在头脑中,不能只有生活化的部分,还必须有操作性的内容。就是说,如果只有逻辑思维,没有把它交付给代理的这种转换能力,就不能说具备了完整的计算思维。