1、程序教学的复兴所面临的若干问题和困难编者按:在科技发展日新月异的今天,信息技术教学已经远离了开、关机还需要反复讲解的时代,三岁孩童熟练地摆弄着 iPad 已非奇事。自策划了“Scratch 来了”这一专题之后,编辑深刻感受到研究程序语言的老师的可爱,他们的执著、他们的探索,使得程序教学不再那么枯燥,焕发出勃勃生机。因此,杂志特别策划了这一专栏,将陆续刊发一些程序教学领域有代表性的教学实践。也期待更多老师投身到程序教学中去,通过自身的践行,推动程序教学的复兴。从信息技术学科还被称作是“计算机”的时候开始,程序教学就一直是信息技术教学的重要教学内容,但是期间经历了一些波折,由于应用软件教学的需求和
2、信息技术课时的限制以及程序教学自身的有效性问题,程序教学的教学内容曾经一度被弱化。但近些年来,伴随着家用电脑的普及和传统应用软件使用难度的下降,越来越多的一线教师开始自发地寻找各种信息技术的教学载体。在这个过程中,各种各样的程序语言和与程序教学相关的教学内容、教学模式被挖掘出来,这一过程不是某种编程语言“一统江湖”,也不是一种教法突然地解决原本限制程序教学发展的所有问题,我们看到的更多的是一种自觉的、百花齐放的行动,很多信息技术学科的研究者开始自发地研究程序教学的若干关键性问题,出于对学科发展负责任的态度在小步地尝试,形成了若干的小团体和网络社区,本文对他们面临的一些共性的问题和困难做一些梳理
3、,并非总结,期望是一个聚贤帖,期望更多的人加入到程序教学的若干重大问题的研究和实践当中来。程序教学的合法性任何一个学科都存在其合法性的问题,学科的合法性并不仅仅来自于行政命令上的合法性、课程标准中的合法性,作为一个独立的教学内容,其内容要能够自证其合法性,这种合法性可以包含有用性、有效性、前瞻性三个维度。信息技术像钢铁侠穿的盔甲一样,对于人而言是一种“加持”,人们通过 Photoshop可以画出惟妙惟肖的图像,通过 Excel 能够快速完成数据的计算,这些都是对人的能力和效率的一种提升,而其背后就是程序和逻辑,编写程序一定是有用的,而且“盔甲”的功能越强大,人们对盔甲背后的程序的兴趣越大,但是
4、其用处受到程序教学有效性的影响。班级授课制面对的是差异非常大的普通学生,一个教学内容要让所有的学生达到一个基本的标准,凭借教师在教法上的技巧,难以保证教学的有效性和学生兴趣持久的保持,加之应用软件的丰富导致了程序教学的式微,但是随着像 Scratch 等图形化程序语言的发展和机器人等教具的引入,从而有可能解决教学有效性的问题,使得教学的有用性更加稳固。在一系列的科幻作品中都呈现过对未来世界的描绘,大多数人和他们的“盔甲”的关系可能是使用者、选用者和设计者。在平台垄断的背景下所有人都是使用者,如果有很多平台和公平竞争的可替代选择,一般软件素养的人就可以成为软件的选用者,但是如果避免一个选用者的世
5、界变成使用者的世界,唯一的出路就是让大多数人成为设计者或者通过编写程序的学习使他们成为更加理性的选用者,这是程序教学的前瞻性所在。程序教学的研究范式流变程序教学复兴的过程,不是简单的重复之前的做法,而是在对信息技术的理解不断深入的基础上,为了证明和促进程序教学的合法性得以成立,在继承的基础上出现的一系列自主的实践。在这个过程中,普遍的研究视角和思路导向出现了一些变化,我们称为研究范式的流变。首先是从关注和引进各种各样新的程序语言到关注新的做法在现有做法当中可能的位置;其次是从寻找新鲜有趣的教学案例到探究各种有趣的案例的内在规律;再次是从对程序语句的简单了解和双基的落实到学会自觉地运用程序解决问
6、题;最后是从关注程序学习后人的能力的提升到关注程序学习过程中人对其自身特质的理解。这四种变化代表着程序教学中的四个问题:在什么学段选用什么样的语言,通过怎样的体系化的课程设计可以保证教学的有效性,以及学生学习程序设计语言之后其知识和能力的有用性如何能够尽可能长久的维持,最后从“人”的角度将程序设计教学导向从事功走向内求。程序语言选用的梯度设计随着各种容易教学的图形化编程语言的出现,使得教学的程序语言选用成为了可能,根据不同的学段和教学目的选用程序语言成为程序教学研究者面临的一个问题。总体上来讲小学适合图形化编程语言;初中适合一款比较简单的代码语言;高中适合程序员在工作中使用的程序语言。但现在程
7、序语言教学的有效性问题还没有解决,很多地方高中的教师面临的还是零起点的学生,对于零起点的学生,讲授 Scratch 这种图形化编程的语言也是合适的。上面说的这种梯度设计是针对各个学段都完成了有效的程序基础之上的一种比较理想的设计,但是这种视角有助于我们确定一款新的“可编程环境”适用于哪个学段的程序教学。程序教学案例的排布线索信息技术教师的创造性很大程度上体现在教师设计教学案例和教学目标的余地很大,很多教师处理信息技术的教学内容以学生感兴趣、教学容易组织为原则,这种原则本身没有错误,客观上保证了程序教学有效性的落实,但是缺乏顶层设计的教学,难以在较高水平上维持学生的学习动机,难以使学生突破程序学
8、习的难点,难以实现从“写程序”到“编程序”的转变。顶层设计需要有一个内核和多条线索,内核可能是人知道自己适合做什么,线索可能包括程序语言算法的由浅到深、从软件到硬件、从基础知识到各个领域中的应用等。在程序语言的初级教学阶段,可能是围绕着语言来设计案例,但是到了高级阶段,学生掌握了很多门程序语言后,就可以根据需求和每种程序语言的特点来选用程序语言了。围绕着程序语言选用的梯度设计和教学案例的排布线索,在具体的某一门语言的教学研究过程中,一定会涉及适合程序教学教法学法的研究、教学质量保证体系的建立问题,这两个问题彼此相关,需要更多的人做踏实的研究和细致的工作。教具的研发和教学实验程序的教学同样需要教
9、具,机器人可以是很好的程序教学教具,但是作为大班教学的教具,机器人设备需要重新设计,使其满足容易维护、价格低廉、可以互操作的教学需求,与此同时还需要进行严谨的教学实验来验证仪器的教学效果和教学价值。未来编程的一种趋势是从虚拟走向现实,对传感器的编程和对输出装置的编程,成为程序教学的一个重要方向,但是这里需要注意两点,一是机器人编程不能替代一般的软件编程,机器人程序一般只包含一些特定的算法,像排序这类的算法则很少涉及,以机器人程序设计教学替代软件编程教学是不合适的,另外很多机器人语言是被封装好了的,其接口在便于入门的同时,也带来了不求甚解的问题,未来学生还需要了解接口背后的原理;二是教具的引入要
10、适当,机器人的各种传感器和输出设备作为程序教学的辅助工具可谓是“鲍参鱼翅”,可是一开始就吃这些东西,很可能就会造成对“粗茶淡饭”失去耐心。另外,盲目地追求教具的先进性会造成教学成本虚高,不利于整个行业的长远发展,但是总体上来讲,程序教学教具的研发将是一个重要的研究领域,期望在未来,每个机房都能有两个实验柜,这将是一个重大的变化。最后,随着程序教学研究的深入,作为信息技术课程的一个重要组成部分,程序教学需要处理和信息技术其他教学内容的衔接、和同属于技术领域的通用技术的衔接、从学科整合的角度出发还会涉及和物理、数学等相关学科的衔接这三个衔接的问题。此外,程序教学的研究并不仅仅是信息技术学科一门学科的研究主题,面对知识爆炸的挑战,面对跨越式教学的诱惑,程序教学是否能够成为统整学科藩篱的一条新路,我们拭目以待。广而推之,未来人们对于程序的认识水平,决定着人面对机器智能是否可以作为一个有尊严的个体存在,那么此时的教育抉择和实践,一定是一条充满荆棘的道路,但是许多人都无法抗拒这条道路,即使它目前只是蜿蜒地闪着微光。