当前,我国信息技术产业發展面临巨大挑战,编程作为构建现代信息社会的重要工具,其作用和价值需要重新审视。综合编程教学不同的思路和想法,笔者认为,编程教学的核心是算法,信息技术课程应加强算法教学。之所以需要“再议编程教学”,意在回顾笔者所经历的40年中小学编程教学历程,阐释编程教学的价值,为后来者开展面向未来的编程教学提供借鉴和参考。
中小学编程教学发展概述
(1)编程教学起步于可编程计算器。北京景山学校的何子岚先生早年留学日本,他的日籍朋友操野好道1978年来北京景山学校参观访问,介绍日本中小学的教学理念和经验,还赠送了一些彼时很先进的掌上电子游戏机和可编程计算器。同年,游铭钧先生(时任北京景山学校校长)指定沙有威和章淳老师在景山学校开展可编程计算器的教研活动。
(2)出现在中小学的第一批计算机就是用来开展编程教学的。1979年8月方毅同志将他出访美国带回来的一台个人电脑转赠给北京景山学校。这台电脑附带APL/S插卡(另有一些家庭账务管理卡、游戏卡等)。APL是阵列式语言,/S表示固化的是APL的一个子集。由此,拉开了我国地区中小学计算机编程教学的序幕。
沙有威老师在章淳老师和陶振宗先生(时任人民教育出版社信息室主任)的帮助下,编写了APL/S语言程序设计的教案,在计算机课外小组进行编程教学。此后,北京景山学校又陆续购置固化了BASIC语言的TP-803、APPLE、LASER/310等计算机,教学的主要内容也只能是BASIC语言程序设计。
(3)出现在中小学的第一本计算机教材是也只能是教编程。20世纪70年代中期,我在景山学校配合何子岚先生从事综合理科教改试验。基于该试验中的“培养新知识的生长点,实现对学科前沿知识的实时跟踪”这一理念,我将彼时看来还十分神秘的电子计算机的相关知识编入了综合理科(五年级)课程。
1982年,在既有的综合理科教材相关内容的基础上,我编写了《微电脑学习手册》。这是我国大陆地区中小学出现的最早的计算机教材。
(4)第一个《计算机教学指导纲要》是也只能是以编程教学为主。1995年,我和吕品、陈星火老师受全国中小学计算机教育研究中心委派制定《中小学计算机课程指导纲要》。《中小学计算机课程指导纲要》设定了五个教学模块,编程虽是其中一个模块,但占用2/3的课时。
20世纪80年代至90年代中期,是我国中小学编程教学蓬勃发展的黄金期,培养了一批编程高手。他们在国内外的程序设计竞赛中获得奖项,其中的一些佼佼者现已成长为我国IT业的中坚力量。这一时期初步形成了颇具规模的能胜任编程教学的专职(或兼职)教师队伍。
(5)所谓的“灾难说”,导致了“淡化”编程教学。1995年上半年,联合国开发署的首席技术顾问Dwight W.Allen博士到我国进行有关中小学计算机教育的短期考察。他写了两篇考察报告:《重新考察中国中小学的计算机课程——警告》和《中国中小学计算机教育的未来》。
Allen认为,“现在计算机已成为教育的工具而不是教育的目标”,中小学计算机课程讲授算法和程序设计是错误的甚至是“一场灾难”。
这两篇报告未在我国的媒体上发表,但有专家以基本赞同的语气,在公开发行的报纸上肯定了报告的观点,导致以“课程整合”取代信息技术课程的趋势和政策导向。全国多数学校砍掉了以编程教学为重点和突破口,旨在培养学生信息素质和思维能力的教学内容。
我曾撰文和发表谈话(《关于计算机与基础教育相结合的再思考——兼评Allen博士的访华考察报告》《计算机学科教学中的十种关系》《课程整合是否还要开设<信息技术>课——郭善渡先生答记者问》等)力图扭转局面,结果只是包括北京景山学校在内的少数学校的教师顶住了压力,继续编程教学。
(6)近年来,编程教学重新被重视,令人欣慰,但有关编程教学的教育价值、目的、意义、方法等问题,仍众说纷纭,莫衷一是。
前事不忘后事之师,故有必要旧话重提。这些“旧话”绝非一个新造词组“计算思维”所能概括。
编程教学的价值
(1)现代信息社会最重要的人工语言就是计算机语言。人是符号动物。符号通常可分成语言符号和非语言符号。在各种符号系统中,语言是最重要的,也是最复杂的符号系统。语言包括自然语言和人工语言。
思维是符号操作。头脑中的思维活动是凭借内部言语进行的。符号及其相互联系既是信息的外在形式和载体,也是认知过程(学习)的结果——将新的认知所得与“原意识”(原符号系统)重构,内化为“新意识”(新符号系统)。
符号系统是个体思维产生的基础。是否掌握了丰满的符号系统,以及使用符号系统的精确程度和熟练程度决定了使用者的思维水平。
(2)计算机语言是思维的工具和载体。培养和提高学生的思维能力是基础教育的重要任务。语言(母语、外语、计算机语言)教学不可淡化,更不能缺失。有人认为学生未必需要使用外语,且翻译软件日趋成熟,主张取消外语课程;有人认为多数学生将来不从事编程工作,主张取消计算机语言和编程教学。对这种与教育的根本宗旨背道而驰的短视的主张,我始终不敢苟同。中小学学生学习一点计算机语言和编程,不仅具备了继续深入学习计算机科技的很好的“突破口”和“生长点”,而且有助于学好自然语言。
(3)计算机程序设计以动态数据处理形式反映客观世界数量变化及运动过程。变动性、发散性、时序性是计算机程序设计中动态思维的重要特点。计算机程序设计可以有效地对学生进行动态思维训练。动态思维方法是分析问题、解决问题,特别是循时序不断变化的问题的重要方法。
动态思维训练是与传统数学、物理等学科运用公理系统进行的演绎思维训练相平行的另外一种重要的思维训练。同时,计算机程序设计是培养学生创造力的一个极好手段。
过去人的思维成果只能物化为自然语言和文字,这种形式的成果,不通过人是不能自动运行的。而计算机的程序存储和自动运行,使物化的思维在计算机中高速度地自动运行,从而实现了自动化生产、自动办公、自动管理等。
(4)可以将适用于中小学教学的计算机语言视为一种“模型”。它应具有简便易学的特点,但不一定“实用”,更不必是当前在职程序员使用的语言。编程教学应使所有学生终生受益。中小学生今天的学习要为将来服务,这就要求学习的内容必须是基本的和可迁移的。我们不敢苟同的是那种试图把现在的教学内容同若干年后学生走上工作岗位时的实际需要简单地和直接地一一对应起来的主张。
实现编程教学目的的核心内容是程序的读写、算法的分析,而不必苛求该编程语言本身的所谓“先进性”。根据心理学的研究成果,十多岁孩子的形式运算能力已逐步形成,这正是学习利用计算机语言解决问题的大好时机。在儿童形式运算能力发展的初级阶段,可以用图形化语言编程以降低难度和培养兴趣,但对于较高学段的编程教学来说,仍使用图形化编程替代代码编程,则只能说是一种退步了。
(5)信息技术课程应加强编程教学 。由于人工智能、机器人等技术的快速发展和普遍应用,数学、物理中相关计算机科学的诸多领域,如布尔代数、编码、图论、随机数与MonteCarlo方法、门电路、传感器、纳米技术等都有了长足进展和广泛应用。这些内容理应在中等数学和物理教材中有所体现或渗透,但囿于多方面的制约,现有的中学数学和物理课程难以胜任,而我们既往的实践证明,信息技术课程中的编程教学能较好地满足这些要求。
作者单位:北京景山学校