Sebastian Bensusan 有一篇精彩的文章:“我们需要可视化编程。不,不是那样的。 ”(点是标题的一部分 ¯\_(ツ)_/¯)。
在这篇文章中,塞巴斯蒂安认为,我们不应该尝试用可视化编程取代所有代码,而应该只在有意义的地方添加图形:
大多数可视化编程环境都未能得到任何使用。为什么?它们试图取代代码语法和业务逻辑,但开发人员从未尝试将其可视化。相反,开发人员可视化状态转换、内存布局或网络请求。
在我看来,如果从事可视化编程的人从开发人员已经可视化的软件方面开始,他们就更有可能获得成功。
我自己也很喜欢图表!每当我遇到一个复杂的任务并尝试用代码解决它时,它总是变得很乱。但是画完图表后,我的理解力提高了,代码也变得更清晰了。双赢!
这是我在 Humble UI 中为按钮状态制作的:

我敢打赌你以为按钮很简单?一开始我也这么想。但过了一定程度后,你的大脑就无法适应所有的状态和转换。
或者对于图像上传组件:

再次强调:如果没有错误处理,事情会变得简单。但只要有原则性的方法,你就能克服所有困难。
塞巴斯蒂安在他的文章中也给出了更多有用的可视化示例。
但是现在,这一切与代码有什么关系呢?我认为有四个层次。
级别 0:图表单独存在
您可以在单独的工具中绘制它们,然后使用它来帮助您编写代码。也许将它们放在 wiki 上供其他人查看。重点是:图表与代码完全分开。
缺点:难以发现、可能会过时。
以上两个例子就是我做的,我想大多数人在现代工具的帮助下都能做到。但嘿,这仍然不是那么糟糕!
第 1 级:图表与代码共存
一个简单的技巧可以解决发现的问题:如果我们可以将图像放入文本文件中会怎么样?
目前,您能做的最好的事情是:
+-----+ -->
| N_4 |------ <--- +-----+
+-----+ | |-----| R_3 |
| 15 | | 5 +-----+
|50 | | |
+-----+ ---> | +-----+ | 70
| N_2 |------ | | N_3 | |
+-----+ | | +-----+ |
| 15 | | | 30 |
| 10 | +-----+ <--- | |
@ | ----| S |--------| |
@ | <@@@ +-----+ |
V | | | |
| 10 | | |
+-----+ | V |
| R_2 | +-----+ |
+-----+ | E | |
| | +-----+ |
| | 40 | | |
V | 10 | | |
| +-----+ | V |
-----| R_1 |-----| |
+-----+ |
| ---> +-----+ |
|------------------| D |---------
10 +-----+
但很快就会变得一团糟。如果我们可以这样做会怎么样?

优点:易于实施(一旦每个人都同意如何去做)、通用(可能有许多其他用例)。
缺点:仍然可能过时。“注释不是代码”——这里同样适用。
哦,如果你在终端上写代码,这个聚会不适合你。抱歉。我们正在考虑未来。
第 2 级:从代码生成图表
这就是 Sebastian 所暗示的。代码和图表共存,一个由另一个生成。
从代码生成图表绝对是 IDE 可以做的事情:

优点:
始终保持最新。
非侵入式:可以集成到 IDE 中,而不会影响代码的存储方式。
缺点:
它可以帮助你理解,但它能帮助你思考吗?
这些东西往往看起来不太美观。很难自动布置出好的图表。
第 3 级:图表就是代码
在我看来,这就是最终结果。有些东西用文字来表达更好。有些东西最好用视觉来理解。我们应该根据具体情况混合搭配最有效的方法。不要试图将简单的代码可视化。不要试图在图表更合适的地方编写代码。
其中一个尝试是 Luna。他们尝试了双重表示:所有内容同时是代码和图表,你可以在两者之间切换:

但这样一来,您不仅能从两种方式中获益,而且还会同时受到文本和视觉媒体的限制。您无法完成难以可视化的内容(循环、递归、抽象),也无法完成难以编码的内容。
不,我认为文本编码应该在工作的地方保持文本形式,但是我们也应该能够跳转到图表工具,在那里绘制状态机并以执行文本代码的方式执行它。

我说的绘画就是绘画。直接操作,一切尽在掌握。无需将其转换回文本。
所以我想说的是:图表不应该取代或“增加”文本。它们应该只是文本旁边的另一种工具。但它本身就是一个工具。
可以将其视为 Godot 或 Unity 等游戏引擎。在其中,您可以编写普通的文本代码,但也可以创建和编辑场景。这些场景存储在自己的文件中,具有知道如何编辑它们的专用编辑器,并且没有代码表示。为什么?在这种情况下,可视化方式更好。

所以这里的挑战不在于集成图表,而是思考哪些类型的图表是有用的、可以比代码更好地工作并且可以直接执行。
非目标:图表取代代码
重要提示:我们讨论的不是以图形方式编写代码。这只是一种不太方便的文本方式。

我们也不是在谈论无代码平台:有时代码更好。
但在这一光明的未来到来之前,请在 wiki 上放一两张图表。你的队友会感谢你的。

