流式编程:AI 与人类协同新范式
探讨流式编程如何支持 AI 与开发者的有效协作。概念性探讨,具体应用案例不足。
探讨流式编程如何支持 AI 与开发者的有效协作。概念性探讨,具体应用案例不足。
我想到这一刻,每个阅读此文的人都已经看过新一代大型语言模型(如 ChatGPT)如何能够生成相当有用的代码。与软件开发的任何进步一样——从 IDE 到高级语言——这激发了人们对我们领域就业前景的讨论。
这让我思考这些新工具如何能融入 Flow-Based Programming 的世界,这是我参与了相当长时间的一项软件开发技术。在 Flow-Based Programming 中,可重用的"库代码"(称为 Components)和"应用逻辑"(称为 Graph)之间有非常严格的边界。
以下是已故的 J. Paul Morrison 在其开创性著作《Flow-Based Programming: A New Approach to Application Development》(2010)中对此的表述:
就像在食物的准备和消费中有厨师和食客两种角色一样,在 FBP 应用开发中有两种不同的角色:组件构建者和组件用户或应用设计者。
……应用设计者使用已存在的组件构建应用,或者当令人满意的组件不存在时,他/她会指定一个新组件,然后考虑如何让它被构建出来。
回忆起这段话让我想知道,我能让一个 LLM 生成有用的 NoFlo 组件吗?手持 New Bing,我开始探索。
第一次尝试是指定一个相当简单的组件:
这看起来相当合理!我也尝试让 New Bing 让这个组件更简洁,以及生成相同组件的 TypeScript 和 CoffeeScript 变体。所有这些似乎都能产出可用的东西!当然,可能需要一些整理,但这可以消除大量组件创建的繁琐工作。
除了这个琐碎的数学组件外,我还能够生成一些调用外部 REST API 等的组件。Bing 甚至能够根据请求在 HTTP 库之间切换。
更酷的是它实际上建议我询问它如何测试该组件。按照它说的做,结果相当令人惊讶:
这是 fbp-spec!我们提出的声明式测试工具!绝对是测试 NoFlo(或任何其他 FBP 框架)组件的最好方式。
根据我的结果,在运行生成的组件和测试之前,你一定想检查它们。但你得到的输出一点都不差。
当然,我也尝试让 Bing 为我生成 NoFlo 图。这是它相当失利的地方。有趣的是,fbp 语言的结果比 JSON 图格式要好。但这甚至更能强调,最佳切入点可能是 AI 编写组件,而人类创建运行这些组件的图。
由于我目前没有工作,我对这种协作方式没有现成的用例。但我相信这可能对任何(特别是基于流的)应用开发来说是一个巨大的生产力助推器,我期待在我下一份工作中尝试它。
插图:MidJourney,来自提示 Robot software developer working with a software architect. Floating flowcharts in the background
阅读更多 Flow-Based Programming 文章。