自动写代码?别闹了!
大家好,我是良许。
这几天,GitHub 上有个很火的插件在抖音刷屏了——Copilot。
这个神器有啥用呢?简单来讲,它就是一款由人工智能打造的编程辅助工具。
我们来看看它有啥用。
首先就是代码补全功能,你只要给出函数名和参数,Copilot 就会自动帮你补全代码。

第二个功能,就是它可以根据注释来写代码。也就是说,你只要把注释写好,它就会自动帮你生成对应的代码,吓人吧~

除此之外,它还可以自动生成重复性代码、自动生成测试代码,同时也可以生成多套代码方案供你选择。
目前支持多种开发语言,包括 Python, JavaScript, TypeScript, Ruby, Java, Go等等,支持VS Code,Neovim,JetBrains 等 IDE。
目前还没有完全开放,处于邀请制状态。前几天我看到了这个插件并申请了,但是目前还没通过,所以想看演示的话大家可以上 B 站,很多大佬做了测评。
看到这个插件这么强大的功能,很多程序员已经吓傻了,这么强大,AI 都已经可以帮你写代码了,程序员是不是要下岗了?
但在我看来,这个插件目前还只是个高级的玩具而已。
1. 只是帮你百度一下
这个插件的本质是利用人工智能,通过开源社区里的大量代码进行训练,从而实现自动写代码的效果。
所以,对于通用性的代码,它的生成准确性还是比较高的。
比如,我们在写两个日期之间的天数,你写来写去,无非就是这样写(以 Python 为例):
def days(str1,str2):date1=datetime.datetime.strptime(str1[0:10],"%Y-%m-%d")date2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d")num=(date1-date2).daysreturn num
这种代码说白了其实没有多少创造性,写熟练了可能根本都不需要经过大脑,都形成肌肉记忆了,无非就是函数名、变量不太一样,其余的几乎都一样。
类似的,我们还有一些算法(比如冒泡排序)、工具(比如哈希校验),其实也都是重复性非常高的代码,它也可以帮你完成得很好。
重复性的工作,都有可能被替代的。
在这种情况下,Copilot 的作用就相当于帮你百度一下,然后再帮你 CV 一下。如果没有这个插件,我们一样也能做,只是花点时间而已。
2. 业务代码质量不高
Copilot 自己也承认,他们会尝试了解程序员的意图,并「尽可能」生成最好的代码,但生成的代码并不总是有效,有时甚至还没有意义。
毕竟训练集来自公共代码,良莠不齐,甚至完全没有意义。
这点在 B 站大神的测试下也得到了印证,有时候确实也生成了一堆不知所云的代码。
毕竟,我们的业务需求一直都是复杂多变的,有时我们自己都不太能实现一些功能需求,还指望机器帮你写?别太幻想了!
而且,它自动补全业务代码的前提是,你已经需要有一定的代码量供它参考,它才可以去猜测你接下来准备写什么。
也就是说,你还是需要写一些代码,有这些代码了它才会写得更准确一些。而且你提供的代码量越少,它的推荐就越不准确。
也有人说了,它会根据注释写代码啊。但是,实际上,注释你都写好了,你自己其实也已经差不多把代码都写好了。
再说了,程序员都知道,读别人的代码是一件很痛苦的事情,Copilot 帮你写好了代码,你敢直接就用吗?你阅读并理解它的代码的时间,也许自己早就写完了。
所以,你说它会完全帮你写代码吗?肯定不行,至少目前不会。就算能帮你写部分业务代码,也不一定写得好。
3. 有一定的安全问题
Copilot 它的原理就是利用大量的代码进行训练,样本越多自然就越准确。
那么问题来了,他们自己宣称这些样本是来自开源的社区,但你使用了它们的插件,你敢保证你写的代码不会成为他们的样本?
而且,如果它们生成的代码不合你的要求,你手动修改了,它更加理解了你的意图,这对 Copilot 的训练简直是神助啊,他们难道真的不会考虑利用一下使用者的免费劳动力?
凡是使用第三方插件,而且还是不开源的,谁都无法保证你的数据是否真的没有被泄漏出去。
自己练习的代码肯定是无所谓了,但是如果涉及到公司的商业机密,那就可能会有法律问题了。
而且,更可怕的是,Copilot 生成的代码,有 0.1% 的概率会原封不动复制训练集的样本。如果这些样本没版权也没事,但要是有版权,有可能也会吃官司。
之前已有新闻报道过,Copilot 原样复制了经典射击游戏《雷神之锤》里的代码,而这些代码是受法律保护的,使用者也因此受到了一些麻烦。
所以,现在不少公司已经明确规定,禁止使用 Copilot 插件!
4. 照相机的出现不会让画家下岗
照相机被发明出来的时候,曾经一度也有人开始唱衰画家这样的岗位。但时过境迁,这么多年过去了,画家的岗位消失了吗?不仅没消失,反而现在技术精湛的画家身价一涨再涨。
相机,只是把画家的一部分重复性工作取代了,比如画肖像、风景,等等。它只会机械地,一比一还原现实。而现在的画家,更多是作为艺术创作,这部分相机短时间内是无法取代的。
(现在也有 AI 艺术创作,但还很难说取代)
Copilot 何其不是这样的存在呢?我大胆预测,Copilot 只会取代部分基础的、重复性的编程工作,说它会让程序员下岗,我觉得这肯定是天大的笑话。
相机再智能,你也需要具备一定的美术、审美基础,才能拍出好看的照片。

同样的,Copilot 帮你写了一堆代码,你如果没有一定的编程基础的话,你连改都不会改。
5. 展望
我还是那句话,Copilot 的出现不会让程序员下岗,只会取代部分工作而已。
工具的出现只是会让我们从重复性的劳动中解放出来,从而让我们的大脑有更多时间思考。但思考和创作本身,很难被取代。
我个人是非常欢迎 Copilot 这样的工具出现,可以让我们减少很多不必要的工作。
作为程序员都知道,我们每天都需要花费很多时间在百度/谷歌上面,并且各种搬运轮子。这种工作就是机械的重复性工作,如果能有工具让我们从这样的工作中解放出来,肯定会为我们节约很多时间。
而且,Copilot 这个单词本身也明确了自己的定位,那就是「副驾驶」,人家已经很明确自己的位置,根本就没想着成为主驾驶。
所以,Copilot的出现,大家不要如临大敌,而是要合理利用工具,善于利用工具,让工具真正为我们所服务。
学习编程,千万不要急于求成,一定要多读一些经典书籍,多看源码,多下苦功夫去死磕代码,这样技术才能长进。给大家分享一些程序员必读经典书籍,一定要多读几遍:

有收获?希望老铁们来个三连击,给更多的人看到这篇文章
推荐阅读:
- 干货 | 程序员进阶架构师必备资源免费送
- 刷题 | LeetCode算法刷题神器,看完 BAT 随你挑!
欢迎关注我的博客:良许Linux教程网,满满都是干货!
相关文章:
自动写代码?别闹了!
大家好,我是良许。 这几天,GitHub 上有个很火的插件在抖音刷屏了——Copilot。 这个神器有啥用呢?简单来讲,它就是一款由人工智能打造的编程辅助工具。 我们来看看它有啥用。 首先就是代码补全功能,你只要给出函数…...
项目心得--网约车
一、RESTFULPost:新增Put:全量修改Patch:修改某个值Delete: 删除Get:查询删除接口也可以用POST请求url注意:url中不要带有敏感词(用户id等)url中的名词用复数形式url设计:api.xxx.co…...
【二叉树广度优先遍历和深度优先遍历】
文章目录一、二叉树的深度优先遍历0.建立一棵树1. 前序遍历2.中序遍历3. 后序遍历二、二叉树的广度优先遍历层序遍历三、有关二叉树练习一、二叉树的深度优先遍历 学习二叉树结构,最简单的方式就是遍历。 所谓二叉树遍历(Traversal)是按照某种特定的规则ÿ…...
Spring Cloud微服务架构必备技术
单体架构 单体架构,也叫单体应用架构,是一个传统的软件架构模式。单体架构是指将应用程序的所有组件部署到一个单一的应用程序中,并统一进行部署、维护和扩展。在单体架构中,应用程序的所有功能都在同一个进程中运行,…...
TCP三次握手与四次挥手(一次明白)
TCP基本信息 默认端口号:80 LINUX中TIME_WAIT的默认时间是30s TCP三次握手 三次握手过程:每行代表发起握手到另一方刚刚收到数据包时的状态 客户端服务端客户端状态服务端状态握手前CLOSELISTEN客户端发送带有SYN标志的数据包到服务端一次握手SYN_SENDLISTEN二次握手服务端发送…...
pyside6@Mouse events实例@QApplication重叠导致的报错@keyboardInterrupt
文章目录报错内容鼠标事件演示报错内容 在pyside图形界面应用程序开发过程中,通常只允许运行一个实例 假设您重复执行程序A,那么可能会导致一些意向不到的错误并且,从python反馈的信息不容易判断错误的真正来源 鼠标事件演示 下面是一段演示pyside6的鼠标事件mouseEvent对象…...
订单30分钟未支付自动取消怎么实现?
目录了解需求方案 1:数据库轮询方案 2:JDK 的延迟队列方案 3:时间轮算法方案 4:redis 缓存方案 5:使用消息队列了解需求在开发中,往往会遇到一些关于延时任务的需求。例如生成订单 30 分钟未支付࿰…...
< 开源项目框架:推荐几个开箱即用的开源管理系统 - 让开发不再复杂 >
文章目录👉 SCUI Admin 中后台前端解决方案👉 Vue .NetCore 前后端分离的快速发开框架👉 next-admin 适配移动端、pc的后台模板👉 django-vue-admin-pro 快速开发平台👉 Admin.NET 通用管理平台👉 RuoYi 若…...
内网渗透-基础环境
解决依赖,scope安装 打开要给cmd powershell 打开远程 Set-ExecutionPolicy RemoteSigned -scope CurrentUser; 我试了好多装这东西还是得科学上网,不然不好用 iwr -useb get.scoop.sh | iex 查看下载过的软件 安装sudo 安装git 这里一定要配置bu…...
Go语言学习的第一天(对于Go学习的认识和工具选择及环境搭建)
首先学习一门新的语言,我们要知道这门语言可以帮助我们做些什么?为什么我们要学习这门语言?就小wei而言学习这门语言是为了区块链,因为自身是php出身,因为php的一些特性只能通过一些算法模拟的做一个虚拟链,…...
C和C++到底有什么关系
C++ 读作”C加加“,是”C Plus Plus“的简称。顾名思义,C++是在C的基础上增加新特性,玩出了新花样,所以叫”C Plus Plus“,就像 iPhone 6S 和 iPhone 6、Win10 和 Win7 的关系。 C语言是1972年由美国贝尔实验室研制成功的,在当时算是高级语言,它的很多新特性都让汇编程序…...
14个Python处理Excel的常用操作,非常好用
自从学了Python后就逼迫用Python来处理Excel,所有操作用Python实现。目的是巩固Python,与增强数据处理能力。 这也是我写这篇文章的初衷。废话不说了,直接进入正题。 数据是网上找到的销售数据,长这样: 一、关联公式:…...
async/await 用法
1. 什么是 async/await async/await 是 ES8(ECMAScript 2017)引入的新语法,用来简化 Promise 异步操作。在 async/await 出 现之前,开发者只能通过链式 .then() 的方式处理 Promise 异步操作。示例代码如下: import …...
好意外,发现永久免费使用的云服务器
原因就不说了,说一下过程,在百度搜pythonIDE的时候,发现了一个网站 https://lightly.teamcode.com/https://lightly.teamcode.com/ 就是这个网站,看见这个免费试用,一开始觉得没什么,在尝试使用的过程中发…...
VSCode使用技巧,代码编写效率提升2倍以上!
VSCode是一款开源免费的跨平台文本编辑器,它的可扩展性和丰富的功能使得它成为了许多程序员的首选编辑器。在本文中,我将分享一些VSCode的使用技巧,帮助您更高效地使用它。 1. 插件 VSCode具有非常丰富的插件生态系统,通过安装插…...
SQL执行过程详解
1 、用户在客户端执行 SQL 语句时,客户端把这条 SQL 语句发送给服务端,服务端的进程,会处理这条客户端的SQL语句。 2 、服务端进程收集到SQL信息后,会在进程全局区PGA 中分配所需内存,存储相关的登录信息等。 3 、客…...
【物联网NodeJs-5天学习】第四天存储篇⑤ ——PM2,node.js应用进程管理器
【NodeJs-5天学习】第四天存储篇⑤ ——PM2,node.js应用进程管理器1. 前言2. 官方说明3. 安装PM24. PM2常用命令4.1 启动命令4.2 重新启动命令4.3 热重载命令4.4 停止命令4.5 删除命令4.6 查看进程运行状态4.4 显示某一个进程的具体信息4.8 显示日志信息4.9 终端监控…...
【C++学习】【STL】deque容器
dequeDouble Ended Queues(双向队列)deque和vector很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是,deque 容器中存储元素并不能保证所有元素都存储到连续的内…...
当 App 有了系统权限,真的可以为所欲为?
看到群里发了两篇文章,出于好奇,想看看这些个 App 在利用系统漏洞获取系统权限之后,都干了什么事,于是就有了这篇文章。由于准备仓促,有些 Code 没有仔细看,感兴趣的同学可以自己去研究研究,多多…...
vue3.js的介绍
一.vue.js简述 Vue是一套用于构建用户开源的MVVM结构的Javascript渐进式框架,尤雨溪在2015年10月27日发布了vue.js 1.0Eavangelion版本,在2016年9月30日发布了2.0Ghost in the Shell版本,目前项目由官方负责 vue的核心只关注图层࿰…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
大模型真的像人一样“思考”和“理解”吗?
Yann LeCun 新研究的核心探讨:大语言模型(LLM)的“理解”和“思考”方式与人类认知的根本差异。 核心问题:大模型真的像人一样“思考”和“理解”吗? 人类的思考方式: 你的大脑是个超级整理师。面对海量信…...
比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表
设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
MCP和Function Calling
MCP MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而…...
【笔记】结合 Conda任意创建和配置不同 Python 版本的双轨隔离的 Poetry 虚拟环境
如何结合 Conda 任意创建和配置不同 Python 版本的双轨隔离的Poetry 虚拟环境? 在 Python 开发中,为不同项目配置独立且适配的虚拟环境至关重要。结合 Conda 和 Poetry 工具,能高效创建不同 Python 版本的 Poetry 虚拟环境,接下来…...
