关于Flow

一. 关于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的学习计划和项目开发计划

你可能感兴趣的:(关于Flow)