新闻链接:
2017年7月,国务院印发《新一代人工智能发展规划》,要求在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。2018年1月,教育部公布《普通高中课程方案和语文等学科课程标准(2017年版)》,人工智能、物联网、大数据处理正式被纳入《普通高中信息技术课程标准》新课标。在此背景下,编程热潮掀起:多套编程教材发布、编程培训班异常火热、青少年创新竞赛AI项目风头正劲……
近年来,编程教育在世界范围内“流行”起来。在美国,编程、机器人等新技术早已走进了中小学校,其他很多发达国家也都在鼓励孩子们尽早接触编程,培养孩子的创新能力,锻炼孩子的逻辑思维能力。在我国,国务院发布的《新一代人工智能发展规划》明确指出,人工智能成为国际竞争的新焦点,应实施全民智能教育项目,在中小学阶段设置人工智能相关课程、逐步推广编程教育、建设人工智能学科,重视复合型人才的培养,形成我国人工智能人才高地。
Scratch之父米切尔·瑞斯尼克对未来的编程有一个很好的定义:编程不只是为了学习技术或者找工作,而是一种新的表达方式,也是新的学习方式。而编程能力和计算思维是众多新型工科人才的必备基础素质,从这个意义上说,青少年学习编程是推动我国新型学科人才培养的重要基础。
学编程如何培养创新能力
编程能力是培养青少年创新意识的重要手段。创新意识会让孩子拥有更丰富的想象力以及不断产生新想法的能力,而孩子的创新意识大都是在生活中积累起来的。在当今这个科技爆炸的时代,每天都有大量新的科技成果涌现。青少年编程能力的培养对孩子日后的学习具有重要的正向作用,其关键在于能带给孩子快速学习新技能、新知识的能力。
创新包括“创造思维”和“动手实现”两个阶段,同时“动手实现”又会在很大程度上促进和改善“创造思维”。在人工智能时代,很多创新的想法都需要通过计算机程序来实现,编程能力也因此成为我们实现创新思维不可或缺的手段。
青少年的学习目标应该是兴趣驱动发展,在兴趣中培养自己的思维方式与创新能力,并且从中获得乐趣。当孩子们通过自己亲手设计并动手实现的一段程序,做出了一段可交互的动画、一个智能小游戏,甚至控制了一个机器人的行动,他们会得到极大的成就感和满足感。由此,他们也将不断动脑去完善自己的设计,改进自己的作品。而当孩子遇到现有知识实现不了的想法时,就需要去学习新的知识,如此呈现螺旋上升的态势。
此外,对于编程教育逐渐低龄化的现象,笔者认为这是科技发展的必然趋势。越来越多我们曾经认为只能出现在科幻电影中的技术和产品,现已成为我们的日常用品,如智能机器人已经成了孩子们的玩具。这导致深度接触智能技术和智能产品的群体越来越低龄化,很多四五岁的孩子已经可以熟练操作一些智能玩具或者计算机程序,他们其实已具备了学习编程的基础条件。
但幼儿学习编程一定要注意方式方法。区别于青少年,教授幼儿编程时应以直观的图型界面、动态的辅助工具,帮助孩子理解自己的操作会产生什么样的结果。例如,通过拖拉拽的方式实现对实体机器人行动、表情、语言的控制,从而让幼儿对编程产生愿意学习下去的兴趣。
培养计算思维比学会编程语言更重要
计算机专业及其相关方向,已经成为高等院校招生规模最大的学科之一,且本科以上的计算机教育已经非常成熟。然而,在青少年阶段就加入编程的信息技术课程,不仅在我国还处于摸索阶段,英国和美国也是在2016年以后才开始尝试推行的。放眼全球,目前还没有可以借鉴的成熟经验。
中国工程院院士李国杰,是国际上最早倡导培养计算思维的科学家之一。早在2009年,李国杰便提出,计算思维是指运用计算机科学的基础概念求解问题、设计系统和理解人类行为,它选择合适的方式陈述一个问题、对一个问题的相关
方面建模,并用最有效的办法实现问题求解。计算机科学本质上源自数学思维和工程思维。然而,计算思维远远不只是为计算机编程,它是抽象的、多层次的思维,与“读写能力”一样,是人类的基本思维方式。培养孩子们的编程能力,不仅要求其学会阅读、写作和算术,更重要的是学会计算思维。计算思维既可以提高人的逻辑思维、发散思维、批判性思维能力,又能培养善于思考、勤于观察、慎于实践的良好习惯。
中国科学院计算技术研究所(以下简称“计算所”)所长孙凝晖认为,计算思维是每个人的基本技能,今后每个人都需要具备和掌握“编程”能力。因为未来的万物互联时代,人、机、物共存,人与计算机通过编程来交流,编程将会是一个基本的素质要求。计算机的贡献在于突破人类自身智慧的限制,解决之前无法解决的问题。然而一直以来,计算机仅仅被看作高科技工具,计算机科学技术则被认定为工具学科和辅助学科。这种狭隘的认知对信息化普及和智能化升级是极为不利的,信息技术是当今社会必需的普适资源。人才的培养和信息素养的提升,关系到国家兴盛。
拥有创新能力比编写程序更重要
青少年学习编程,其实并不是简单地学习一两门编程语言。学习编程和学习一门“外语”并不一样。编程更重要的是思维的训练。编程语言只是通过计算机解决问题的一个工具,它的基本语法很容易了解,但熟悉编程语言的规则并不代表能编写出程序。
青少年学习编程,也并非简单地学习如何编写代码,而是学习计算机语言背后所蕴含的复杂多变的逻辑运算与计算思维,进而养成良好的逻辑思维能力。只有通过学习编程达到了思维训练的目的,培养了孩子的创造性思维,才能为人工智能时代打下人才的基础。
编程教育的核心目标应该是培养学生的计算思维,以此锻炼学生的创新能力。编程教育可以训练学生提出问题、解决问题的能力,与传统教育模式进行有效的互补,通过具体的实践活动,激发和培养学生的创造力,逐步解决我国创新能力不足的问题。
编程能力培养需要专业环境和良性生态
目前,越来越多的家长开始重视编程学习,青少年编程教育行业拥有巨大的市场。但如雨后春笋般兴起的教育机构,教学水平参差不齐。我曾看到有些教育机构的宣传材料上宣传,某个名人几岁就开始学编程、学习哪种计算机语言可以参加什么比赛、通过多长时间的学习可以让孩子取得怎样的比赛成绩等。这些宣传的内容和定位,从根本上曲解了政府所倡导的“人人学编程”的理念。学习编程是要引发孩子更多的独立思考,培养他们分析问题、解决问题的能力,是为了实现思维方式和创新能力的全面提高,绝非生硬地学习某种计算机语言,按照既定的程序结构,实现一个人人类似的程序执行结果,更不是为了考级或取得某些竞赛成绩。
对于青少年来说,缺乏合适的学习工具是当下推行编程教育亟待解决的一个问题。美国麻省理工学院很早就推出了适合编程入门学习的编程语言LOGO,但因其对孩子来说晦涩难懂,又于2008年推出Scratch。Scratch图形化的操作,便于9岁以上孩子理解和掌握,现在已取得非常大的影响力。Google公司开发的开源软件Blockly,更是将这种积木块状的可视化编程风格移植到多种编程语言之上,进一步推动了编程教育的普及。将编程理念融入玩具中,催生了很多的编程机器人产品,其中影响力最大的就是乐高的教育机器人系列。孩子们接触这些编程机器人,有助于培养他们最基础的程序结构概念和朴素的编程思维。
然而,教育毕竟是一个系统化的工程,Scratch和乐高机器人只能起到“入门”的作用,并不能支撑起体系化的课程。计算所正在探索围绕计算思维,构造适合中小学生的编程教育课程,包括计算逻辑思维、系统思维、算法思维、协议和网络思维等几大体系,并开发了适合学生学习和教师教学的编程语言和软硬件工具。编程语言方面,计算所正在设计和研发一款适合青少年编程教学的全新编程语言 (木兰),支持可视化编程,具备高度的开放性,可以更好地支持各种硬件设备、传感器元器件、云端服务,让学生能够做出更丰富的创意作品,锻炼计 算逻辑思维。此外,计算所还开发了支持单片机的可视化编程工具,可以在软件上验证学生设计的电路和程序是否正确,解决了一大教学难题,并通过软硬件的综合设计锻炼学生的系统解决能力。目前,计算所正与地方合作开展教材的编写工作,并与中国关心下一代工作委员会合作开展全国性公益项目,为地方建立信息技术相关的名师工作室,从技术上指导地方教师,提高教师的教学水平。到2019年底,预计将帮助2000所中小学改善编程教育环境。
如何加快普及青少年编程教育、建立良性生态环境,从而让孩子掌握一门与未来世界沟通的语言、培养孩子的计算思维和创新能力,需要教育主管部门、学校、科研机构、培训机构等社会各界共同努力,在实践中不断探索。
(作者系中国科学院计算技术研究所大数据研究院院长)
责任编辑:王梦茜
刊于《教育家》杂志2019年5月刊 总第173期