
使用大型语言模型(LLMs)进行编程前景广阔,但这也暴露了软件中一些长期存在的缺陷:代码混乱、难以安全修改,而且往往对其内部的实际运行情况含糊不清。麻省理工学院计算机科学与人工智能实验室(CSAIL)的研究人员正在探索一条更具“模块化”的发展道路。
他们的新方法将系统分解为“概念”——系统中相互独立的部分,每个部分都被设计成能出色完成一项任务,以及“同步机制”——明确的规则,这些规则精确描述了这些部分如何组合在一起。其结果是软件更具模块化、透明度更高且更易于理解。一种小型的领域特定语言(DSL)使得以简单的形式表达同步机制成为可能,而这种形式是大语言模型(LLMs)能够可靠生成的。在一项真实世界的案例研究中,该团队展示了这种方法如何整合那些原本会分散在多个服务中的功能。
该团队成员包括麻省理工学院电气工程与计算机科学(EECS)教授、计算机科学与人工智能实验室(CSAIL)副主任丹尼尔·杰克逊,以及EECS博士生、CSAIL附属成员、新同步领域特定语言(DSL)的设计者伊根·孟。他们在10月于新加坡举行的Splash会议上发表了题为《所见即所得:清晰软件的结构模式》的论文,探讨了这种方法。他们解释说,挑战在于,在大多数现代系统中,单一功能从来都不是完全独立的。例如,在Instagram等社交平台上添加一个“分享”按钮,其功能并不只存在于一个服务中。它的功能分散在处理发布、通知、用户认证等的代码中。所有这些部分尽管分散在代码的不同位置,但必须仔细对齐,任何改动都可能在其他地方引发意想不到的副作用。
杰克逊将此称为“功能碎片化”,这是软件可靠性的一个核心障碍。杰克逊说:“我们如今构建软件的方式,功能并非本地化的。你想了解‘共享’是如何运作的,但却得在三四个不同的地方去寻找,而当你找到时,那些关联却隐藏在底层代码中。”
概念和同步机制旨在解决这一问题。一个概念整合了单一、连贯的功能片段,例如分享、点赞或关注,以及其状态和可执行的操作。而同步机制则在更高层面描述这些概念如何交互。开发者无需编写繁琐的底层集成代码,而是可以使用一种小型领域特定语言直接阐明这些关联。在这种领域特定语言中,规则简单明了:一个概念的操作可以触发另一个概念的操作,从而使一处状态的变化能够与另一处保持同步。
“可以将概念视为完全清晰且独立的模块。同步机制则如同契约——它们精确规定了概念之间应如何交互。这很强大,因为它既让人类更容易理解系统,也让像大语言模型这样的工具能更准确地生成(代码),”杰克逊说。“为什么我们不能像读一本书那样读代码呢?我们认为软件应该清晰易懂,并且要按照我们的理解来编写:我们希望概念能对应到我们熟悉的现象,而同步机制则能体现当这些概念结合在一起时会发生什么的直觉,”孟说。
这些好处不仅限于清晰性。由于同步是明确且声明式的,它们可以被大语言模型分析、验证,当然也可以由大语言模型生成。这为更安全、更自动化的软件开发打开了大门,在这种开发模式中,人工智能助手可以提出新功能,而不会引入隐藏的副作用。
在他们的案例研究中,研究人员将点赞、评论和分享等功能分别分配给一个单一概念——类似于微服务架构,但模块化程度更高。如果没有这种模式,这些功能会分散在许多服务中,导致难以定位和测试。通过采用“概念与同步”方法,每个功能都变得集中且清晰易懂,而同步机制则精确说明了这些概念之间的交互方式。
这项研究还展示了同步机制如何能够将错误处理、响应格式化或持久化存储等常见问题分离出来。无需在每个服务中嵌入这些细节,同步机制可以一次性处理它们,确保整个系统的一致性。
更先进的方向也是可能的。同步可以协调分布式系统,使不同服务器上的副本保持同步,或者允许共享数据库顺畅交互。弱化同步语义可以实现最终一致性,同时仍在架构层面保持清晰性。
杰克逊看到了软件开发领域发生更广泛文化转变的潜力。其中一个想法是创建“概念目录”,即经过充分测试的、特定领域概念的共享库。这样一来,应用程序开发可能不再那么侧重于从零开始拼凑代码,而更多地是选择合适的概念并编写它们之间的同步机制。“概念可以成为一种新型的高级编程语言,而同步机制则是用这种语言编写的程序。”
“这是一种让软件中的连接可见的方式,”杰克逊说。“如今,我们把这些连接隐藏在代码中。但如果你能清晰地看到它们,你就能在更高层面上对软件进行推理。你仍然需要应对功能交互带来的内在复杂性。但现在,这种复杂性是公开的,而不是分散和模糊的。”
“多年来,我们显然需要更好的方法来描述和明确我们希望软件做什么,”兰开斯特大学荣誉教授、华盛顿大学附属教师托马斯·鲍尔补充道,他也未参与这项研究。“大语言模型生成代码的能力只会进一步加剧对明确需求的迫切性。孟和杰克逊在概念设计方面的研究提供了一种很有前景的方法,能够以模块化的方式描述我们对软件的需求。他们提出的概念和规范非常适合与大语言模型相结合,从而实现设计者的意图。”
本研究部分由计算机科学与人工智能实验室联盟的机器学习应用(MLA)计划资助。在资助期间,该计划的董事会成员包括英国电信、思科以及安永。
852

被折叠的 条评论
为什么被折叠?



