编写程序的目的是完成一个目标:例如实现一张电子贺卡。为了实现目标,需要对目标本身和实现目标的方法进行规划和设计。 实现电子贺卡时就要考虑和设计:贺卡中存在哪些角色?使用什么背景图案?是否播放一段音乐?角色是否有动作和行为?如何实现角色的动作? 如何协同多个角色的行为等等问题。这个设计与规划的过程完成了目标分解、演绎推理和创作,也是思辨能力、逻辑和计算能力的运用过程。
为了让贺卡角色的动作更加逼真,需要运用数学知识计算运动路径,需要运用物理知识来模拟运动方式,使其更自然、合理; 同时也需通过美术和音乐知识来设计角色的造型、配音等等。所以编程也是一个对数学、物理、语言、美术等多种知识的综合运用过程。
通过学习编程,小朋友们既可以学习逻辑概念,提高推理、求解和计算能力,还可以在编程过程中逐步学习如何运用其它学科的知识, 实际理解这些知识点的作用和价值。这样一方面能够巩固和加深理解小朋友已掌握的知识,另一方面能够促进小朋友对不同学科知识的学习意愿。 因此学习编程是对基础学科教育的良好促进方式。
编程是针对某个特定目标的“设计和实现”,具体就是对信息、素材和知识点的反复运用过程。 这个过程主要围绕两个方面展开,一方面需要确定使用哪些信息和素材、存在哪些问题和知识盲点; 另一方面要通过创作、检索查询等方式获取信息、素材,掌握和运用知识点。
信息素材是编程的构成要素,因此通过编程可以引导小朋友充分发挥想象力和主动性,灵活地运用信息素材实现不同的目标; 同时在编程过程中逐步学习辨识、获取信息素材的正确方法,提高信息和媒体素养。
更加有价值的是:编程的目的是实现一个具体的目标,在客观上提供了一个实践、学习和验证知识点的真实场景, 因此对于在编程过程中存在的知识盲点,小朋友更有兴趣去学习,更容易理解和掌握。 也就是说通过编程能够非常有效地增强学习意愿,逐步提高自学能力和自我指导能力,形成主动思考和学习的习惯。

更重要的是

相对于发达国家,我们的创新能力和开拓精神明显不足。除了社会环境等因素之外,国内现有的教育模式是导致这一问题的主要原因。
国内的义务教育和高等教育,完全是教材和应试驱动的单向灌输方式教育。 从小学开始,小朋友们就开始接受“内容明确一致”、“范围明确一致”的输入教育,输出的仅仅就是标准答案,甚至包括成语的使用都是标准答案。 持续接受十几年这种形式的教育,学生的思维方式严重固化,所以会迷信权威,缺乏创新能力和开拓精神。
发达国家,例如美国、英国的义务教育阶段只有教学大纲,没有教材,具体教学内容完全由教师决定。到了大学阶段,授课内容和形式就更加灵活。 从小学到大学,教学形式有两个主要特点:一个是“命题式”教育;一个就是大量阅读参考书。 所谓“命题教育” 就是针对某个“问题领域”提出问题,由学生自行查阅资料、参考书,给出自己的答案。 持续接受十几年这种形式的教育,学生的自学能力会不断加强,心理上对陌生知识领域也不存在畏惧感,而这些恰恰是具备创新能力和开拓精神的基础。
反观国内,人们普遍存在对未知领域的恐惧感,成年人的表现是普遍缺乏从零开始的拓荒能力,未成年人的表现是挫败感特别强,面临困难很容易退缩。
编程本质上就是一种“命题教育”。例如通过编程实现的目标就是一个命题, 小朋友需要自己去完成设计和规划,发现、解决其中存在的问题和困难,例如需要什么素材、定义角色和行为,实现逻辑和控制等等。 对于编程过程中存在的知识盲点,小朋友要学习如何通过参考书、网络、求教于其他人等方式来获取答案, 从而帮助小朋友逐步接受和适应目标明确的主动学习方式。
“命题教育”的重要作用之一就是培养主动学习的意识和习惯。 除了能够提高学习质量和学习效率,主动学习还能够极大地提高 “思考和辨别”能力,原因是在主动学习过程中会发现解决问题的方式存在多样性, 很多情况下并没有唯一的“标准答案”,需要“思考和辨别”;而且即使存在“标准答案”,也需要通过“思考和辨别”的过程来获取。 更重要的是通过主动学习能够提高思维的开阔性和独立思维能力,敢于质疑和挑战。
学习编程除了具备“命题教育”的作用,还存在当下其它教育形式很难具备的优势:高度创作性和高度趣味性; 可以充分利用碎片时间;过程更具挑战性;有足够学习深度(因为编程的目标范围非常大)。 因此通过学习编程,可以非常有效地弥补现有应试教育“单向灌输”的严重缺陷,鼓励小朋友发挥想象力,敢于思考和质疑;提高学习兴趣, 培养自学和主动学习的能力;掌握更加有效的学习方法。
在过去我们强调基础知识或者专业知识学习的重要性,但是在信息化时代,教育已经不仅仅是面向学科的知识教育或者单纯的技能教育,更重要的是“泛能力”培养,具体包括三个方面:

信息素养和表达能力

Information and Communication Skills

思辨和求解能力

Thinking and Problem Solving Skills

人际关系和自我指导能力

Interpersonal & Self-Directional Skills

信息素养和表达能力

对信息素养的简单理解就是:“怎样找到需要的信息?”,“在什么地方用什么方法找到信息?”,“哪些信息是需要的?”,从过程上来看就是:界定所需要的信息→寻找搜索信息的方法→收集信息→运用信息→表达信息→评价信息。
信息素养是个人综合素质极其重要的组成部分,它是开拓创新的前提,也是终身教育、学习和不断更新知识的基础, 是信息时代人们所必须具备的基本素养。只有具备了一定信息素养的小朋友才有可能将他们的学习延伸到课堂教学环境之外, 也才能在步入复杂的社会舞台后进行独立的开拓、研究与发展。
媒体素养(Media Literacy)就是一个人认识、评判、运用传媒的态度与能力,是指人们面对传媒各种信息时的选择能力、理解能力、质疑能力、评估能力、创造能力、思辨性反应能力等。培养媒体素养的目标是具备思辨与创建信息的能力,能够用批判性的角度去解读媒体信息, 而不是盲从与媒体信息的指引,也就是在信息化时代面对海量信息时的独立思考能力
许多国家如英国、加拿大、澳洲等,早已把信息素养和媒体素养纳入正规教育体系中,例如根据新西兰英语课程纲要,他们的小朋友在五年级时就已加入媒体素养的培训。日本文部科学省于2001年在中小学与高中设立“综合教育”科目,也纳入了媒体素养。香港从1997年教育改革时开始推动媒体教育, 而自2005年推行的英语新课程及2007年推行的中文新课程,也纳入了媒体素养。
在通过励码编程工具完成一个具体创作(project)的过程中,小朋友们要学习选择、创建和如何使用不同形式的素材(media),包括了图像、动画、文字和录音等,伴随着项目过程的重复开展,小朋友们能够不断丰富对信息、媒体的认知和使用经验,进而在面对周围环境的大量信息时, 能够具备更强的理解能力和判断能力。"
有效地表达和交流需要具备使用媒体素材的能力,例如读写文字、制作图像、视频等等。通过励码编程工具完成项目,需要反复选择、制作和集成大量的媒体素材,小朋友们要通过对媒体素材的运用来展示项目的创意和目的,也就是要明确、清晰地阐述自己的设想。因此励码编程有助于培养表达和交流能力。

思辨和求解能力

通过励码编程工具完成创作的时候,小朋友需要调整不同“角色”之间的交互方式和时间顺序,以达到预期的设计效果,例如两个“人物角色”什么时间在什么位置相遇等等。整个过程本质上就是对“侦测”、“反馈”、“运算”和“逻辑判断”等多种基础化的系统概念的反复运用, 从而能够锻炼和提升小朋友的推理和系统性思考能力。
完成一个励码编程项目作品首先需要小朋友规划、构思项目创意(预期的效果),然后确定需要解决的问题以及如何把这些问题分解为若干步骤,最后通过励码编程工具的“编程积木”拼接来完成这些步骤。励码编程工具根据“编程积木”的排列,实时、动态地改变效果,也就是当该改变积木的拼接顺序和拼接关系之后,通过鼠标点击积木就可以立刻看到结果,所以能够帮助小朋友们即时发现问题和调整解决问题的思路。
通过这样一个互动的、直观的设计和实现过程,可以让小朋友们沉浸在“发现问题、调整思路、获得经验“的反复迭代过程之中,直接锻炼他们的逻辑和推理能力。"
在这个不断快速变化的时代,创造性思维是越来越重要的能力。编程能够培养创新能力,因为代码的世界是可以任意发挥创意的世界。
励码编程工具提供能力强大的编程积木(完全符合面向对象编程概念的积木),丰富的各类编程资源,真正模拟了一个实际的编程环境,所以能够引导和鼓励小朋友们不断地求解未知问题,也就是说小朋友除了学习如何解决预定义的问题,在面对未知问题时依然有意愿、有能力去探索新的思路和方法。
对未知问题的求解会关联到新的知识领域,需要不断学习。所以培养创造性思维的过程同时也会激发求知欲和培养持续学习的习惯。"

人际关系和自我指导能力

励码编程工具是通过拼接图形化”编程积木“的方式完成项目,实现”软件效果“,同时项目中所使用的各种资源(包括角色、积木等等)完全可视化,易于理解和认知,因此小朋友们无需了解编程语言的语法知识就能够学习编程概念。另外励码编程项目本身以及项目中的资源都可以导出共享, 所以小朋友们可以合作完成一个项目,同时也可以彼此交换、共享各自创作的资源。
在合作开发过程中,大家需要对励码编程项目所包含的任务进行分解、分配,同时还需要把各自创建的“角色”、拼接好的积木进行合并、测试等等,而且整个过程中上述事项还需要重复几次,最终实现最初的项目设计目标。因此合作开发本质上就是一个分工协作的过程,从而能够培养小朋友的协作和协同能力。"
使用励码编程工具完成项目时,需要反复构思项目的目标和如何实现这个目标。项目目标源自于小朋友自己的设想,无论是简单或是复杂,对他们而言都极具意义。因此在实现项目目标的过程中,小朋友们就具备了内在动力去克服各种挑战、困难。被自身的意愿驱动实现一个目标的过程就是一个典型的自我指导过程。
小朋友使用励码编程工具完成项目时,存在特定的受众,也就是项目作品展示给谁看,让谁来体验。同时小朋友们还要考虑其他人对项目作品的评价和反应。面对不同的评价,自身的反应、态度和举措其实就是责任感和适应能力的一种体现。
因为励码编程工具可以很便捷地调整项目,小朋友们能够根据其他人的意见和反馈,不断地修改自己的项目作品,使其更加合理、完善,也就是针对项目作品的评价和意见,如果小朋友能够有积极的响应态度,那么励码编程工具可以帮助其快速改进。因此在培养责任感和适应能力的过程中,励码编程可以给予直接的帮助。"