编程思维的培养之路:从Scratch到Python之Turtle的教与学 (1/2)

乘着这一段少有的空闲时间,给前一阶段的劳动成果做一次复盘总结,也给自身有编程能力的爸爸妈妈,或是少儿编程教育的从业者,一个如何指导孩子们培养编程思维的思考角度
—— 给孩子匹配或是设计怎样的学习路径是合适的

让我们从大家在现实中所面临的实际问题说起:这么大的孩子,我怎么样让他喜欢上编程?而他应该学习什么样的课程呢?

理论基础 & 背景知识

这里先补充一些关于 “为什么孩子要学习编程” 的背景理论知识。
不得不说老外在这上面思考和行动都比较的深入和到位,站得高才能看的远,有了更高维度的高瞻远瞩,才能结合我们国内以及各家的具体情况,在实际的战术选择和取舍上有自己的判断。

以下为转载内容:

1. 早在1967年全球第一款针对儿童教学使用的编程语言,也是少儿编程语言的鼻祖Logo语言,他的创造者帕普特,在他1980年的著作《头脑风暴》(MindStorms)中写道 “通过编写计算机程序,孩子们既能尝试着理解和掌握最现代、最强大的技术工具,有机会触及科学和数学的最深处,还能体会到创建智能模型的美”。时至今日,这一观点也是非常具有前瞻性的。

而 Logo 语言中的函数设计,几乎成为了所有后继少儿编程工具或是工具包的设计开发模板

2. 时间来到2007年,帕普特的弟子雷斯尼克(少儿编程之父,Scratch的发明者)提出了一套创造性学习的理论。

在米切尔看来,有A型人X型人两类人。
A型人注重遵守指示和规则,各方面都表现优异,善于考试。
X型人则愿意冒险,勇于尝试新鲜事物,渴望提出自己的问题,而不是简单地解决教科书里的问题。
教育和社会发展的未来,应该是培养更多的X型的人。因为未来的世界发展变化如此之快,X型人的创造性思考和行动的能力将变得至关重要。

嗯,所以说它设计的教学核心目标是:在掌握程序化思维的基础上,培养孩子的 “创造力”,而还没有或是没有必要上升到对成人学习编程的要求:算法复杂度,规范性和工程化等等。

当然这只是一个教学流派,可取之处,大家仁者见仁智者见智吧。
至少,选择给孩子开设 C++ 课程学习的,学习的目标更多是类似对成人的要求,而不是培养 “创造力”。

Scratch VS Python的Turtle绘图工具包

基于以上的指导理论,再来看看市面上给孩子学习的主流编程学习内容:Scratch,Python,C++。
首先,我们跳过 C++。
因为 C++的基础语法体系主要还是面向机器而非人类,它的学习目标决不是 “创造力的培养” ,而是严谨的数学逻辑和算法。
因为快速的作品创作,对于C++来说是不可能的,所以玩C++可以带来的趣味性和的成就感,基本上是谈不上的,这对于大部分的孩子来说,能够坚持学习下去更多的是靠学习的毅力或是外部的压力。参加竞赛而不是创作有趣的作品,才是孩子学习C++的归宿,所以我们这里不做讨论。

接下来就是 Scratch 和 Python 的 Turtle工具包。
—— 在实际实施过程中,选择前两者中的哪一个,与孩子的年龄段和实际的喜好有关。
注意,这里之所以将 Scratch 与 Python的Turtle工具包并列,而不是直接对标 Python,进行选择,是因为对绝大部分孩子来说:

  • 这两者创作出来的作品都是彩色舞台 + 图形化作品,直观感性,趣味性十足,成就感满满。
  • 而单纯的 Python 编程出来的作品多是黑 + 白色的控制台 + 文字,对孩子缺乏吸引力。

Scratch 和 Python的Turtle工具包的设计和使用方式都是脱胎于 Logo 编程语言,师承一脉,(简笔)绘画是两者都具备的能力。

Scratch 是在(简笔)绘画功能的基础之上,进一步抽象封装设计出了整套以图和图片为基础的卡片、动画、舞台剧以及游戏作品创作的积木集合,并增加了音视频创作元素,也进一步提升了孩子,尤其是更低龄孩子的学习兴趣和可创作作品的内容范围,这是比 Logo 语言更进了一步的。

而 Python 的 Turtle工具包对这一系列新增的特性支持则不足,主要是对图和图片的处理能力不足,简单一些的还行,再复杂一些(比如图片的放缩,旋转,特效中的形变以及渐变色等等)只能靠引入其他更复杂的工具包,进而又会增大孩子入门学习的门槛和难度,有些得不偿失。一句题外话,如果孩子已过了编程的入门阶段,在进入面向对象的学习时,反过来看 Scratch 的抽象与封装设计,倒是一个很好的学习样板。

所以说,对于低龄一些的孩子,可以从 Scratch 开始

  • 设计简单的交互式游戏设计开始
    学习的目标和内容通常包括:坐标系、(程序的)基础结构、变量、鼠标、键盘等的事件触发,进而再延展到广播消息,自定义积木(函数雏形)的学习。
  • 还可以设计好玩的动画和舞台剧
    学习目标和内容可以增加一些常见的物理现象(比如:加速度,相对运动等等)内容。

通过直观地积木组合,很快就能创作出一个自己的作品,成就感满满。这些内容的学习都非常的直观、易懂,门槛和难度都不高。

由 Scratch 迈向 Python 

无论是否经过了前面的寄教于乐,娱为主、教为辅的过程,对于大一些的孩子,此时的学习就有两种选择:通过 Scratch (继续)学习设计复杂游戏 / 场景设计?还是转(简笔)绘画的学习?

  • (通过 Scratch 继续)学习设计复杂游戏 / 场景设计
    此时更多学习的是特定地设计技巧,以及创意的设计和表达。学习的目的是保持持续的创作兴趣和热情,以及对设计细节(比如更多物理现象的运用)的完善。
    在这个过程中开始要掌握更合理的单角色或多角色间的功能划分,以及积木组的抽象。
    很多时候,孩子们会沉浸在这个过程之中乐此不疲,一个小小的副作用就是对于过渡到下一个学习正式编程语言 Python 阶段会有一点点抗拒。

但随着作品复杂度和角色数量的大大增加增加,仅基于自定义积木(函数)的模块化程度,积木的数量和组合场面就会越来越失控,调试和排错也非常不方便,Scratch 能力局限性开始显现,借用一句专业术语,这属于业务逻辑递增,对自定义的业务逻辑的抽象、封装和简化,Scratch 的通用逻辑抽象是帮不上忙的了。

从另一个角度来说,孩子的学习目标里面,创造力及创作过程中更高阶能力:“结构化思维” + “抽象能力” 的训练内容比重需要逐步增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值