Total Pageviews

Tuesday 22 January 2013

可视化编程工具 – Blockly

Blockly 是一个基于 Web 的可视化编程工具, Google 旗下的一个开源项目. 用户不需要敲代码, 可以通过拼装积木的方式构建应用程序. 目前支持生成 JavaScript, Dart 和 Python 代码. 我也跟风搭建了一个: Blocky 图形编程面板.

Blockly 例子

官方提供了几个例子, 其中包括一个迷宫游戏. 这里做了大量封装, 在用户看来和益智游戏没什么区别. 我一直在想有没有办法可以创造一个完美的算法, 可以走通任何有通路的迷宫, 因为不能设标记, 最终也没搞定.
事实上我已经 out 了, 迷宫在发布当天就被玩烂了. 这里附一篇文章《Google Blockly Maze Solved!!》, 没走通的朋友可以偷瞄几眼.

Blockly 试用

几个月前, 我做过一次代码重构, 做的是 JavaScript 生成翻页导航结构. 我用了构建模式的思路, 将一段写成 4 层判断的代码改成了 1 层判断, 虽然代码效率没多大提升, 但大大提升了代码可读性.
这次我再用 Blockly 从新做了一遍, 速度奇快, 导出来的代码可用, 简单修改即可套用. 其中 <> 代表可点击页码, () 代表不可点击的页码. 从 Blockly 导出的 XML: build-pagination.xml (备用地址)

结语

我觉得挺新奇的, 玩了半天, 总觉得差了点什么. 比如: 函数 (Procedure) 不能带参数, 没有 Map, 对象等类型, 因为不支持复制粘贴而多次重复输入也让人十分郁闷. Blockly 是 6 月中旬才发布的项目, 不完善也正常, 貌似开发小组已经有了一系列的改进计划. 短期的计划有如下几点.
  • 更完善的文档.
  • 更多积木 (比如: 子字符串).
  • 带参的函数.
  • 剪切, 拷贝和粘贴.
这些确实迫切需要, 起码与我的想法切合. 但我找遍了中期和长期目标, 都看不到说要支持更多对象类型的, 如果用来写 JavaScript, 不支持 JSON 格式还搞个蛋, 坐等改进.
貌似 Google 除了作为教育工具也没想到 Blockly 的其他用途, 并呼吁用户可以尽情地把玩 Blockly, 并给予反馈和新奇的点子. 作为开源项目, 我猜测 Google 也希望有人拿去做做二次开发, 如扩展积木 (添加更多组件), 模拟工具 (如迷宫游戏) 之类.