用 Scratch 學程式設計,可不是玩玩而已

  Scratch5进行儿童程序教学至今,经常被问到这些问题:

  “我的小孩不见得会成为工程师,学程序设计干嘛?”

  “我知道程序设计很重要,但是学Scratch真的算是程序设计吗?”

  “他们的学校已经有教Scratch了,和你们教的有什么不同呢?”

  或许利用这个机会,好好来解释一下,我们是怎么用Scratch将孩子引入门的。

  首先,Why Scratch?

  Scratch是美国麻省理工学院开发的一套儿童程序语言,特色在于没有复杂的文字指令,所有的指令都是以可视化的积木来呈现。要完成一个程序,只要像组合积木一样,就可以完成一个程序。因此,完全没有程序设计经验的孩子可以立刻上手,开始设计程序。

  麻省理工这群全世界最厉害的人才当然有能力开发另一套文字程序语言,像是Ruby或Python。但是小朋友的思考模式毕竟和青少年及成人不同:

  1、思考较直观

  2、对于英文的掌握能力较弱

  因为以上两点原因,使得孩子难以掌握如C,java,python等文字界面的程序语言,但事实上小学的孩子就有能力掌握程序逻辑了。Scratch的诞生,就是为了让孩子「跳过」以上这两个障碍,用更亲切、直观的方式来写程序,训练程序逻辑并培养程序设计的基本knowhow。

  但是,什么是程序逻辑呢?什么又是程序设计的基本knowhow呢?

  来自麻省理工的教条

  MIT media lab在开发Scratch的同时,也撰写了一份课纲,叙述学童应该学会的几项重要观念。

  计算性观念Computational Concepts

  在程序的建构中,有许多的重要概念,是不分语言、彼此共通的。例如最基本的序列(Sequence)、循环(loops)以及数据(data)。Scratch的设计中,便融入了这些重要的元素。

  程序设计七大元素:

  1、序列(Squence)

  2、循环(Loops)

  3、平行化(Parallism)

  4、事件(Events)

  5、条件式(Conditionals)

  6、运算子(Operators)

  7、数据(Data)

  计算性实作Computational Practices

  当然,在了解程序运作的原理以及基本构成外,接着要进入的是真正的程序设计实作。但在一个完整的软件,并非一蹴可及,而是阶段性、反复修正、甚至要将程序切割并模块化。这些概念都是软件工程的重要基础。

  可能很多家长对于程序设计有些误解,认为这些概念太偏门,只有就读相关科系的人才会用到,但其实不然。举例来说,「反复,渐进式开发」(Being iterative and incremental)在生活中到处可见,无论是学习、考试、创作。一步步的前进,并随时修正学习方式,其实就是很多人的成功秘诀。

  计算性观点Computational Perspectives

  如果你认为程序教育就只是教孩子复杂的逻辑、算法,那以下MIT提出的计算性观点应该会让你改变想法:

  1、表达(Expressing):

  学习如何正确表达目的、程序需求、以及实作方式。

  2、连接(Connecting):

  程序是为了满足人的需求而产生的,所以要了解「为别人」或「和别人一起」写程序的乐趣与力量。

  3、提问(Questioning):

  一个不断进步的人才,是懂得时时质疑眼前的问题的,培养提问的习惯,便能在不知不觉间养成透彻的洞察力。

  以上几点跟数理能力几乎一点关系都没有,但却是这个世代最重要的能力-「沟通、整合、与分析」。也因此,越是顶尖的人才,他们所拥有的优势可绝不只在技术,而是这些所谓的「软实力」。

  那,你们是怎么教的,跟学校教的有什么不同呢?

  先不论大多小学、中学的电脑课只教word,excel等软件这件事实,少数愿意教小朋友写Scratch的学校,往往只能最基本的解释如何操作Scratch。在没有适当引导、传授Computer Science重要观念的情形下,孩子往往失去兴趣,也无法照心目中的想法将程序实作出来,这是相当可惜的。

  橘子苹果的Scratch程序设计课程就是严谨遵循以上来自麻省理工的程序设计教条,一步步的引导孩子进入程序逻辑思维,培养解决问题的能力。

  不是教你写出复杂的算法,而是教你如何解决问题

  在这个什么都百度、Google得到的时代,用搜寻得到的信息来解决问题不是难事,这个世代的孩子在未来面临最大的挑战将是:「如何解决从没出现过的问题」以及「调节产业快速的变迁」。

  我们的下一代,准备好面对信息时代了吗?