- URL: https://blog.sbensu.com/posts/demand-for-visual-programming/
- Added At: 2024-07-24 14:41:08
可视化编程应关注开发者实际需求,如代码库、网络拓扑、内存布局、状态机和请求/响应协议的可视化,而非替代代码语法和业务逻辑。现有工具如Sourcetrail、AWS服务拓扑图等已展示其价值,但仍需更多发展以满足开发者需求。
-
概述:
- 大多数可视化编程环境未能获得广泛使用,原因在于它们试图替代代码语法和业务逻辑,而开发者实际上更倾向于可视化状态转换、内存布局或网络请求。
- 作者认为,如果可视化编程从开发者已经可视化的软件方面入手,可能会更成功。
-
背景:
- 每隔几个月就会有人发布一个看起来很不错的可视化编程语言,但这些系统通常试图替代代码语法本身,导致开发者对其兴趣不大。
- 开发者声称他们想要“可视化编程”,但实际上他们更倾向于使用文本表示来阅读和编写业务逻辑。
-
开发者实际需求:
- 开发者确实花费时间可视化代码的某些方面,但很少是逻辑本身。他们更倾向于可视化代码库整体、计算机网络连接、内存布局、状态机转换或请求/响应协议。
- 这些是开发者真正需要的可视化编程,他们需要帮助来解决这些问题,并使用视觉工具来处理它们。
-
现有可视化技术:
- 尽管有些可视化技术已经集成到开发者环境中并被广泛使用,如DOM元素检查器视图、火焰图和SQL表图,但这些仍然是例外而非默认。
-
代码库可视化:
- Sourcetrail:一个开源的代码库可视化工具,通过高亮显示代码和图表之间的关联,帮助用户导航代码库。
- Treemap:通过可视化代码文件的大小和复杂度,帮助用户快速了解代码库的结构。
- 代码保留图:通过可视化代码随时间的变化,展示代码的保留情况,帮助用户理解代码库的演变。
-
计算机网络和服务拓扑:
- AWS文档中充满了服务拓扑图,展示了各个服务及其之间的连接,这对于理解复杂的网络结构非常有帮助。
-
内存布局:
- 开发者经常通过图表来理解内存布局,特别是在处理复杂的数据结构时,如Rust中的
Rc<T>指针。 - 《Programming Rust》一书通过内存布局图帮助读者理解Rust的所有权模型。
- 开发者经常通过图表来理解内存布局,特别是在处理复杂的数据结构时,如Rust中的
-
状态机:
- 状态机图表是标准工具,用于展示状态转换和代码表示之间的关系,如Idris文档中的示例。
- Stripe的支付意图状态机图展示了支付过程中的各种状态及其转换。
-
泳道图用于请求/响应:
- 泳道图用于跟踪客户端/服务器请求架构中的请求和响应,如Stripe文档中的示例,展示了客户结账、保存支付方式和支付的过程。
- Aphyr使用类似的泳道图来展示分布式系统中不同进程对状态的视图。
- Signal的双棘轮算法文档中的图表展示了Alice和Bob在协议的每一步需要做什么来加密和解密消息。
-
总结:
- 可视化编程应该关注开发者已经可视化的软件方面,如代码库、网络拓扑、内存布局、状态机和请求/响应协议,而不是试图替代代码语法和业务逻辑。