Blockly 是许多在线教程背后的引擎,这些教程用于向所有年龄段的人们介绍编程。在本文中,我们采访了 Blockly 开发团队的 Neil Fraser,了解了团队的观点和愿景。
我们在哪里见过 Blockly?
最近几个月,我们看到了大量旨在让所有年龄段的人们参与计算机编程的活动。例如,编程一小时 组织了超过 7 万个全球活动,并已被超过 9500 万人尝试过,从 小学生到国家元首。
Code.org 提供了 免费在线教程,任何人都可以几分钟内尝试。那些尝试过其中任何一个教程的人,例如 Flappy Bird 是我的最爱,都会看到画布上有一些代码块,我们可以像乐高积木一样将它们拼接在一起。
创建这些可视化代码块的平台是 Blockly,一个开源库,主要由 Google 工程师开发,并接受了来自社区中 许多其他人 的贡献,并托管在这个 Github 仓库 中。
[标题:Blockly 首页的截图]
Neil,请您介绍一下自己,Blockly 是如何开始的,以及您是如何参与到这个项目中的。
App Inventor 是 Google 的一个项目,它允许新手程序员为 Android 手机创建应用程序。它使用了图形化编程,易于学习且使用有趣。不幸的是,UI 是用 Java 编写的,这使得非技术用户安装和运行它成为一场噩梦。我以使用 JavaScript 构建棘手的东西而闻名,因此 App Inventor 团队请我帮忙。目标很简单,就是将他们的 UI 移植到 JavaScript,以便它可以在浏览器中运行,从而消除用户安装任何东西的需求。
在项目进行了几个月后,App Inventor 被取消了,项目的代码 转移到了 MIT。我相信我的新 UI 的潜力,并拒绝让它放弃。所以我采取了唯一可用的选择,用光了我所有累积的假期。每天我都来办公室工作。两个月后,我能够进行演示。我的经理们印象深刻,启动了 Blockly 项目,并追溯性地还给了我假期。这又是一个我热爱 Google 的例子。
这段历史的结果是,Blockly 不仅仅是一个项目的 UI;它是一个可以放入任何项目的库。现在有数百个教育、企业和业余项目都在使用 Blockly。
很高兴看到 Blockly 在计算机编程非正规教育中产生了巨大的影响。Blockly 确实是一个教程构建工具包,并且让网站创建他们自己的 编程教程 变得容易得多。您能否详细介绍一下 Blockly 社区与使用它构建教程的组织之间的互动?
Blockly 在我们的开发者新闻组中拥有非常活跃的社区。持续不断地有 pull requests 被提供,并且很多人互相帮助。偶尔,我们会瞥见开发者们使用 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,或下载速度慢,或学习英语,或混乱的 UI)都代表着大量受众的流失。我们依靠指标、用户研究和开发者社区的反馈来识别和消除这些障碍。
Blockly 被描述为入门毒品。它很容易尝试,它会让人上瘾,并且它会将用户推向更难的东西。可能不是最讨人喜欢的类比,但在某种程度上是准确的。
您对 Blockly 的未来有什么愿景,开源社区如何提供帮助?
Google 将继续增强 Blockly 环境,添加新功能,例如用于多用户项目的实时协作,或用于大型项目的 Google 地图式缩放,或用于盲人用户的键盘控制。但 Google 的贡献现在变得次要了。Blockly 的未来已经被外部开发者接管。他们是那些 fork 它、扩展它并在教育、家庭自动化、机器人技术和数据可视化中使用它的人。他们是将它翻译成 40 多种语言(包括克林贡语)的人。他们是将基于 Blockly 的应用程序送到世界各地学生手中的人。我为开发者社区所从事的工作感到无比自豪。
开源
4 条评论