作者 / Sarah Otts 翻译&编辑 / 小栈机器人
因为 Scratch 与计算机科学密切相关,所以教育工作者和家长会问很多有关 Scratch 的问题: Scratch 是编程吗?为什么学生应该学习 Scratch 而不是 Java?青少年在使用 Scratch 时是否能学到计算机科学的概念?
对我来说,Scratch 和计算机科学之间的联系是非常明确的:我青少年时期使用 Scratch 的经验给了我用计算机进行创作的信心,激发了我去探索不同的编程语言,并且促使了我决定在大学里主修计算机科学,帮助我成功完成了最难的课程。现在,离我在八年级第一次使用 Scratch 时已有将近9年,我拿到了计算机科学学位,学会了很多不同的编程语言,但我依然热爱 Scratch!
Scratch 是很棒的编程入门工具
Scratch 是我学习的第一门编程语言。八年级时,有一天我无聊了,便在网上搜索小孩可以学的编程语言。我发现了 Scratch,并马上玩起来。在几分钟内,我就制作了一个简单的交互式动画:当你按下键盘上的不同按键,一个贴纸动画人物就会旋转并且改变颜色。因为 Scratch 是基于块的,所以我没有遇到语法和错误信息的问题——这让我对编程异常兴奋。而且,我当时已开始使用像“并行”和“事件处理”这样的概念,这些概念,多年后我在学习 Python 和 Java 时也碰到了。
许多教育工作者也同样发现,Scratch 是很棒的编程入门工具。Claire Pritchard,来自芝加哥的 K-8 技术集成专家,也在教学中与她的学生一起使用 Scratch 和 ScratchJr(一个为5至7岁小孩设计的应用程序)。她说,“ 我的学生通过 Scratch 学会了如何举一反三,如何解决问题,以及如何编程。因为 Scratch,我们开始学习算法和日常生活中的循环,特定的方向和其它计算机概念。”她解释说,通过 Scratch 和 ScratchJr,她的学生现在“可以理解基本的逻辑概念,编写干净的代码,做一个用文本编辑器的程序员可以做的所有事,唯一的区别是,他们使用的是一个图形界面。”
而 Scratch 的好处并非仅限于对小学生!在诺福克州立大学,Mona Rizvi 教授和 Thorna Humphries 教授在他们的计算机科学入门课程中就使用 Scratch 作为入门编程语言。当他们在学期末请学生反馈时,学生们也认为从 Scratch 中获益匪浅。比如,一位学生说“ Scratch 教给我们编程的思维:怎么样一步一步地做事情”。另一位学生则说,“从中我们学会了使用循环,这对学习 C++ (他们在下一门计算机课程中使用的语言)也很有帮助”。
Linda Fernsel 是从2011年开始使用 Scratch 的。现在,她在大学里学习计算机科学和媒体,并担任 Scratch 团队的负责人。我问她在学习过 Scratch 后再学习其它编程语言是什么感觉。她说:“学习 Java 就像碰到一个老朋友。我已经了解了那种思维方式,我需要学习的主要是一些语法。我并不害怕学习 Java,因为学习 Scratch 给了我很多很多自信。”
通过在 Scratch 中制作项目,学生们可以了解很多计算机科学的概念,比如迭代和布尔逻辑,还可以练习很多专业程序员们每天使用的技巧,比如调试错误和编写文档。而且,他们可以在更宽容的环境中学习这些,鼓励他们修改、探索和创造令人兴奋的图形游戏和动画。
Scratch是一种真正的编程语言
Scratch 不只是编程入门学习的好工具,它本身就是一种真正的编程语言。编程语言,是一种允许人们向计算机传达指令的语言。Scratch 正是这样的 —— 通过将命令块有序地拖到一起,学生们可以给计算机下达指令,比如“让那个角色在屏幕上移动”或者“将两个数字相加”。
Scratch 具有许多编程语言的重要特征,比如循环(重复块)和条件(if-then块)。有了这些功能,学生们可以在 Scratch 中创建算法或指令来完成特定的任务。计算机科学家会说 Scratch 是一种“图灵完备”的编程语言,意思是,Scratch 可以执行组成算法的所有基本功能 (functions)。
有些人担心,把 Scratch 中的块拼在一起(而不是输入文本)就不是一门真正的编程语言。但是,输入文本并非编程的必要条件。在80年代中期前,大多程序员是通过打孔卡上的洞来编写和存储他们的程序。现在,许多编程语言是用文本编写和存储的,但并非全都如此。例如,使用编程语言 Labview 的工程师就是通过连接图形节点来创建程序的。
Scratch 是世界上数以百计的编程语言之一。我曾与 Scratch 团队的开发人员 Chris Garrity 交谈,她目前负责 Scratch 网站前端,ScratchJr 和本地化。在她的职业生涯中,她用过许多编程语言。最近,她主要使用 Java,Ruby,Python,当然,还有 Scratch。
她用多种编程语言工作,因为正如她所说:“不同的语言在某些事情上会比其它语言更方便些”。比如,在网络浏览器中制作网页时用 Java 就很好,而其它一些语言更适用于那些需要在运行前反复检查的程序,比如汽车的控制系统。Scratch 对制作游戏和动画是非常好用的,因为它可以让你将图像像单块一样在屏幕上移动,而不需要你分别编写每个像素的颜色。
有时候,当人们说 Scratch 不是“真正的”编程语言时,他们的意思是,Scratch 不是一种用来制作专业应用程序和软件的专业编程语言。这是事实,但年轻人依然用 Scratch 来创造有趣的作品。学生们使用 Scratch 制作非常真实的项目——他们用 Scratch 连接他们在真实世界中的兴趣和身份,探讨现实世界中的问题,并解决现实世界的需求。而且在 Scratch 在线社区里,他们还可以与数百万活跃用户分享他们的作品。
Scratch 最终是创造和分享东西的工具
在使用 Scratch 一段时间后,许多学生发现,即使他们已经会使用其它编程语言,他们却还想继续使用 Scratch。
Connor Hudson,另一位 Scratch 团队的负责人从9岁时就开始使用 Scratch。现在,他是一名主修计算机科学的大二学生,同时他还辅修了技术艺术与媒体专业。Connor 使用好几种不同的编程语言,并协助开发了 Scratch 的拓展应用。现在,他仍然用 Scratch 来编写代码,因为正如他所说,“即使在学习了其它编程语言之后,我发现 Scratch 依然是将想法转换成现实的最佳工具。”
我也依然喜欢用 Scratch 做项目。对于 Connor,Linda 和我以及其他许多长期使用 Scratch 的人来说,Scratch 现在依然是我们工具带中,一个用来制作炫酷项目的工具。
麻省理工学院媒体实验室的 Scratch 团队负责人 Mitch Resnick 在最近的一篇博客文章中解释说:“我们的最终目标,是帮助所有孩子发展他们的想法,发展他们自己的声音和身份。”
所以,学习 Scratch 不只是学习编程!年轻人使用 Scratch 制作关于时尚和美食的项目。他们使用 Scratch 来练习他们的演技、创作音乐,并制作自己的动画。在这个过程中,他们慢慢了解计算机科学的概念,但同时,他们也学会了协同合作、绘画和设计、建设性沟通,并且运用他们的幽默感——所有这些,他们都用自己的代码表达出来。
~正在火热招生中~
小 栈 编 程 教 育
// Scratch 零 基 础 趣 味 编 程 课 //
微信公众号 / Ministack
微博/ 小栈学编程
报名咨询热线 / 010 - 57137023
Scratch | Python | Java
原文链接 / https://medium.com/scratchfoundation-blog/how-i-think-about-scratch-and-computer-science-b376111a5df