Blockly 是许多在线教程背后的引擎,这些教程用于向所有年龄段的人介绍编程。在本文中,我们采访了 Blockly 开发团队的 Neil Fraser,了解了该团队的观点和愿景。
我们在哪里见过 Blockly?
最近几个月,我们看到了大量旨在吸引所有年龄段的人参与计算机编程的活动。例如,编程一小时 组织了超过 7 万场活动,全球超过 9500 万人尝试过,从 小学生到国家元首。
Code.org 提供了任何人都可以几分钟内尝试的 免费在线教程。那些尝试过其中任何一个教程的人,例如 Flappy Bird 是我的最爱,都会看到画布上有一些代码块,我们可以像乐高积木一样将它们拼接在一起。
创建这些可视化代码块的平台是 Blockly,这是一个开源库,主要由 Google 工程师开发,并得到了社区中 许多其他贡献者 的贡献,并托管在这个 Github 仓库 中。
[标题:Blockly 主页的屏幕截图]
Neil,请您介绍一下自己,Blockly 是如何开始的,以及您是如何参与到这个项目中的。
App Inventor 是 Google 的一个项目,允许新手程序员为 Android 手机创建应用程序。它使用了图形化编程,易于学习且有趣。不幸的是,用户界面是用 Java 编写的,这使得非技术用户安装和运行它成为一场噩梦。我以使用 JavaScript 构建棘手的东西而闻名,因此 App Inventor 团队请我帮忙。目标只是简单地将他们的用户界面移植到 JavaScript,以便它可以在浏览器中运行,从而消除用户安装任何东西的需求。
在项目进行了几个月后,App Inventor 被取消,项目的代码 转移到了 MIT。我相信我的新用户界面的潜力,并拒绝让它放弃。所以我采取了唯一可用的选择,并用完了我所有累积的假期。我每天都会来办公室并处理它。两个月后,我能够进行演示。我的经理们印象深刻,启动了 Blockly 项目,并追溯性地还给了我假期。这又一次证明了我为什么喜欢 Google。
这段历史的结果是,Blockly 不仅仅是一个项目的用户界面;它是一个可以放入任何项目的库。现在有数百个教育、企业和爱好项目正在使用 Blockly。
很高兴看到 Blockly 在计算机编程非正式教育中产生的巨大影响。Blockly 确实是一个教程构建工具包,它使网站更容易创建他们自己的 编程教程。您能否详细介绍一下 Blockly 社区与使用它构建教程的组织之间的相互作用?
Blockly 在我们的开发者新闻组中有一个非常活跃的社区。不断有 pull request 被提供,并且很多人互相帮助。偶尔我们会瞥见开发者们使用 Blockly 的意想不到的方向。当我们收到关于程序中超过 10,000 个代码块的性能问题的错误报告时,我们只能挠头,想知道他们在做什么。
但在大多数情况下,我们很少有机会看到其他开发者实际构建的东西。我通常是在新闻媒体上读到关于新的 Blockly 应用程序发布或美国总统使用了它。
Code.org 中的教程是针对初学者的,因此它们呈现了一个简化的界面。Blockly 可以做 更多的事情,包括类型检查、代码生成(用于 Javascript、Python、Dart 和其他语言)、代码编辑 和调试,正如您的 演示 中所示。您如何看待在完整的计算机编程课程中使用 Blockly?例如,在高中阶段,或大学编程入门课程中?
新程序员同时面临两场战斗:语法之战和逻辑之战。Blockly 消除了语法之战,在 Blockly 中不可能犯语法错误。学生可以完全专注于条件语句、循环、变量和其他核心概念背后的逻辑,而无需担心不平衡的括号或丢失的分号。
然而,我们认为,一旦理解了逻辑基础知识,学生就应该迁移到传统的基于文本的语言。Blockly Games 就是一个例子,它在每个关卡的末尾都会显示学生创建的生成代码。Blockly Games 还会在课程快结束时,引导学生从代码块转向基于文本的编程。我们不希望学生使用基于代码块的编程时间过长。没有人会因为他们有三年的 Blockly 经验而找到工作。
您的目标受众是广泛的国际受众。您能否详细介绍一下将 Blockly 翻译成 40 多种语言的努力,以及社区中的人们如何帮助进行这些工作?
世界上 94% 的非英语母语人士很难记住字母“R”、“E”、“P”、“E”、“A”、“T”按顺序排列会使某事发生多次。想象一下学习编码,同时不得不记住“كرر”或“عودة”。诚然,只有几十个单词需要记忆,但被迫这样做,再加上理解逻辑的战斗,就增加了一道额外的障碍。
将 Blockly 翻译成母语可以让人将语言障碍推迟到掌握编程概念之后。我们非常感谢人们通过提交翻译提供的帮助。令人惊叹的是,看到越南五年级的学生投入 Blockly 并开始自己摸索,而不需要老师的指导。
Blockly 中的许多设计决策似乎都是为了尽可能接触到最广泛的受众。例如,完全作为 Javascript 客户端运行(无需服务器),作为一个小型紧凑的库,支持平板电脑和触摸屏,并考虑到可访问性。与此同时,必须做出一些艰难的选择,例如放弃旧版本的浏览器,以便能够集中精力。做出这些决策的过程是什么?
大多数新学生对编程没有特别的兴趣。我们大约有 20 秒的时间来吸引他们,否则他们就会感到无聊,然后跑去玩电子游戏。每个进入门槛(安装 Java,或下载速度慢,或学习英语,或混乱的用户界面)都代表着受众的重大损失。我们依靠指标、用户研究和开发者社区的反馈来识别和消除这些障碍。
Blockly 被形容为入门毒品。它很容易尝试,它让人上瘾,并且它推动用户去做更难的事情。可能不是最讨人喜欢的比喻,但有些准确。
您对 Blockly 的未来有何愿景?开源社区如何提供帮助?
Google 将继续增强 Blockly 环境,添加新功能,例如用于多人项目的实时协作,或用于大型项目的 Google 地图式缩放,或用于盲人用户的键盘控制。但 Google 的贡献现在变得次要。Blockly 的未来已被外部开发者接管。他们是那些 fork 它、扩展它并在教育、家庭自动化、机器人技术和数据可视化中使用它的人。他们是将它翻译成 40 多种语言(包括克林贡语)的人。他们是将基于 Blockly 的应用程序送到世界各地学生手中的人。我对开发者社区所从事的工作感到无比自豪。
开源
4 条评论