18910140161

AI自动生成代码原来还包括“WTF”注释吗?程序员:我笑了 抄得太清楚了

顺晟科技

2021-07-05 10:20:26

360

声明:“本文由机器之心(微信公众号:almosthuman2014)转载,作者:Synced禁止第二次转载”。

如果直接复制并粘贴培训集中的代码,原来的注释和一个字都不会错。AI的“复制能力”已获得批准。

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

Copilot公布后,很多网民高喊代码补充效果“震惊”,给予了很高的评价。但是没过几天,一些实验者发现新的问题:Copilot使用的开放源代码数据集可能会被侵犯。本来只是猜测,但就在10多个小时前,一位网民揭露了Copilot复制粘贴代码的失望值。就像在移动数十秒的画面中推翻了Copilot的“基本”形象一样。

图片

“我什么话也不说,但是Copilot,这不太好。”发现AI复制代码的程序员Armin Ronacher来自奥地利。

Copilot原封不动地复制了经典射击游戏《雷神之锤》的代码,并加上了“What the F * * K”等吐槽注释。

复制的代码:3359 github.com/id-software/quake-iii-arena/blob/DBE 4 DDB 10315479 fc 00086 f08 e 25 d968 b4b 4b

图片

AI生成代码:

图片

一位网民评论说,GitHub的Copilot迅速登上了当年微软AI聊天机器人Tay的老路(GitHub于2018年被微软收购)。

看来GitHub并不像原来说的那么简单。

AI敲代码,双刃剑

GitHub Copilot是微软、OpenAI和GitHub的三个联合代码生成工具,支持Openai Codex(Openai开发的新AI系统),并接受了数十亿行公共代码的培训。主要功能包括仅支持Python、JavaScript、TypeScript、Ruby和Go语言的完成函数代码,以及在注释中生成代码。

目前,Copilot以技术预览形式发布,用户可以在主页上注册,也可以访问。

图片

GitHub Copilot注册地址:3359 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许可版本中,也包含在维基百科的项目中,可能不构成侵权。

图片

这个的原始函数也是公元3360 《雷神之锤3》是20世纪90年代的经典游戏。这个系列不仅画面和内容(当时)上等,更重要的是,即使电脑配置低,也能顺利运行。这得益于3D引擎的开发者John Carmack。

这个游戏三维引擎的数学运算经过了仔细的编写,在game/code/q_math.c中,这个代码的作用是平方一个数字,然后反过来。此代码比使用系统特有的sqrt函数反转(float) (1.0/sqrt)

其中神秘数字0x5f3759df效果很大,但很少人能明确说出原因。虽然不能理解,但有效的神奇数字经常被称为magic number。从WTF的注释来看,当初审查的程序员可能也不明白。

以后还有论文解释这个常数33603358 www . matrix 67.com/data/invsqrt . pdf

Quake3的平方根开放算法向游戏公司公开,但我们不知道AI还会参考什么代码。(威廉莎士比亚,北上广深)。

有些人看不到: "这个工具的意义。生成有效代码并不是人类开发者的瓶颈。代码输入速度不快,没有失败的项目。”实际瓶颈是了解代码的工作方式、正确的设计方法、如何根据现有设计进行更改、如何解决现有代码问题等。这个工具不能使任何东西变得更容易,也能使事情变得更难。因为现在你运行的软件不是任何人写的,没有人完全理解它。(约翰肯尼迪,电脑名言)\ "

图片

当然,代码编写速度不是瓶颈,但有减少代码重复编写的工具总是一件好事。(威廉莎士比亚、代码、代码、代码、代码、代码、代码、代码)但是,对企业开发者来说,在发布代码之前,代码检查工作可能会有点困难。

代码自动化编写一直是人们想要实现的目标,也是AI领域努力的方向。(威廉莎士比亚、代码自动化、代码自动化、代码自动化、代码自动化、代码自动化、代码自动化、代码自动化)但是,代码自动化在难度和版权分割上比其他自动化任务更复杂。Copilot无疑为代码自动生成带来了新的希望,但要完全实现自动编程还有很长的路要走。

内容见:

https://Twitter.com/mitsu hiko/status/1410886329924194309

https://news.ycombinator.com/item?Id=27710287

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航