一. 关于Blockly
Flow这个项目是我对类Blockly积木块式编程工具的一次反思和迭代尝试。Blockly自xx年出现,经历了几个关键阶段的发展,逐渐发展为国内乃至全世界儿童的理想编程创作工具。刻意确定的是,Blockly确实是划时代意义的GUI形式,解决了很多问题。但是十年过去了,自2015年之后,这种磁吸式积木状的编程GUI就再也没有进化过了,其自身交互形式带来的固有问题,一定程度上阻碍了用户继续享受这种创新式交互所带来的的红利。
- 关于blockly的历史:
- 国内用blockly形式的产品:慧编程(Scratch)、编程猫、核桃编程、童程童美、Coding(blockly)、贝尔、Robomaster...
- 国外用blockly形式的产品:Scratch、Makecode
二. Blockly的价值分析
Blockly的出现,将人类编程的年龄门槛,直接从12岁左右(初一)拉到9岁(小学三年级)。这种磁吸式积木拼接GUI,带来的用户价值:
- 规避了初学者进行代码编程,容易造成语法错误的问题,聚焦在积木块逻辑的搭建上。
- 支持转C、JS、PHP、Python等语言的代码。因为blockly只是GUI,要让使用者的作品work,还是要依赖背后的代码语言、编译器和运行环境。支持多种语言,拓展了blockly的使用场景。
其他开发者价值:
- 可配置、可被嵌入。诞生了Scratch、Makecode这样知名度更高的图形化编程工具。
- 开源
然而,这种编程形式以及其后来的迭代发展,也带来两个最严重的的问题:
- 长代码可读性;
- 逻辑问题debug难,无法追溯问题;
目前想到的一些解决以上问题的点子:
- 数学公式支持Latex编辑、直接代数形式展示。(可读性)
- 代码布局采用自动挂载“逻辑树”的形式。代码根据运行顺序自动排列。(可读性)
- 函数采用横向挂载(可读性)
- 变量、函数、对象可视化(可读性&debug)
- 代码执行位置标记(debug)
三. 关于Flow
为此,可能需要开发一款新的工具来支持以上idea。
新工具暂时起名为Flow,打算以PyQt5开发,集成Python3.7运行环境(首先只支持代码和Python互转),2个,一个支持pyqt5,一个给用户用。用户每次新建项目,就新建一个venv。
目前需要考虑,使用Flow编程后,用户代码的运行环境是什么。(类似Scratch的舞台,Makecode的Micro:bit、Minecraft)
其他需求:
- 支持导入.sb3和blockly程序(推广用,优先级低)
- 支持除Python外的其他语言。
- 争取实现Python和block互转。
- 所有块绑定快捷键(参考AutoCAD的快捷键设计),帮助用户快速写长程序。
四. 接下来要做的事情
- 了解Blockly、Scratch的历史,甚至是图形化编程GUI的历史
- 明确Flow交互形式
- 制定PyQt5的学习计划和项目开发计划