AI自动生成的代码还自带原来的「WTF」注释?程序员:我笑了,抄的太明显

简介: 直接复制粘贴训练集里的代码,原来的注释也一字不差。AI 的「抄能力」获得了认可。

本周 GitHub 发布的 AI 代码合成器 GitHub Copilot,是科技界备受关注的话题。传统 IDE 通常使用搜索引擎的方法补全代码,而这个代码神器 Copilot,据说提出的绝大多数代码建议都是全新生成的。


Copilot 发布后,许多网友惊呼代码补全效果「令人震惊」,给出极高的评价。但没过几天,一些试用者就发现了新的问题:Copilot 使用的开源代码数据集可能侵权。原本只是猜测,而就在十几个小时前,有网友曝出了 Copilot 复制粘贴代码的实锤,似乎在一张几十秒的动图里把 Copilot 的「原生」形象推翻了。


微信图片_20211205190702.png


「我啥也不说了,但 Copilot,这可不太行。」发现 AI 照抄代码的程序员 Armin Ronacher 来自奥地利。


Copilot 原样复制了经典射击游戏《雷神之锤》里的代码,而且还带着吐槽注释,比如「What the f**k」……


被复制的代码:https://github.com/id-Software/Quake-III-Arena/blob/dbe4ddb10315479fc00086f08e25d968b4b43c49/code/game/q_math.c#L552


微信图片_20211205190705.jpg


AI 生成的代码:


微信图片_20211205190708.gif


有网友评论道,GitHub 的 Copilot 很快就走上了当年微软 AI 聊天机器人 Tay 的老路(GitHub 在 2018 年被微软收购了)。


看起来事情并没有 GitHub 原先所说的那么简单。


AI 敲代码,一把双刃剑


作为微软、OpenAI、GitHub 三家联合打造的代码生成工具,GitHub Copilot 由 OpenAI 开发的全新 AI 系统 OpenAI Codex 提供支持,并在数十亿行公共代码上经过了训练。它的主要功能包括补全函数代码、根据注释生成代码等,暂仅支持 Python、JavaScript、TypeScript、Ruby 和 Go 语言。


目前 Copilot 发布的还是技术预览版,用户可以在主页注册报名,将有机会访问使用。


微信图片_20211205190710.png


GitHub Copilot 注册地址:https://github.com/features/copilot/signup


OpenAI Codex 在人们如何使用代码方面拥有广泛的知识,并且在代码生成领域显著优于 GPT-3,这得益于 Codex 的训练集中包含提取自 GitHub 的 TB(terabyte)级公开可用代码以及英语语言示例。


但自发布以来,关于 Copilot 的代码训练集的版权问题就一直存在争议,加之 Copilot 基于的算法模型 Codex 目前公开的信息不多,一时间「Copilot 是否涉及侵权」成为人们讨论的焦点。


有人开始思考,既然 GitHub 是一家微软旗下公司,OpenAI 也从微软那里拿了 10 亿巨额投资。那么,Copilot 是使用微软内部源代码训练的吗?或者未来将会如此?它会不会偶尔吐出一些 Windows 内核代码?


试想,等到 Copilot 添加了对 C++ 的支持,然后有人就会使用其编写具备 Win32 兼容 API 的操作系统,鉴于 GitHub 平台上有大量泄露的 Windows 源代码,因此 Copilot 肯定在这个过程生成很多代码。最终,微软是否会认为使用他们的 AI 生成的代码侵犯了他们的版权?


减负还是添堵?


类似的担心广泛存在,如果 Copilot 生成的代码是「复制」自其他项目的代码,那么使用它的开发者也无法得知自己编写的代码段落是否受版权保护。这就像一个定时炸弹。


假如开发者未能及时发现代码中的问题,最终惹来麻烦,似乎责任也应该由 Copilot 承担?因为代码是其衍生品。更糟糕的是,作为使用者,我们即使想要去遵守什么代码使用许可,似乎也无从切入。


至于被「复制粘贴」的那段代码,有人发现这段是最初的 GPL 许可版本中的,也包含在维基百科的词条内容中,因此或许不构成侵权。


微信图片_20211205190712.png


这段著名的原始函数也有一段来历:《雷神之锤 3》是 20 世纪 90 年代的经典游戏。该系列不但画面和内容(在当时)属于上乘,更难能可贵的是即使你的计算机配置较低,也能流畅地运行。这要归功于它 3D 引擎的开发者 John Carmack。


这款游戏 3D 引擎中的数学运算经历了精心的编写,在 game/code/q_math.c 中,上述这段代码的作用是将一个数开平方并取倒,经测试这段代码比用系统自带 sqrt 函数求倒 (float)(1.0/sqrt(x)) 快 4 倍。


其中神秘的数字 0x5f3759df 作用很大,但很少有人能够说清楚它的来由,这类无法理解但却有效的神奇数字经常被称为 magic number。从「WTF」的注释上来看,当初审阅的程序员恐怕也没有弄明白。


后来还有一篇论文解释了这个常数:http://www.matrix67.com/data/InvSqrt.pdf

虽然 Quake 3 的开平方根算法已被游戏公司公开了,但我们保不齐 AI 还会借鉴哪些代码。


有人说:「我看不到这个工具的意义,生成有效代码从来不是人类开发者的瓶颈,没有一个项目是因为代码输入速度不够快而失败的。真正的瓶颈在于理解代码如何工作、如何正确设计、如何根据现有设计进行更改、如何对现有代码进行故障排除等。这个工具不会让任何事情变得更容易,而且让事情变得更难了,因为现在你运行的软件不是由任何人编写的,没有人完全理解它。」


微信图片_20211205190715.png


当然,写代码的速度确实不算瓶颈,不过有一个减少重复编写代码的工具总归是好事。但对于企业开发者来说,发布代码之前的检查代码工作,可能要略微繁重了。

编写代码自动化一直是人们期望达成的目标,也是 AI 领域努力实现的方向。但相比于其他自动化任务,代码的自动化在实现难度和版权划分上都更加繁琐复杂。


Copilot 无疑给代码自动生成带来了新的希望,但完全实现自动化编程还有很长的路要走。


参考内容:


https://twitter.com/mitsuhiko/status/1410886329924194309https://news.ycombinator.com/item?id=27710287

相关文章
|
2月前
|
人工智能 IDE Java
AI Coding实践:CodeFuse + prompt 从系分到代码
在蚂蚁国际信贷业务系统建设过程中,技术团队始终面临双重考验:一方面需应对日益加速的需求迭代周期,满足严苛的代码质量规范与金融安全合规要求;另一方面,跨地域研发团队的协同效率与代码标准统一性,在传统开发模式下逐渐显现瓶颈。为突破效率制约、提升交付质量,我们积极探索人工智能辅助代码生成技术(AI Coding)的应用实践。本文基于蚂蚁国际信贷技术团队近期的实际项目经验,梳理AI辅助开发在金融级系统快速迭代场景中的实施要点并分享阶段性实践心得。
555 25
AI Coding实践:CodeFuse + prompt 从系分到代码
|
2月前
|
人工智能 自然语言处理 安全
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
AI兴起催生“氛围编程”——用自然语言生成代码,看似高效实则陷阱。它让人跳过编程基本功,沦为只会提示、不懂原理的“中间商”。真实案例显示,此类项目易崩溃、难维护,安全漏洞频出。AI是技能倍增器,非替代品;真正强大的开发者,永远是那些基础扎实、能独立解决问题的人。
236 11
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
|
2月前
|
人工智能 机器人 测试技术
AI写的代码为何金玉其外败絮其中
本文分析AI编码看着好看其实很烂的现象、原因,探索行之有效的的解决方案。并从理论上延伸到如何更好的与AI协作的方式上。
108 3
|
2月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
1628 38
|
2月前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
539 24
|
2月前
|
人工智能 算法 架构师
AI时代程序员的生存与突围从需求分析开始
AI能3秒生成代码框架,还要程序员干什么?
374 9
|
2月前
|
数据采集 人工智能 程序员
PHP 程序员如何为 AI 浏览器(如 ChatGPT Atlas)优化网站
OpenAI推出ChatGPT Atlas,标志AI浏览器新方向。虽未颠覆现有格局,但为开发者带来新机遇。PHP建站者需关注AI爬虫抓取特性,优化技术结构(如SSR、Schema标记)、提升内容可读性与语义清晰度,并考虑未来agent调用能力。通过robots.txt授权、结构化数据、内容集群与性能优化,提升网站在AI搜索中的可见性与引用机会,提前布局AI驱动的流量新格局。
147 8
|
2月前
|
数据采集 人工智能 JSON
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
|
机器学习/深度学习 人工智能 开发者
资源 | AI领域最优论文+代码查找神器:966个ML任务、8500+论文任君挑选!
查找论文及对应源码的神器 Papers With Code 刚刚推出了最新版本,可以用图形界面查找你想要的 SOTA 实现,从应用领域到具体任务再到实现代码一步到位。
|
2月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
583 40