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

相关文章
|
1月前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1426 4
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
17天前
|
人工智能 开发者
|
3天前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI:机器学习的魔法与代码
【10月更文挑战第33天】本文将带你走进AI的世界,了解机器学习的原理和应用。我们将通过Python代码示例,展示如何实现一个简单的线性回归模型。无论你是AI新手还是有经验的开发者,这篇文章都会给你带来新的启示。让我们一起探索AI的奥秘吧!
|
30天前
|
人工智能 IDE Java
AI 代码工具大揭秘:提高编程效率的必备神器!
【10月更文挑战第1天】近年来,人工智能得到了迅猛的发展,并在各行各业都得到了广泛应用。尤其是近两年来,AI开发工具逐渐成为开发者们的新宠,其中 GitHub Copilot 更是引发了无限可能性的探索。
91 9
AI 代码工具大揭秘:提高编程效率的必备神器!
|
4天前
|
人工智能 算法 程序员
程序员如何借势AI提高自己:从高效工作到技能升级的全面指南
【11月更文挑战第4天】程序员可以通过以下几个方面借势 AI 提升自己:1. 日常工作效率提升,包括智能代码编写与补全、自动化测试与调试、项目管理与协作;2. 技能学习与升级,涵盖基础知识学习和深入技术研究;3. 思维拓展与创新能力培养,激发创意灵感和培养批判性思维。
|
21天前
|
人工智能
|
15天前
|
人工智能 机器人 API
【通义】AI视界|谷歌Q3财报:Gemini API六个月增长14倍,公司超25%的新代码由AI生成
本文内容由通义自动生成,涵盖谷歌Q3财报、马斯克xAI融资、九巨头联盟挑战英伟达、Meta加大AI投入及麻省理工研究LLM与人脑相似性等热点资讯。更多精彩内容,请访问通通知道。
|
18天前
|
Serverless 数据安全/隐私保护 前端开发
大模型代码能力体验报告之贪吃蛇小游戏《一》:Claude.ai篇 - 生成、预览和快速部署的serverless一条龙
本文介绍了通过Claude.ai生成并优化Web版贪吃蛇游戏的过程,展示了其强大的代码生成功能及用户友好的界面设计。从初始版本的快速生成到根据用户反馈调整游戏速度,再到提供多种实用工具如文件管理、版本控制和一键部署,Claude.ai不仅是一个代码助手,更像是一个全面的serverless开发平台。文中还呼吁国内厂商关注此类技术的发展。
|
1月前
|
消息中间件 人工智能 Cloud Native
|
24天前
|
人工智能 算法 数据挖掘
AI心语:智能代码与人为艺术的融合
在这个数字时代,人工智能似乎无所不能。它下棋能赢过世界冠军,写文章可骗过编辑,甚至画画能展览于画廊。但AI真的懂得创作吗?还是它仅仅是高级的模仿者?本文将深入探讨AI在艺术创作中的角色,以及它对人类创造力的影响。

热门文章

最新文章

下一篇
无影云桌面