要么被神话,要么被低估的 Scratch编程

admin 发表于 2019-06-17 16:18

https://cdn.china-scratch.com/timg/190617/161TR493-0.jpg

本文转载自公众号:“南瓜博士”,原文标题《被神话以及被低估的Scratch》,文章内容有删改。

人们提少儿编程,多半会想到 Scratch。有人说 Scratch 太重要,孩子要应对未来世界必须得会编程,而学编程的最好方式就是 Scratch。也有人说 Scratch 不过是个入门的玩具,只要孩子能懂,还是应该尽早教 Python、JavaScript、C++ 之类的正经语言。

上个月《少儿编程教育的是与非》一文发出后,我陆续收到一些伙伴提问,问如何看待上面两种观点。我觉得吧,Scratch 被神话了,并且它也被低估了。神话它和低估它的,还常常是同一群人。

被神化的 Scratch

神话 Scratch 的说词通常出现在制造焦虑的软文里,我猜大家早看腻了。无非是搬出比尔盖茨或乔布斯来证明从小学编程有多重要,再找些看起来已经拥有开挂人生的编程少年让你羡慕一下,最后告诉你 Scratch 有多简单、孩子有多爱它。似乎有了 Scratch,你的孩子也能像开挂少年或世界首富一般,笑对未来被机器人统治的世界。

但,真是如此吗?

会写 if...else... 又如何?

首先,这类软文中所谓的“编程思维”真没什么了不起。不就是把“如果...那么...否则...”、“不断重复...直到...”改成了 if...then...else... 和 repeat...until... 这样几个橘黄色小方块嘛,凭什么换了个语言就成为高人一等的“编程思维”了?我还能把它翻译成上百种语言呢,有差别吗?

事实上,它的关键在于精确、无歧义的表达,这是计算机语言不同于人类自然语言的一大特点。若孩子们虽然用一层层嵌套的 if...else... 写代码、逻辑却混乱不清只是凑巧能正确运行,那还是没捕捉到计算机语言的好。若孩子们用中文的表达都如法律文书一般严谨,给自己设计的桌游写说明书时能井然有序严丝合缝,那就算不懂编程思维也不会落下风。从这个意义上来说,带孩子玩不插电编程的游戏,或者教孩子用清晰准确的语言写作文,效果和教编程是一样的。

从 Scratch 到IT公司需要的编程,路还很远很远……

有些家长看到孩子们的 Scratch 作品后心里美滋滋:“我不懂,但小家伙能自己写游戏,还真挺厉害。机构老师说这就是编程,等以后进阶到 Python 很容易,会 Python 就什么都能做了……”

对不起,从几个 Scratch 游戏联想到今后 IT 公司创业成就,也就是商业机构哄哄父母们开心罢了。

IT公司招聘程序员时,有时会遇到“代码学生气很重”的候选人,指的是候选人只做过学校课程类型的项目、缺乏工程实践经验。但即便是学生气重的代码,参加过信奥的又比没参加的,在算法上会高级好多;即便是不参加信奥、只写过一些玩具级别小项目的,通常代码也还是会比 Scratch 复杂不知多少倍。别的不说,光 Scratch 函数缺乏返回值、数组只有一维,这些“硬伤”注定了 Scratch 作品能让孩子掌握的编程知识相对有限。Scratch 作品和实际工程代码间有道鸿沟,会一点儿 Scratch 编程其实并不会在 IT 行业多多少先发优势。

被低估的 Scratch

但Scratch 的这些“硬伤”,其实是设计者有意为之的。他们非常仔细的选择语言特性,故意放弃了一些对程序员来说很重要的功能,为的是让使用者更轻松上手、更聚焦在设计者们所期望的行为上。

对孩子有着很高期望的家长,和想要卖掉更多高阶课程的机构,往往会倾向于早一些教孩子们 Python 之类的文本语言。他们总觉得,孩子们通过 Scratch 在编程上入门后,要尽快写“真正的程序”,停留在用 Scratch 画动画、做游戏阶段,属于浪费时间。

有这样的想法,是因为他们不会 Scratch 漂亮的高阶玩法,也是因为他们没有看到 Scratch 珍宝一般的独到价值。

实验、测试、调试的方法习惯,可比编程语言知识点重要多了!

在哈佛的创意计算思维框架中,第二个维度,列出了若干重要实践,我们来重点看看以下三条:

  • Experimenting,实验,需要先尝试理解代码块的作用是什么,再想象它能被用在哪里,然后写一小段程序去尝试

  • Testing,测试,需要猜测代码块的某些功能,设计方法去验证,且要用不同的猜测和验证去寻找其边界

  • Debugging, 调试,是当代码的运行不符合预期时,一点一点的去排查、纠正错误。

Scratch 之所以能很好的支持这些实践,图形化的直观、易于理解是一个原因;更重要的原因在于用 Scratch 写代码运行、获得反馈,实在是太迅速便捷了。不要小看这一点儿效率上的提升,它为孩子们扫除好大一个障碍,从而让孩子能更主动的去探索、尝试。孩子摆弄 Scratch 代码块、试出各种有趣的效果,这很常见;但你见过多少个孩子,会主动通读 Python 文档,并且把类库函数一个个尝试?

通过“玩 Scratch”,可以培养实验、测试、调试的习惯、学会做这些的方法,这是 Scratch 带给孩子们的一大珍宝。

Scratch 作为用于表达、创造的工具,其价值比作为编程语言更高!

其实,Scratch 根本就不应该被作为编程语言和 Python 去 PK。Scratch 是个工具,和它对标的应该是铅笔、画图板和 PowerPoint。曾经孩子们用纸笔画画;后来用电脑里的画图板,画的图片可以复制、可以在网络上分享了;再后来用 PowerPoint 制作具有动画效果的作品,让演讲更生动了;而现在,则是可以用 Scratch 做出有交互效果的作品。Scratch就是信息时代的铅笔。

Scratch 的“舞台/角色/造型/声音”的设计实在很天才,有极强的表现力可以让孩子进行各种自由创作。会 Scratch 的孩子,十几分钟就能搞定一个趣味小游戏,同样的内容换作 Python 或 JavaScript 来开发,至少得几小时甚至几天。这样一个强有力的让孩子们进行表达和创造的工具,到底会给孩子带来什么,其实你很难想象,就像你难以想象画笔和白纸对孩子来说意味着什么。

在铅笔刚被发明之初,人们思考它对孩子有什么价值,想到的也许是更方便写字吧。但如今的孩子,会用涂鸦表达情绪、打草稿解智力题、用思维导图记录所思所想、画草图进行工程项目的设计……铅笔比鹅毛笔用起来方便太多,写错了还能擦,因此在鼓励孩子表达、创造上有特别的作用。那些想着如何考察孩子写字能力的专家门,是否看得到这些作用呢?他们也许认为用鹅毛笔才能写出优美的笔锋,所以需要尽快切换到鹅毛笔写字吧。

对 Scratch 来说也是如此:若只关心 Scratch 在编程入门上的作用,那就像只以孩子学写字的水平来判断铅笔对孩子的作用一样。我们更应该看到它给孩子表达、创造上的价值。

不神话,不低估,那该怎么做?

写这篇文章,是因为有家长把我上一篇《少儿编程的是与非》发给了机构老师,老师对文章提出了反对意见,说她孩子应该学 Python 了,家长又把对话转给我问到底该怎么做。

我脑中的路径是这样的:

  1. 小学低年级就可以学 Scratch,不只是作为编程的入门,更是作为表达、创作的工具。

  2. 用项目制的方式带孩子充分挖掘 Scratch 的功能;同时如有条件,找好老师教他写优美的代码(优美代码所能培养的思维技能,我以后单开文章来写)。

  3. 当孩子的项目越来越真实时,少不了会软硬件结合。此时引入 micro:bit 或各种别的硬件。依旧是项目驱动,需要什么就学什么。

  4. 一般说来小学阶段没必要学文本类编程。除非孩子觉得图形化编程不够用,从而带着目的去学文本类编程,这是应该被鼓励的。例如他想要写个工具处理大量文本,就去学 python 基础语法以及文本相关的类库。最忌讳的,就是急吼吼让孩子学 Python,还很得意孩子都能学会,却没发现自打换了 Python 后孩子自主探索和创作的行为少了很多。

  5. 等孩子上中学了,再开始系统的学 python 或 javascript,不迟呢。

当然,一家之言,只是从我关心的价值来考虑的。信奥拿奖方便升学等等,都不在本文讨论范畴。如何理解,请各位学生家长明辨。

后记,小编朋友公司研发了一个游戏化的少儿编程在线课程(5-12岁),游戏化教学结合scratch(一款在线少儿编程工具,类似乐高的积木拼搭),我家娃娃学了几次课,非常喜欢(超预期),16次课才200多块钱,对锻炼孩子的思维能力和动手动力很有帮助。

感兴趣的朋友可以扫描二维码,关注一下,或微信搜索“大耳猴少儿编程”

https://www.china-scratch.com/Uploads/Editor/2018-04-22/5adca08bdc212.jpg