9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

AI 编程神器 Copilot 治好了我的精神内耗

  • 2022-09-16
    北京
  • 本文字数:2873 字

    阅读完需:约 9 分钟

AI编程神器Copilot治好了我的精神内耗

转眼间,AI 编程神器 Copilot 已经发布一年有余,这一年,Copilot 改变了什么?真的给开发者带来帮助了吗?


2021 年 6 月 30 日,微软旗下代码托管平台 GitHub 推出了名为 Copilot 的 AI 结对编程工具,Copilot 的主要定位是提供代码补全与建议功能,可根据当前文件的内容和光标位置自动生成代码。


据了解,Copilot 由 OpenAI 的 Codex 系统提供支持。据 Copilot 网站称,Codex 模型由“互联网上的公共代码和文本”训练,“既能理解编程,也能理解人类语言”。作为 Visual Studio Code 的扩展,Copilot “将你的评论和代码发送到 GitHub Copilot 服务,然后它会使用 OpenAI Codex 来合成并建议个别行和整个函数”。


作为一款 AI 编程神器,Copilot 从诞生之初就争议不断。


拥护者认为它确实可以提高生产力,反对者认为它写的代码错误率高,开发者还需要花费额外的时间做代码审查。有的争议焦点集中在 Copilot 是否涉及侵权上——毕竟 Copilot 宣称的基于公开代码训练,其实是在未遵循开源许可证的情况下,肆意“抄袭”开源代码。


在 Copilot 正式发布一年之际,GitHub 对 2000 多名开发者展开了调查,以期了解 Copilot 到底改变了什么?

Copilot 大调研


结合调查与实验,GitHub 整理出一份 Copilot 在开发者群体中实际影响力的结论性资料。


GitHub 研究员 Eirini Kalliamvakou 在一篇博文中提到:由于 AI 辅助开发还是个相对较新的领域,作为研究人员,我们几乎找不到可供借鉴的早期成果。我们希望衡量 GitHub Copilot 的实际效果如何,而且在早期观察和用户采访之后,我们决定对 2000 多名开发者进行大规模调查,了解他们的使用体验和感受。


在设计研究方法时,我们主要考虑到以下三大重点:


  • 立足整体关注生产力。在 GitHub,我们喜欢广泛且可持续地考量开发者的生产力及相关影响因素。我们使用 SPACE 生产力框架选择需要调查的具体方向。

  • 考量来自开发者的第一手观点。我们开展了多轮研究,包括定性(认知)与定量(观察)数据,希望拼凑出可靠的真相。我们希望验证:(1)用户的实际体验,能否证实我们推断出的结论?(2)我们的定性反馈,是否同样适合更广大的用户群体?

  • 评估 GitHub Copilot 在日常开发场景中的效果。在设计研究方法时,我们特别注意覆盖专业开发人员,并围绕他们在工作日内面对的典型任务进行测试设计。最终的调查结果,既有意料之中的发现,也有意外惊喜。

开发者生产力确有提升


除了加快开发速度之外,Copilot 还能给程序员带来哪些额外帮助?


调查发现:


  • 开发者满意度有所提升。60% 至 75% 的用户表示,他们对现在的工作体验更满意,编码时的精神压力更小,而且 Copilot 能帮助他们更专注地达成令人满意的工作成效。

  • 缓解精神内耗。开发者们报告称,Copilot 能帮助他们稳步推进开发流程(73%),并在处理重复性任务期间降低精力消耗(87%)。 

速度也很重要


有近 90% 的开发者们表示,在使用 Copilot 时,他们完成任务,特别是重复性任务的速度更快了。这也符合 GitHub 在产品设计时做出的基本预期。


为了在实践中观察并量化这种提升效果,GitHub 组织了一场对照实验。两个受试小组(其中一组使用 Copilot)需要接受计时,核算用 JavaScript 编写 HTTP 服务器的平均用时。


实验发现:


  • 使用 Copilot 的小组完成任务的比例更高,为 78%,未使用 Copilot 的小组完成任务比例为 70%。

  • 更显著的区别在于,使用 Copilot 的开发者完成任务的速度明显更快,要比未使用 Copilot 的开发者快 55%。具体来看,使用 Copilot 的开发者完成此项任务的平均用时为 1 小时 11 分钟,而未使用 Copilot 的开发者平均用时达 2 小时 41 分钟。综上,该项调查和实验最终得出的结论是,“Copilot 有助于加快工作完成速度,帮助开发者减少精神内耗,以更加饱满的精神状态专注于工作内容,最终在自己的编码过程中找到更多乐趣。”



对于这一调查结果,有开发者留言表示支持: “使用 Copilot,我能尽量少把精力浪费在枯燥重复的工作身上。它点燃的灵感火花,让我感到编码过程更有趣、更高效了。”


GitHub 研究员 Eirini Kalliamvakou 表示,“随着 Copilot 的出现,我们在 AI 驱动型代码补全工具的探索道路上不再是孤军奋战。在实际生产领域,我们最近看到一项针对 24 名学生的评估,谷歌也在内部评估利用机器学习增强代码补全的可能性。


着眼于整个行业,研究社区正认真分析 GitHub Copilot 在各类场景下的实际影响,包括教育、安全、劳动力市场,乃至开发者的实践与行为。我们目前正在各类环境下观察 Copilot 的实际效果。这是个不断发展的领域,我们对研究社区和自身调查中的发现感到振奋,也将未来几个月内为大家揭晓更多消息。”

为什么 Copilot 会编写出糟糕的代码?


GitHub 的调研结果展现了 Copilot 在开发者群里中起到积极作用的一面,但任何事物都有其两面性,Copilot 本身带有的争议也不容忽视。开发者在决定是否采用 Copilot 前,需要对其有充分的了解。


其中,Copilot 比较大的一个争议点在于代码错误率高


Copilot 由名为 Codex 的深度神经网络语言模型提供支持,该模型在 GitHub 上的公共代码存储库上进行了训练。它读取了 GitHub 的整个公共代码档案,其中包含数千万个存储库,汇聚了来自许多世界上最优秀程序员的代码。


那么,为什么 Copilot 还是会编写出糟糕的代码呢?


根据 OpenAI 的论文,Codex 只有 29% 的时间会给出正确答案。而且它编写的代码往往重构得很差,无法充分利用现有的解决方案(即使这些方案就在 Python 的标准库中)。


Copilot 编写出糟糕的代码,原因在于语言模型的工作机制。它们反映的是大多数人的平均写作水平。它们不知道什么是正确的,什么是好的写法。GitHub 上的大多数代码(根据软件标准)相当陈旧,并且(根据定义)是由水平一般的程序员编写的。


Copilot 尽力猜测的是,如果这些程序员正在编写的是你面对的这些文件,他们可能会写什么代码。OpenAI 在他们的 Codex 论文中讨论了这一点:


“与其他训练目标是预测下一个词符的大型语言模型一样,Codex 会生成与其训练分布尽可能相似的代码。这样做的一个后果是,这种模型可能会做一些对用户无益的事情”


Copilot 之所以比那些水平一般的程序员更糟糕,一个关键问题在于,它甚至没有尝试编译代码或检查代码是否有效,也没有考虑过自己是否真的遵循了文档的指示。此外,Codex 没有接受过去一两年内创建代码的训练,因此它完全没学过最新版本、库和语言特性。例如,提示它创建 fastai 代码后,它只会给出使用 v1 API 的建议,而不是大约一年前发布的 v2 版本。


值得一提的是,今年 4 月,微软推出了 AI 代码审查工具 Jigsaw,以期进一步提升 AI 编码的准确率。


在研究论文《Jigsaw:当大型语言模型牵手程序综合》(Jigsaw: Large Language Models meet Program Synthesis,文章已被国际软件工程会议 ICSE 2022 接收)中,微软介绍了一种可以提高这类大型语言模型性能的新工具。Jigsaw 中包含可以理解程序语法及语义的后处理技术,可利用用户的反馈不断提升修正能力。配合多模输入,Jigsaw 即可为 Python Pandas API 合成代码。


随着 Jigsaw 逐步在提高系统准确性方面发挥重要作用,Copilot 这类 AI 编程工具准确率或将获得提升。

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2022-09-16 14:087060

评论

发布
暂无评论
发现更多内容

Spring系列之IOC容器初始化过程十

Disaster

spring ioc

打造繁荣社区:Solaris 与 Web3 合作的力量

鳄鱼视界

微服务之服务容错

Disaster

微服务

微服务之流量控制

Disaster

微服务

《Klustron Tech Talk》直播选题有奖问卷调查,获MySQL系列丛书

KunlunBase昆仑数据库

MySQL

spring系列之IOC容器实例化过程四

Disaster

spring ioc

Spring系列之AOP工作过程详解一

Disaster

spring

微服务之事务处理

Disaster

微服务

spring系列之IOC容器结构

Disaster

spring ioc

真心牛x,阿里出品2023最新版Spring全家桶进阶笔记流出,堪称Java程序员跳槽神器

程序员小毕

spring 程序员 springboot SpringCloud java面试

Spring系列之IOC容器的实例化过程一

Disaster

spring ioc

spring系列之IOC容器实例化过程二

Disaster

spring ioc

艾媒金榜|2023年中国信创数据库企业TOP15

亚信AntDB数据库

数据库 AntDB AntDB数据库

微服务系列之微服务架构

Disaster

微服务

打造繁荣社区:Solaris 与 Web3 合作的力量

股市老人

数据可视化:趋势类可视化图表大全

2D3D前端可视化开发

数据分析 数据可视化 数据可视化工具 可视化图表

微服务之异步消息通信

Disaster

微服务

spring系列之IOC容器实例化过程三

Disaster

spring ioc

微服务系列之初探“微服务架构”

Disaster

微服务

焱融科技入选赛迪 2022 中国分布式存储报告挑战者象限

焱融科技

#高性能 #分布式文件存储 #文件存储

Spring系列之IOC容器实例化过程六

Disaster

spring ioc

Spring系列之IOC容器的初始化过程九

Disaster

spring ioc

如何将数据从旧电脑传输到新电脑,哪种文件传输方式更好

镭速

TiDB x Bolt丨超强可扩展性与弹性助力超 1 亿用户畅享出行服务

PingCAP

MySQL 数据库 TiDB

微服务系列之远程服务调用

Disaster

微服务

spring系列之IOC容器实例化过程五

Disaster

spring ioc

Spring系列之IOC容器初始化八

Disaster

spring ioc

Spring系列之AOP工作过程详解二

Disaster

spring

软件测试/测试开发丨Selenium环境安装与使用

测试人

程序员 软件测试 自动化测试 测试开发 selenium

23种设计模式详解

Disaster

设计模式

Spring系列之IOC容器实例化过程七

Disaster

spring ioc

  • 扫码添加小助手
    领取最新资料包
AI编程神器Copilot治好了我的精神内耗_语言 & 开发_凌敏_InfoQ精选文章