自动写代码?别闹了!
大家好,我是良许。
这几天,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的核心只关注图层࿰…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
接口 RESTful 中的超媒体:REST 架构的灵魂驱动
在 RESTful 架构中,** 超媒体(Hypermedia)** 是一个核心概念,它体现了 REST 的 “表述性状态转移(Representational State Transfer)” 的本质,也是区分 “真 RESTful API” 与 “伪 RESTful AP…...