谷歌公开自家「AI+软件工程」框架DIDACT:数千名开发者内部测试,用了都说生产力高
任何一个大型软件都不是一开始就构思完善的,而是通过开发人员的一次次改进、编辑、单元测试、修复构建错误、解决代码审查,再循环解决问题,直到满足上线需求后才能把代码合并到仓库中。
控制整个过程的学问就叫做软件工程。
软件工程并非一个独立的过程,而是由开发人员、代码审查员、错误报告员、软件架构师和各种开发工具(如编译器、单元测试、连接器、静态分析器)之间的交流组成。
最近,Google公布了自家的DIDACT(Dynamic Integrated Developer ACTivity,动态集成开发人员活动)框架,用AI技术增强软件工程,将软件开发的中间状态作为训练数据,辅助开发人员编写、修改代码,并实时了解软件开发的动态。
DIDACT是一个多任务模型,在编辑、调试、修复和代码审查在内的开发活动上进行训练
研究人员在内部构建并部署了三个DIDACT工具,注释解析、构建修复和提示预测,每个工具都集成在开发工作流程的不同阶段。
软件工程=交互日志
几十年以来,Google的软件工程工具链都是将与代码相关的每个操作都存储为工具和开发人员之间的交互日志。
原则上,用户可以使用这些记录来详细重放软件开发过程中的关键变更过程,即Google的代码库是如何形成的,包括每一次的代码编辑、编译、注释、变量重命名等。
Google的开发团队会将代码存放于monorepo(单仓库,mono repository)中,即包含所有工具和系统的代码存储库。
软件开发人员通常在云中客户端(Clients in the Cloud, CitC)系统管理的本地写时复制(copy-on-write)工作空间中对代码修改进行实验。
当开发者准备好将一组代码变更打包在一起实现某个任务时(比如修复某个bug),需要在Google的代码审查系统Critique中创建了一个变更列表(changelist, CL)。
与常用的代码评审系统一样,开发人员与同行评审者会就功能和风格进行交流,然后编辑CL以解决评审注释时提出的问题。
最终,审查员宣布代码“LGTM!”后合并CL到代码库中。
当然,除了与代码评审员的对话之外,开发人员还需要维护大量与其他软件工程工具的「对话」,包括编译器、测试框架、链接器、静态分析器、模糊测试工具等。
软件开发中涉及的复杂活动网络的说明:开发人员的活动、与代码评审员的交互以及对编译器等工具的调用。
软件工程中的多任务模型
DIDACT利用工程师和工具之间的交互对机器学习模型赋能,通过建议或优化开发人员在执行软件工程任务时的行动,来辅助Google开发人员参与软件工程过程。
为此,研究人员定义了一些关于单个开发人员活动的任务:修复损坏的构建、预测代码审查注释、处理代码审查注释、重命名变量、编辑文件等。
然后为每个活动定义一个通用的形式:获取某个State(代码文件)、某个Intent(特定于某个活动的注释,例如代码评审注释或编译器错误),并生成一个Action(用于处理任务的操作)。
其中Action就像一个迷你编程语言,可以扩展为新添加的活动,涵盖了编辑、添加注释、重命名变量、标记代码错误等内容,也可以称这种语言为DevScript。
DIDACT模型的输入提示为任务、代码片段和与该任务相关的注释,输出为开发动作,如编辑或评论
状态-意图-行动(State-Intent-Action)的定义形式能够以通用的方式捕捉不同的任务,更重要的是,DevScript可以简洁地表达复杂动作,不需要像动作发生后那样输出整个状态(原始代码),使得模型更有效且更可解释。
比如重命名可能会修改代码文件中的多处地方,但模型只需要预测一个重命名操作即可。
给AI模型配个程序员
DIDACT在个人辅助任务上运行得非常好,比如下面的例子中演示了DIDACT在功能完成后的代码清理工作,先输入代码审查员的最终注释(图片中标记为human),然后预测解决注释中提出问题所需要的操作(用diff展现)。
给定代码的初始片段和代码审查员附加到代码片段的注释,DIDACT的Pre-Submit Cleanup任务生成处理这些注释的编辑操作(文本的插入和删除)
DIDACT的多模态性质也产生了一些随规模增大而涌现出的全新行为,其中一种能力是历史增强(history augmentation),可以经由提示来启用这种能力,了解开发人员最近做了什么可以让模型更好地预测开发人员下一步应该做什么。
历史增强代码补全的演示
历史增强代码补全任务可以展现这种能力,上图的例子中,开发人员添加了一个新的函数参数(1),并将光标移动到文档中(2)。根据开发人员的编辑历史和光标位置,模型能够准确预测新参数的文档字符串条目并完成第三步。
在难度更大的历史增强编辑预测任务中,模型能够以历史一致的方式选择下一步编辑的位置。
在多个链式迭代上的编辑预测的演示
如果开发人员删除了函数参数(1),则模型可以根据历史正确地预测对删除参数的文档字符串(2)的更新(而无需人类开发人员手动地将光标放置在那里),并且在语法上(也可以说是语义上)正确地更新函数(3)中的语句。
有了历史后,模型可以明确地决定如何正确地继续「编辑代码过程」,而如果没有历史记录,模型就无法知道丢失的函数参数是故意的(因为开发人员正在进行更长的编辑操作以删除参数)还是意外情况(模型应该重新添加参数以修复问题)。
除此之外,模型还可以完成更多的任务,比如从一个空白文件开始,要求模型连续预测接下来的编辑操作,直到编写出一个完整的代码文件。
最重要的是,该模型能够以一种对开发人员来说很自然的、循序渐进的方式辅助编写代码:
首先创建了一个具有导入、标志和基本main函数的完整工作框架;然后再逐步添加新功能,例如从文件中阅读和写入结果,并添加基于用户提供的正则表达式来过滤某些行的功能。
结论
DIDACT将Google的软件开发过程转变为机器学习开发人员助理的训练演示,并使用这些演示数据来训练模型,以循序渐进的方式构建代码,与工具和代码审查人员交互。
DIDACT方法补充了Google和其他公司的大型语言模型所取得的巨大成就,可以减少工作量,提高生产力,并提高软件工程师的工作质量。
以上是谷歌公开自家「AI+软件工程」框架DIDACT:数千名开发者内部测试,用了都说生产力高的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

十大虚拟币交易app排名:1. OKX,2. Binance,3. Gate.io,4. Kraken,5. Huobi,6. Coinbase,7. KuCoin,8. Crypto.com,9. Bitfinex,10. Gemini。选择平台时应考虑安全性、流动性、手续费、币种选择、用户界面和客户支持。

2025年欧易OKX注册入口预测及安全指南:提前了解未来注册流程,把握数字资产交易先机!本文预测2025年欧易OKX注册将强化KYC认证、实行区域化注册流程,并加强安全措施,例如多因素身份验证和设备指纹识别。 为确保安全注册,请务必通过官方渠道访问网站,设置强密码,启用双重验证,并警惕钓鱼网站和邮件。 提前了解注册流程,防范风险,才能在未来数字资产交易中占据优势。 立即阅读,掌握2025年欧易OKX注册秘诀!

十大虚拟币正规交易app:1. OKX,2. Binance,3. Gate.io,4. Kraken,5. Huobi,6. Coinbase,7. KuCoin,8. Crypto.com,9. Bitfinex,10. Gemini。选择平台时应考虑安全性、流动性、手续费、币种选择、用户界面和客户支持。

十大虚拟币交易平台app排名:1. OKX,2. Binance,3. Gate.io,4. Kraken,5. Huobi,6. Coinbase,7. KuCoin,8. Crypto.com,9. Bitfinex,10. Gemini。选择平台时应考虑安全性、流动性、手续费、币种选择、用户界面和客户支持。

本文提供Binance币安注册及安全设置的完整指南,涵盖注册前的准备工作(包括设备、邮箱、手机号及身份证明文件准备),详细介绍了官网及APP两种注册方式,以及不同级别的身份验证(KYC)流程。此外,文章还重点讲解了如何设置资金密码、开启双重验证(2FA,包括谷歌身份验证器和短信验证)以及设置防钓鱼码等关键安全步骤,帮助用户安全便捷地注册和使用Binance币安平台进行加密货币交易。 请务必在交易前了解相关法律法规及市场风险,谨慎投资。

十大虚拟币交易平台app推荐:1. OKX,2. Binance,3. Gate.io,4. Kraken,5. Huobi,6. Coinbase,7. KuCoin,8. Crypto.com,9. Bitfinex,10. Gemini。选择平台时应考虑安全性、流动性、手续费、币种选择、用户界面和客户支持。

本文盘点了十大值得推荐的虚拟币交易App,包括OKX、Binance、Gate.io、Kraken、Huobi、Coinbase、KuCoin、Crypto.com、Bitfinex和Gemini,排名不分先后。 这些平台在流动性、安全性、币种选择、手续费及用户体验等方面各有优势,例如OKX以其强大的流动性和便捷的用户界面着称,Binance则以全球最大的交易量和丰富的学习资源见长,Gate.io则以低手续费和丰富的币种选择吸引用户。选择虚拟币交易平台需考虑安全性、流动性、手续费、币种选择、用

本文深入对比分析了币安、欧易和芝麻开门三大交易所的网格交易功能,旨在帮助投资者选择最合适的平台。网格交易是一种自动化交易策略,通过在预设价格区间内低买高卖来获取利润,适合震荡行情。文章详细介绍了网格交易的优势、风险及优秀网格交易软件应具备的功能,并对上述三家交易所的网格交易功能进行了全面评测,包括功能、易用性、回测功能等,最终提供针对不同交易经验和风险偏好的用户选择建议,助您找到最合适的网格交易工具。
