Github Copilot 真的好吗?
Github Copilot 真的好吗?
Source: github.blog
就上下文而言,在过去的 7 年里,我一直在断断续续地编码,其中 5.5 年是业余爱好,1.5 年是专业的。作为一名学生,我已经能够免费测试 Copilot,它也被集成到 VSCode ,所以我看不出有什么理由不去测试一下看看会发生什么。
坏的
Source: lukpedclub W via Vecteezy
1. 有点烦人
基本上,把 Copilot 想象成课堂上的孩子,在你弄明白之前就回答了这个问题。有时他们做错了,有时他们做对了,但无论哪种方式都很烦人。要么他们弄错了,打断了你的思考过程,要么把它弄对了,阻止你自己去解决它。
有时我一直在尝试处理一段代码,而 Copilot 不断推荐大量错误的代码,这让我偏离了轨道,我最终会愤怒地禁用 Copilot。
2. 错了……但不是大错特错。
这可以追溯到 2 ,但本质上,Copilot 会预测看起来几乎是正确的代码,但如果你仔细观察,你会发现它根本没有做正确的事情:
Source by 0xbad1dea via GitHub
比如,这段代码?令人讨厌的是,这看起来似乎是正确的,但实际上是错误的。 2021 年 6 月 2 日是一个逐渐减弱的隆起;这表示这将是一个新月。一个 纽约大学安全分析 说 Copilot 生成的 40% 的代码容易受到安全威胁,通过使用它,我同意它在生成大量代码时经常出错。
真正令人沮丧的是,检查所花费的时间不仅仅是自己直接编写代码。
3.安全多少?
如果您听说过有关 Copilot 的任何消息,那么您可能听说过围绕 安全 .我们知道,当我们公开存储库时,我们在一定程度上失去了对代码的控制,从技术上讲,Copilot 属于 有点灰色地带 ,但有趣的是,在某些情况下,它是如何做到的 复制逐字代码 已经存在。前任。逐字逐句地为 Dart repo 编写许可协议的一部分:
Source by Author
我们是否应该将它与私有的、潜在机密的存储库一起使用? 可能不是。 条款和条件的措辞似乎故意含糊不清,尽管您显然可以使用自己的代码来禁用 GitHub 来训练其模型,但我注意到它完全重复了我在其他项目中提到的某些单词、短语和组织新项目,尽管这似乎不是一个常见问题。
虽然我没有声称知道微软的意图,但在我看来,他们提供如此长的免费试用期(60 天)似乎有点危险。这似乎表明,在 Copilot 的早期阶段让大量用户收集数据比拥有付费客户更重要。
如果您对此感兴趣,从 2022 年 10 月 11 日至 13 日,将有一个 虚拟会议 由开源倡议 (OSI) 举办,关于此类项目的道德后果。
4.不必要的东西
因为它是在依赖大型框架的大型现有项目上训练的,所以有时它会 建议使用不需要解决问题的大型框架 .
好的
- 学习一门语言非常棒。
我是一个全栈类型的编码器(NodeJS、HTML/CSS/JS 等)。我在 C++ 和 Java 方面做了一些工作,但除此之外,我还没有真正在其他语言中进行过太多实验。然后 艰辛 出现并给了我一个开始学习 Rust 的理由。 Rust 是一门很棒的语言,但是 Copilot 在用 Rust 编写东西方面的出色表现让它变得容易多了。
不知道如何用 Rust 编写向量?没问题,副驾驶有你。不知道如何制作 TCP 套接字?副驾驶知道该怎么做。
不要误会我的意思,阅读文档对于学习如何以正确的方式做事很有帮助,但是当你完全是一门语言的新手并且不得不查找时,有时甚至很难弄清楚要查找的内容对每一行代码做什么并不理想。尽管 Copilot 会犯错误,但它的基础知识(创建变量、推送到列表等)几乎没有,这使它成为一个很棒的小学习助手。
2. 真的很好。
不要误会我的意思。在看过“The Bad”之后,Copilot 似乎是一个可怕的侵犯版权的垃圾,它获取了一些公共代码并将它们拼凑在一起。在定期测试 Copilot 3 个月后,我认为它很有帮助……适度。它擅长找出小而通用的东西,例如发送 HTTP 请求或创建 UDP 客户端。它也非常擅长 注释代码 .当你开始尝试让它做一些实际上只需要手工完成的大事情时,问题几乎总是会出现。 这个 0xbad1dea 的文章显示了 Copilot 的一些严重缺陷。
结束的想法
根据我自己的经验和我读过的其他文章,我认为 Copilot 很好,但不是很好。当你第一次开始使用它时,肯定会有一个“哇!”你想知道的那一刻, 这到底是怎么做到的? 然后你仔细看,发现它推荐的代码有很多错误。我还发现如果我停下来思考一下,我会得到一个建议,这真的很让人分心。
有趣的是,随着 Copilot 被更频繁地使用,它将接受它生成的代码的训练,这可能会导致一些有趣的问题。
归根结底,在强烈反对 Copilot 和想要一直使用它的人中,我会说我处于中间位置;我可能会继续使用它作为学习工具,并作为编写我自己理解的小段代码的一种方式。除此之外,我发现调试 Copilot 创建的问题比实际编写代码要花费更多时间。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明