Scratch晋级Python,一路要打通哪些关?

做少儿编程一段时间以来,慢慢地曹老师发现,开始有家长不满足只让孩子学Scratch了,这通常是对编程稍微知道一些的家长。

他们会问这样一个问题:孩子已经反复做了大量Scratch拖模块式的编程练习,什么时候才可以开始学习写代码啊?

这个问题,说实话,还真不是一句话能回答好的。

难回答,主要有主观和客观两个方面的原因。

主观上来讲,孩子,这个特殊的个体,他反复做了大量Scratch练习,到底学到了什么水平呢?这需要对他的Scratch水平有一个掌握。

之所以让孩子从Scratch开始编程学习,这是现在最方便、最通行的编程启蒙的做法(某些对Scratch IDE的改装升级另当别论)。

为什么不直接学Python等纯代码语言?主要是因为孩子年龄小,而使用Scratch操作起来非常方便,容易出成果,给出及时的反馈,在这个过程中教授一些基本的编程知识和概念。

可是,要让孩子学Scratch学到什么程度才可以接触Python呢?那得看Scratch到底学得怎么样了。一般来说,无论谁学习编程,要学的东西主要分四个方面:

一是学习计算机和编程软件的基本操作

这一点在孩子这里显得特别重要。会使用鼠标和键盘,会操作Mac或Windows,打开编程的工具,熟悉Scratch软件的各个操作区,新建、保存文档等,这些都是基本操作。

二是学习操作类代码块的使用

在Scratch里我们主要是操作舞台上的角色做各种动作、换各种造型、发出各种声音等,同时还可以控制舞台背景。

这些代码块的使用是一个程序基本的构成要素,无论是一个计算器这样的程序,还是一个飞机大战这样的游戏,我们看到的和听到的,无非不过是各种角色、背景外观在变,在发出不同的声音。这些东西就好比我们修建整座摩天大楼的砖块。

三是学习对上面基本操作类代码块的控制方法

计算机的优势是能够自动化地进行高速运算。自动化的前提就是它能够以一定的规则控制所有的操作。有规律的操作,循环执行,在一定条件下的操作,指明它进行的条件,循环和条件是两种最基本的控制方法。

第四点的要求更高一些了。在学了上面这些东西后,我们的目标是什么?目标绝不仅仅是让孩子们照着老师的代码,无意识地拖成功,让画画动起来这么简单。

Scratch之所以被全球至少2000万的用户使用,最主要的原因是它降低了入门编程的门槛不说,还打出了“Imagine, Program, Share”,即“想象、编程、分享”这样的口号,着重对学习者创造力的培养。Scratch相比一般编程语言所做的简化,都在为这一目标服务。

而创造一个东西,除了知道使用什么材料、如何使用之外,最重要的是什么呢?曹老师认为,有两个:其一是想要表达的思想,其二是如何表达这样的思想

这跟写作文一样,中心思想是什么?没有中心思想的作文,都是在玩文字游戏。

如何表达这一思想,这一点跟上面的对操作类代码块的控制方法还不完全一样。上面所说的方法是更具体层面的,而如何表达,是更整体的考虑,相当于写作文时的修辞手法和谋篇布局。会用词造句,写几句通顺的话,不一定能写出来优秀的作文,也是同样的道理。

如何将自己的想法,一点一点拆分,有条理地用Scratch去实现,是很多学生会了一些基本操作后,遇到的一座大山。

简而言之,如果一个孩子是从Scratch起步,如果他学了Scratch,并不能用Scratch的方法实现自己的想法,没有达到“创作自由”,曹老师非常不建议这时开始Python代码的学习。

(有一些东西用Scratch根本无法实现,这是Scratch的局限性,不是孩子的局限性)

下面再说一说,在客观上,想让孩子像成人一样使用纯代码的Python编程,不可避免地面临着三个困难。

一是纯代码有着繁琐的语法规则和更多的形式变换

哪怕是简单如Python这样的代码语言,它也有那些什么地方该换行,什么地方该空格,什么地方该加冒号,什么地方用括号,什么地方该缩进多少等等规范。

如果孩子本身具有,或已经在Scratch的学习过程中,修炼出了细致谨慎、不骄不躁的品质,那么搞定这些繁琐的语法规划就不在话下了。

因为纯代码语言是更实用的语言,所以每一种语言都可能为满足需求,同一个功能有很多变换形式。

比如for循环,就有for i in range(10)这样的写法,也有for e in obj这样的写法。同类的这些例子还有很多,这都是学完Scratch的孩子,必须面临的挑战。“茴香豆”的“茴”有四种写法,每一种都不能少。

第二个拦路虎,是纯代码语言需要以类似英语的方式书写需要孩子有一定的英语基础

当然如果你接受用拼音写变量名、函数名,那我没法强求你也认同这一条。不过最起码的英语,比如if, else, def, import, return, get……这些总是要搞懂的吧!

孩子英语基础越好,学习Python将会更容易。我教过国际学校和知名公立学校的孩子,也教过普通公立学校的孩子。

同样是教他们学习Python, 英语好的孩子,很多地方不需要过多解释,自然就掌握了概念,而英语不好的,可能解释好久都不一定吃透。

一个例子就是:function,我要说这是一个“函数”,那孩子肯定会一脸茫然,而直接让孩子用英文理解,这就是实现一个“功能”,瞬间就接受了。

三是纯代码语言的背后有着比Scratch编程更庞大的知识应用体系

Scratch是一个玩具型的编程工具,使用它所能做的一切,都是在这个小小的舞台上,发生的一些事情都不会太复杂。(当然也有接口可以接上真实的机器人)

可纯代码的编程语言,用纯代码编写,只是表象,它能做的事情,才是真正的“水下冰山”。

开发网站、图片处理、动画生成、科学计算、文件处理、游戏开发……Python可以做的事情实在太多,而无论做哪一方面的事情,都有一大堆的知识,需要在编写代码之前或同时了解吃透。

现在很多平台、很多机构都非常取巧地选用游戏入门,把很多底层的操作经过打包封装后,只露出简化了的操作,供孩子学习时使用,这也是没有办法的办法。

但是在这个过程中,曹老师发现了两个问题,在这里抛出来,供同行们思考。

其一,如何在简化孩子入门Python难度的同时,保证孩子学到Python真正重要的东西

其二,如果保证孩子能够顺利往下学Python,并且还能得到与先前学习Scratch时不一样的体验

孩子如果觉得,这东西用Scratch都能写,为啥还非得用Python写?比如角色碰撞检测。或者为什么用Python写这么难,Scratch不是很容易吗?比如说颜色的碰撞检测等。

 

作为总结,想说的是,要面向更大范围青少年的Python课程,从理念,到平台、工具,再到课程,仍都需要持续的改进。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

第8届Python编程挑战赛复赛真题剖析-2022年全国青少年信息素养大赛

2023-7-5 8:16:29

综合资讯

春夏秋冬-第12届蓝桥杯Scratch选拔赛真题精选

2023-7-6 8:32:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索