APP下载

面向少儿人工智能教育的计算机编程语言的比较研究

2020-10-21黄烈甫

科学与信息化 2020年4期
关键词:编程语言计算机教育比较研究

摘 要 目的:通过对少儿编程语言做比较研究,以期为少儿编程教育语言选择提供参考。方法:根据青少年发育特点,对10岁以前和10岁以后两个阶段的少儿需要选择不同的编程语言进行教学。对常见的Scratch、编程猫、Small Basic、Python等编程语言的功能和特点进行详细分析。结果:低年龄段少儿学习编程主要选择图形化、模块化、积木式的编程语言,如Scratch、编程猫等,学员通过编程完成小作品,逐步形成逻辑化的思维习惯;高年龄段少儿需要在编程思维、算法思维、编程技术等方面进一步提高,应选择Small Basic、Python等高级语言进行编程学习。结论:少儿接受编程教育对于培养逻辑思维和计算思维,提高解决问题的能力具有重要意义。选择合适的编程语言有利于激发学习兴趣,提高编程能力,为进一步的人工智能学习打下编程基础。

关键词 计算机教育;编程语言;比较研究;Scratch;Python

Abstract Objectives:To make a comparative study on childrens programming language, so as to provide reference for selection of language in childrens  programming education.Methods:According to the characteristics of adolescent development,children in the two stages before the age of 10 and after the age of 10 need to choose different programming languages for teaching.The functions and features of common programming languages,such as Scratch,Codemao,Small Basic,Python,etc.Results:Children at low ages mainly choose graphical,modular, building block programming languages for programming,such as Scratch,Codemao,to guide children interested in programming,complete small works,and let them gradually form logical thinking.Children at the senior age group need to further improve their programming thinking,algorithmic thinking,and programming technology.Advanced languages such as Small Basic and Python are suitable for programming learning of children above the age of 10.Conclusion:Childrens programming education is of great significance in cultivating logical and computational thinking and improving their ability to solve problems.Choosing the proper programming language is conducive to stimulating learning interest and improving programming skills,and providing basis of programming for further artificial intelligence learning.

Key words Computer education;Programming language;Comparative study;Scratch;Python

背景

近年來,随着我国经济高速发展,人们在教育方面的投资意愿持续增强。2017年7月8日,国家中央政府网站发布了《国务院关于印发新一代人工智能发展规划的通知》(国发[2017]35号文件),第一次正式把人工智能提高到了国家战略发展层面,刺激、鼓励社会各界参与我国人工智能的建设和发展。信息产业和教育产业方面的政策利好,推动了信息化教育尤其是少儿编程教育的蓬勃发展。人工智能带来的无人驾驶、人脸识别、电子支付等新兴信息化技术,以及渗透至生活各个方面的信息化系统,都与编程密不可分,这些信息技术的革新和升级,给编程行业带来广阔的发展机会及应用前景。目前,少儿编程在美国学前及小学教育中的普及率达到40%以上,而国内只有0.96%,国内的少儿编程教育起步晚、覆盖面窄、发展慢,少儿编程教育市场需求极大。接受过高等教育的家长们意识到编程教育与信息化产业的关系,将少儿编程作为孩子的一项课余兴趣甚至技能,投入许多时间、精力和经济成本进行培养,期望孩子通过早期接触编程教育,为今后的学习及职业生涯打下基础,创造机会[1]。然而,少儿编程教育与成人编程教育有着截然不同的区别。成人编程教育致力于教会学习者如何写代码、编制复杂的应用程序,使计算机按指定步骤进行工作,完成明确的任务,解决实际业务需求。少儿编程教育是通过可视化游戏启蒙和积木图形化编程等寓教于乐的方式,开发少儿的计算思维和创新解难能力,其目标是培养其编程的逻辑思维和算法思维[2]。目前,少儿编程教育有多种程序语言,如何针对少儿自身情况选择一门合适的编程语言进行教学,是值得教育机构和家长认真思考的问题[3]。本文对少儿编程常用的几种编程语言做比较研究,以期为少儿编程教育选择合适的语言工具提供参考。

1少儿编程基础

国内外大量研究表明,少儿阶段完成合适的编程课程,有利于提高学生的逻辑思维能力和抽象思维能力,并促进计算思维水平的整体发展。将编程学习与STEAM教育相结合,还可以在编程学习、训练、创作的过程中,引导孩子在科学、技术、工程、数据、艺术等方面素质的提高。我们希望少儿能够通过学习编程,对编程学科产生一定的兴趣,对程序设计有初步理解,提高信息检索能力和利用信息解决问题的能力,并在完成编程作品的过程中学会与人合作。

家长在选择编程语言和培训机构时也应该围绕上述目标来进行。少儿编程学习一定要结合儿童自身的特点来选择编程语言。一般来说,编程需要学习者接受基础教育,有相关基本能力后才能适应编程方面的训练。这些基本能力包括:逻辑思维能力、数学计算能力、简单的英文单词拼写和识别能力,并了解计算机基本结构。少儿在这些方面的基础总体较弱,为此不少研究机构和大型软件公司设计了有针对性的语言平台,学生选择适合自身情况的语言平台,在学习编程的过程中,可以反向增强上述基本能力的建设。少儿的学习状态和发育状况是不断变化的,浓厚的学习兴趣、合理的教学方法、科学的课程安排都能够正向刺激学习过程。

2程序语言介绍

程序语言是人机交互的工具,不论是软件编程还是硬件编程,都是通过程序语言将开发者的指令传达到机器,机器识别语言指令后做出一定的响应。跟人类语言类似,程序语言必须同时具备语法和语义两方面要素。要进行硬件编程,开发者必须对硬件特性非常了解,由于不同的硬件可能差别巨大,且硬件成本较高,因此总体来说硬件编程难度大、要求高,适合少儿编程的平台少;软件编程是建立在标准的平台之上,开发成本相对低廉,软件开发更加标准化和产业规模化。当前软件行业流行的C/C++、JAVA、Python等高级软件编程语言,因其语法强大、程序可读性强等设计特性,可方便进行数据运算和流程控制,在各自领域都一枝独秀。其中C/C++和JAVA在程序入门学习的门槛较高,要求学习者有比较扎实的编程基础,学习成本高,学习曲线陡峭,一旦掌握其编程精髓后,则产出较高,但都不适合少儿编程教育。

K12阶段是青少年基础教育和智力发育快速进步的阶段,其中6~12岁定义为少儿。每个年龄段的儿童发育水平差异很大,为此少儿编程至少要分为2个阶段,分别使用不同的语言和教案。我们需要针对两个年龄段,选择合适的语言和编程平台,让他们能够逐步理解编程思想,进入编程学科的大门。

3适用于低年级少儿的编程语言

目前,国内外有专门针对10岁以内儿童的语言平台,市场上流行的主要是Scratch、Tynker、Kitten、StartLogo和Kudo。考虑到Kudo更像一款游戏,而StartLogo操作界面复杂,语言国际化程度不高,这两种语言在少儿编程教育中使用较少,因此在本文不做赘述。以下是对Scratch、Tynker、Kitten的介绍。

3.1 Scratch

Scratch是2006年由麻省理工学院领导的团队开发的编程平台,研发团队成员来自美国宾州大学、哈佛大学、微软等IT业顶级机构。目前,Scratch已经升级到3.0版本,功能日趋完善,国外部分高校的非计算机专业也在尝试使用Scratch教授编程课程。Scratch作为一款在少儿编程教育中应用最广泛的语言之一,具有以下多方面的优越性[4]。①使用者不论是否商用均可以免费使用;②界面为动画风格,对儿童非常友好;③界面国际化完成度高,支持中文在内的大部分语言,学习者不需要英语基础即可入门;④程序的基本元素充足,学习者能够充分了解事件触发、事件响应、流程控制、变量设置、运算过程、界面元素等程序基本结构;⑤以拖动积木的方式完成程序流程,低年级学生可以不敲字母即实现编程;⑥平台自带教程,低年级学生可以在家长陪伴下完成任务,动手能力强的学生也可以尝试自学;⑦语言社区成熟,内容丰富,国际化程度高,上传到社区的作品非常丰富,世界各地的开发者可以交流经验;⑧系统跟多家硬件厂商合作,可以支持包括乐高在内的多种产品的硬件编程。

3.2 Tynker

Tynker平台诞生于2013年,由硅谷的IT公司Tynker设计实现。这款软件借鉴了Scratch积木式的编程方式,以web化的技术实现了系统功能,教学过程类似Scratch编程。目前,Tynker一方面通过在线接收学生的方式进行编程教育,另外一方面通过资助英语地区的中、小学,与这些学校开展合作从而为少儿编程培训积累经验。这个平台与Scratch的主要区别在于,它采用收费式的线上、线下培训体系,将培训教学模式和教学平台开发模式相结合。Tynker虽然推出了移动端的免费版本,但是桌面端还是收费模式,故在全球推广上,受众度比Scratch更低。Tynker目前主要的学习工具专注于浏览器在线和ipad上,更多的偏向于互聯网模式,其免费教程很少,大部分都服务于收费的培训课程。Tynker的编程平台界面如图2所示,其总体结构和Scratch基本一致,左侧是分类的程序控件,中部是编程的主要部分即程序流程编写框,右侧上方是程序运行效果图,右侧下方是程序需要的图片和动画元素。使用者从左侧上方点击“分类按钮”后,左侧下方会出现具体的程序控制按钮,将需要的按钮拖动到界面中部,并且将这些按钮连接起来,形成完整的控制流程,右侧的每一个动画元素都可以有各自的控制流程。程序开始运行时,所有动画在事件触发后,按照程序制定流程运行。

3.3 编程猫

编程猫是类似Tynker的中国本土化产品,它的积木化风格完全继承自Scratch,基于H5技术实现,它是国内同名培训机构“编程猫”开发的少儿编程平台。“编程猫”是国内规模较大的编程教育培训机构,该机构有较强的研发能力,独立开发出这款少儿编程软件——编程猫。编程猫集成了几个模块,分别是:类似Scratch的面向低年龄少儿的Kitten、面向中高年级的少儿编程产品海龟编辑器、游戏制作区代码岛、答题和交流社区产品——通天塔、还有硬件编程模块。编程猫的独特之处在于,平台在创立之初就考虑到了学习者成长后需要从少儿编程语言过渡到使用高级编程语言。Kitten模块中有一键切换的代码转换按钮,可以将积木模式的代码以Python或者js代码形式展示;海龟编辑器是专门为过渡到Python编程而设计的,它继承了Python的海龟画图功能,并提供了代码模式和积木模式的切换功能。答题和交流社区产品通天塔也是其创新之处,它提供了各种难度的题目,学员可以在家长的指导下使用,检测自身对编程知识点的掌握情况。编程猫Kitten的编程主界面如图3所示,相对于Scratch和Tynker,该平台最显著的区别在于右侧的代码转换区域,学员可以看到积木程序对应Python代码的具体内容。

综上,上述三款编程学习平台都是针对基本能力较弱的低年龄少儿设计的,它们都采用积木式的拖拽方式,将流程设计概念直观形象地展示出来。每种积木具备特定的功能和标识,使学员无需了解英文和语法即可使用。这三款编程学习平台都具备了程序设计的最基本功能。因为Scratch属于完全开源的项目,其版权声明不论是否商业行为使用都完全免费,因此商业和非商业机构都大量采用Scratch作为教学平台。另外,Scratch有非常丰富的教程,提供了由简入繁几十个案例,少儿可以在家长的指导下完成教程中的任务,从而掌握积木式编程的方法。家长也可以根据教程,以亲子活动的形式,与孩子一起学习编程并协助完成学习任务,提高孩子的编程技能。而Tynker和编程猫是单个大型收费培训机构自行研发的平台,成本更高,他们在自家培训机构的指导下结合业务特点做了更多的定制化开发,故这两个平台的受众更少,但是在商业市场中也有大量学员使用。因此,不论从经济性还是平台的易用性来看,Scratch都具备非常强大的竞争力,这也是其在低年龄少儿编程领域全面领先的原因。

4适用于高年级少儿的编程语言

上述积木式开发工具,对于10岁以下的儿童入门学习来说已经足够,通过使用这些工具,学习者可以了解程序的顺序、结构、处理逻辑等基本概念和方法。进入高年级,编程学习的重点将逐步从兴趣引导、概念认识方面过渡到计算思维、软件开发初步能力、动手能力、初步计算机算法思维等能力的培养。这需要开启高级语言的学习,但是软件行业流行的C/C++和JAVA并没有出现在少儿编程的重要选项之中,原因在于,C/C++需要扎实的计算机基础,同时要掌握的细节极多;而JAVA面向对象方面的概念和语法对于青少年初学者来说难度很大。以下是国内外在小学高年级和中学阶段采用的程序语言和平台,我们逐一分析。

4.1 Alice

Alice创立于1995年,是一款定位于3D和VR的动画游戏开发、设计的免费平台,它也是通过拉取积木的方式,实现对动画元素的控制。新版Alice的核心功能是用JAVA语言实现的,它自带JAVA虚拟机。在任务练习的过程中,学习者将会在故事场景中加入各种元素,这些元素的功能设计,将代码函数以下拉框形式呈现出来。涉及的JAVA类的选择、JAVA对象的创建、对象属性的设置,可以让学习者了解到JAVA代码的编码流程和面向对象的程序设计理念;JAVA对象方法行为的实现,让学习者可以更好地理解和掌握函数、变量、控制、递归等编程方法。

Alice具备国际化的功能框架,最新版本的中文国际化已经较成熟,缺点是界面友好度较差,控件比较复杂。目前美国的一些中学和小学高年级在使用Alice教授编程和动画设计课程,其中包括有名的Duke中学。Alice采用积木拖拉式的设计,加入了比较复杂的操作函数和指令控件,适合于中学高年级的没有编程基础的学生。平台的进化在近年来有所加快,包括VR功能、模块化集成,并提供更加复杂的IDE环境,支持使用者加载项目外的其他有用资源。平台自身也提供比较丰富的课程体系,包括如何处理动画元素、如何建立和使用内容库,并提供了对应的练习和小任务供学员强化。美国市场上也有大量的课程和书籍供学习者使用。但这些课程通常比较复杂,一般用于配合课程学习中试用。

4.2 Small Basic

Small Basic创建于2008年,它是微软公司专为少儿编程而开发设计的一个精简版的Basic平台,在功能上参考了老牌的少儿编程语言LOGO,专门设计了小海龟绘图的功能,同时又完全继承了.NET家族中的Visual Basic语言。像其他.NET语言一样,这款免费的学习语言也只能在Windows系统上运行,经过多年的改进,这个平台已经日趋完善。该平台包括3个部分:语言、IDE(集成开发环境)、函数库。①语言,即Small Basic,来自BASIC的早期变体(Beginner's All-purpose Symbolic Instruction Code)。BASIC本是微软公司最初创建的旨在帮助学生学习编码的语言之一,微软继续提炼其中有益的部分用于设计适用于少儿的编程平台,旨在培养少儿顺其自然地过渡到微软的.NET编程体系的重要部分,Small Basic语言简单、有趣、易学,代码可以移植到VB,还可以发布到网上。②IDE(集成开发环境):它的IDE基本功能齐备,简单易用,初学者可以感受IDE对于提升编程效率的重要性。③庫:每一种编程语言都有大量的库函数供开发者使用,Small Basic的库简单有趣,学生可以通过调用库函数完成一些较高级的功能[5]。安装软件平台时自带教程,官方网站也可以在线浏览教程,这些教程需要家长翻译后教授少儿使用。Small Basic程序语言学习难度总体较低,国内部分中学的编程课程和教材开始尝试从VB转变为Small Basic[6-7]。

4.3 Python

Python作为大数据算法库的重要承载工具,近年来在工业界的使用率持续攀升。跟Small Basic相比,它有如下特征。①库:大数据算法库是其最大的特色,作为一款流行的高级语言,许多软件公司还提供了大量开源的Python库供开发者使用。教学方面,大学微积分、生物信息学、地质学、高性能计算等诸多学科的学者和研究机构也提供了Python编程所需要的库函数。②脚本语言:Python也是一款脚本语言,无需编译(从文字翻译为机器指令的过程);其运行需要的虚拟机平台在各主要流行的操作系统都有安装包,因此Python是跨系统的语言;在语法上,它与其他的高级语言已经很接近,学习Python后再学习其他语言也很容易上手。③IDE:Python自身是不带IDE的,只有类似写字板的编写工具,因此需要借助其他IDE工具比如Pycharm、eclipse、vscode等来进行编程。这些工具都很复杂,大部分学员需要专门培训一段时间后才能熟练使用。这些IDE在业界都非常有名,支持跨语言功能,即使以后使用其他高级语言,在IDE的使用方式上也差别不大。IDE的学习难度是Python相较于Small Basic的劣势,而学员一旦掌握了其中一种IDE,编程效率将极大提高。

国外一些大学将Python和C语言的教学效果做了比较,两者除了在辍学率上相近外,在学习者的考试失败率、作业提交数量、实验参与率等方面,Python的教学结果均更优。

综上所述,Small Basic专为初学者设计,上手难度较低,学习者只要按照教程一步步执行操作步骤,即可了解高级语言编程的基本过程,同时可以相对顺滑地过渡到Windows平台的VB或者.NET编程,对于大部分初学者来说,Small Basic还是比较合适的。Python的上手难度更大,界面和操作的友好性更低,需要专业培训及指导才能入门,一旦进入学习状态,达到了一定的熟练度就可以直接学习工业界的编程方式,能更平缓、顺利过渡到更高阶段的编程学习。Alice作为高年级入门编程工具,也是一个不错的选择,学习者可以通过编辑3D动画游戏,了解程序设计的基本流程,其底层的Java代码也可以天然对接更高级的编程学习。这三种语言中,Python语言最完备,IDE工具功能强大,在各个学科的用途广泛,库函数丰富,具有工业级的生产标准并且产业生态良好,虽然上手难度相对更大,但是建议对编程有极大兴趣并希望进一步深入钻研的学习者,可以考虑在高年级直接从Python开始学习[8]。

5教学说明

需要说明的是,少儿学习编程并不局限于让他们走上编程的职业道路,我们只是希望他们能够通过编程接触到一种新的学习方式和思维方式,并帮助他们学会关注、想象、创造、合作、分享和思考[9]。美国在20世纪60年代就开始思考如何为少儿设计合适的编程语言,以一种新的形式培养他们的逻辑思维和计算思维能力。之后,欧、美、日在语言方面继续研究并提出空间化的编程语言,逐步演化出画图的小海龟工具和针对少儿的图形编程工具,构建了像Scratch这样的积木式编程平台,甚至连通了硬件设备和机器人,最后开启了商业培训模式。

编程学习不仅需要一款合适的语言平台,还需要专业的老师对学员因材施教。目前少儿编程教育方面的研究表明,如果老师以积极的态度,协调学员参与各类活动,鼓励他们交流和对话、克服困难,就会促进学员的编程兴趣[10]。在编程学习的初期,家长也可以是孩子学习的好老师,高质量地陪伴孩子一起学习编程,相互借鉴、合作、讨论、多鼓励,会有非常不错的效果。

最后,课程安排也是学习编程非常重要的环节。除了上课,试验、交流、排查问题等过程都是必需的环节,学员们要参与编程的多个阶段。除了编码,老师还要指导并协助学员进行完整的小项目,按照步骤进行问题分析、方案设计、编写代码、调试运行、总结反思等,教学形式可以多样化,比如参加夏令营、编程比赛、科技展覽,甚至亲子结对编程等。

6结束语

孩子在校学习具备一定基础之后,家长可以选择合适的少儿编程平台和培训机构,让孩子接受编程方面的学习,以激发计算化的思维从而提高思考和解决问题的能力。本文对3种入门级以及3款初级编程语言和平台进行了详细的介绍和比较,家长可以据此帮助孩子选择合适的编程语言进行学习,让孩子对编程保持浓厚的兴趣和深入研究的精神,为进一步的人工智能学习打下编程基础。

参考文献

[1] 郭学军,汪传建.少儿编程培训热的教育学审视[J].人民教育,2019,(10):62-66.

[2] 马强.基于计算思维培养的少儿可视化编程教学设计研究[D].石家庄:河北师范大学,2019.

[3] 戚伟慧.少儿编程的可行性研究与分析[J].电子技术与软件工程,2016,(24):253-254.

[4] 钱筱阳,付诗佳,吴子昊,等.Scratch少儿编程教育探索与实践[J].科教导刊(上旬刊),2019,(8):134-135.

[5] 芦明明.基于small basic的高中信息技术课算法教学设计研究[D].上海:上海师范大学,2011.

[6] 况旭.基于翻转课堂的初中Small Basic程序教学模式设计与实践[J].教育信息技术,2018,(5):55-59.

[7] 顾佳敏.人工智能教育在初中信息科技课程中的初步探索[J].上海课程教学研究,2019,(9):31-34.

[8] 马尚辉.基于学科核心素养的高中信息技术Python教学初探[J].教学管理与教育研究,2019,(6):82-83.

[9] 张阳.青少年编程教育体系研究与实践[J].技术与教育,2019,(2): 24-29.

[10] 候继仓,马红.选择规划人生中的编程教育——用选择结构程序做出判断[J].中国信息技术教育,2018,(1):28-29.

作者简介

黄烈甫,学历:硕士,专业特长:大数据应用、分布式计算、软件开发。

猜你喜欢

编程语言计算机教育比较研究
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
计算机软件JAVA编程优势及其应用
基于计算机应用软件开发的Java编程语言研究
公安院校计算机课堂教学改革研究初探
构建具有专业美术院校特色的计算机课程教育
中外数据新闻编辑流程比较研究
关于我国计算机教育MOOC发展的思考
各国税制结构与我国的比较研究
资产减值新旧会计准则比较研究
浅析媒介体制比较研究的框架设计和技术逻辑