80%的代码AI帮你写?还没这么夸张,不过也快了

news2024/11/26 12:33:31

兔年春节一过,APIcat进入到云服务版本的开发阶段,过年前发生了一件大事,Chatgpt横空出世,不少人预测Chatgpt会替代的10大行业,其中就有程序员。

这时,一位特斯拉的老哥出来说,GitHub Copilot帮助他写了80%的代码。

当地时间2022年12月30日,特斯拉的人工智能主管、开发自动驾驶仪的主要领导人安德烈·卡尔帕西 (Andrei Karpathy)在推特发文称,他写的代码中有80%是由GitHub Copilot编写完成的,且准确率约为80%。

 有这么大的能耐么?我们开春就来试一下

GitHub Copilot是什么

GitHub Copilot 是由 Github 和 OpenAI 创造的 AI 工具。该工具通过自动代码补全来帮助程序员们编写代码。Visual Studio Code、Neovim 和 JetBrains 的用户可以使用插件来使用对应功能,这个功能是付费使用的,目前是免费体验60天,之后每月10美元。

下载插件,填写信用卡等信息,就可以启动了,基本无感启动。

GitHub Copilot使用效果展示

GitHub Copilot也不需要什么交互,就是你写程序的时候会自动的出来。我给大家边写代码边展示。

今天准备加一个controller,来完成APIcat的项目管理功能:

Copilot展示

我做了什么:我创建了一个叫project.go的文件,进去后,敲了必要的声明信息,之后的事情,几乎就是在等Copilot给我建议,Tab引用,再等下一个建议,再用Tab引用……

当然,这是“合作”一周之后的结果,刚开始的时候,他不清楚我会在函数前面加上swag注释,不过写过一两次就好了。

那么接下来,我们看看,Copilot还会建议我们给Project这个controller加哪些功能函数呢?

Copilot使用体验2

有意思吧,Copilot直接建议我为Project:

  1. 添加List用于列出所有的Project
  2. 添加Delete用于删除
  3. 添加Update用于更新
  4. 添加Get用于获取单个详情

这基本一个大体的资源管理控制器的主体功能就出来了。

上面这段就是我写文章的时候边写边敲的,没有做任何的事前准备,所有的代码加中文注释都是Copilot自己想的。

实际Copilot在这周还帮我做了很多的事情:

当我不想写注释的时候,帮我写注释

 为我补充测试例(注意,我并没有让他取个新的id)

为我写最不想写的输入验证规则(我都不知道他从他找来这么个规则)

而且这家伙真的是学识渊博,我有个按位取值的简单权限系统,他给的权限操作直接是按位来的,我都要再去写个矩阵想想到底对不对……

func (a *Admin) HasPrivilege(privilege int32) bool {
	return a.Privilege&privilege&privilege != 0
}

func (a *Admin) RemovePrivilege(privilege int32) {
	a.Privilege &= ^privilege
}

如果单纯说代码量,我看80%都是少的 

当然,他也没那么智能

大家也不用担心,未来的几年,他还替代不了程序员,还是会出很多的错

func (g *generator) hasDefault(par interface{}) bool {
    if par == nil { //AI自动判断
        return false
    }
    switch tp := par.(type) {
    case *openapi3.ParameterRef:
        return tp.Value != nil && tp.Value.Schema != nil && tp.Value.Schema.Value.Default != nil
    case *openapi3.SchemaRef:
        return tp.Value.Default != nil
    }
    return false
}

例如上面的片段,我出错了,Copilot加了个nil判断,实际在par参数类型为interface{},实际是下面两个类型的指针的时候,这个判断无效。

d.CloudProvider = CloudProvider(bucket.Get([]byte("cloud_provider"))[0])

例如上面的这个操作,是要先判断bucket.Get([]byte("cloud_provider"))是否为nil的。

但话说回来,我也只是写了下面代码的第一行,Copilot就直接补全了后面的:

		var bts = bucket.Get([]byte("cloud_provider"))
		if len(bts) > 0 {
			d.CloudProvider = CloudProvider(bts[0])
		}

所以,Copilot确实从Github大量的项目中学习到了很多编程知识,但是也因为采集面太广,他的实际表现也基本等同于一个初中级程序员,太深的东西他也做不出来。

还有个关键,效率似乎也没有太大提升

看完上面的,也许大家要说,那其实就是检查一下他写的对不对,然后大量代码都不用写了,是不是觉得工作效率就会高很多。

但实际我用下来,也不是这么回事,有几个大的问题:

  1. 他的思路和我的思路还是有区别,我不得不像理解一个同事一样去理解他,这就造成他写出来一段代码之后,我必须停下来阅读,查看里面不一致的部分,并进行修改,这个从敲代码的层面看,我确实也没做太多的工作,但是问题在于,我的思路一直在自己的和Copilot的之间进行转换,很多时候,这种工作的效率也不高。
  2. 他会从其他库中学习灵感,但可能和项目不符,比如我们在创建User权限的时候,他会建议很多种用户类型,但是和我们的定义不符,这时,Copilot转变自己思路的速度会稍慢,造成你不得不用修改多次类似代码的方式来和他沟通
  3. 我需要查看并检查他是否出错,这是最大的问题来源了,比如上面说的没有判断nil的问题,确实他一次也修改完成了,但是问题在于他默认提示的是有问题的,这时要反过来验证和查找问题,程序员就知道,时间损耗就多多了。

所以,总的来说,我也没太感觉编程效率有太大的提升,更多的在于解放双手,大脑并没有解放

但是,我也回不去了,你要知道每个月只用花60多块钱而已,这仅仅是普通开发1,2个小时的工资,即便只解放了双手也值啊。

这样的好日子又能有多久?

可以说,现在的阶段是程序员最好的时光了,有个AI帮你干活,还不能替代你的作用,但是这样的发展阶段又能有多久呢,听说GPT4的模型又扩展了数倍的参数规模,现在看网上的效果,也可以写出来一小段的程序了, 难保哪一天,你直接给需求,就能直接把整个系统写出来

那时候,可能程序员就真失业咯

更多的思考

  1. 我写的代码是不是又回去帮助了美国人?
  2. 国内版本的什么时候有?
  3. 我乐意教一个徒弟,但是让我去教一个魔王,我不乐意,能收他培训费么?
  4. 如果美国程序员以1当5了,中国涉密的研发还跟得上么?
  5. 这玩意拿来控制武器怎么办?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis简介

Redis是一款开源的、高性能的键-值存储(key-value store)。它常被称作是一款数据结构服务器(data structure server)。 Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(h…

Netty 中的 Channel执行完close之后, 还能进行write吗?

问题来源:项目中出现顶号操作的时候,正常情况下被顶掉的连接应该收到一个 “同一账号登录,请退出重登” 的错误消息, 但是偶现客户端接收不到消息的情况(连接实际上已经被服务器干掉了,客户端就呆呆的&…

word和wps添加mathtype选项卡

word或wps添加mathtype选项卡 前提 安装好word或wps安装好mathtype 步骤 确认word或wps具体安装位置确认word或wps位数为32位还是64位复制mathtype中的MathPage.wll文件和MathType Commands 2016.dotm文件到STARTUP位置添加受信任位置添加加载项 安装位置 通过开始页面&a…

三套大厂网络安全工程师面试题(附答案解析)冲刺金三银四

2023年已经开始了,先来灵魂三连问,年初定的目标是多少?薪资能涨吗?女朋友能找到吗? 好了,不扎大家的心了,接下来进入正文。 由于我之前写了不少网络安全技术相关的文章和回答,不少…

亿级高并发电商项目---万达商城项目搭建(二)

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

【iOS-系统框架】

文章目录前言47.熟悉系统框架CoreFoundation框架其他框架要点48. 多用块枚举,少用for循环for循环NSEnumerator遍历快速遍历基于块的遍历方式要点49.对自定义其内存管理语义的collection使用无缝桥接要点50.构建缓存时选用NSCache而非NSDictionaryNSCacheNSCache实例…

bgp综合实验2

目录实验要求子网划分ip以及各个环回的配置ospf配置及接口网络类型更改bgp的配置路由反射器小知识联邦的小知识bgp宣告实验要求 如图 实验要求: 1,R2-7每台路由器都存在一个环回接口用于建立邻居,同时存在一个环回代表连接用户的接口&…

安全—06day

负载均衡反向代理下的webshell上传负载均衡负载均衡下webshell上传的四大难点难点一:需要在每一台节点的相同位置上传相同内容的webshell难点二:无法预测下一次请求是哪一台机器去执行难点三:当我们需要上传一些工具时,麻烦来了&a…

解决方案 | 亚洲诚信助力互联网行业网络安全建设

行业背景当前,世界正处在从工业经济向数字经济转型过渡的大变革时代,互联网作为工业社会向数字时代迁移的驱动力,是推进新一轮科技革命与产业变革的中坚力量。随着数字化进程的加剧,企业所面临的网络安全形势也日趋多变复杂。尤其…

玩具全球各地检测标准整理

玩具检测认证:REACH法规、ROHS指令、EN 71测试、ASTM F963、GB 6675、CE认证、儿童用品CPC认证等其他认证。测试标准:CPSC 总共公布了 38 个标准,主要涉及的检测内容有:1). CPSIA 总铅和邻苯;2). 美国玩具标准 ASTMF96…

springboot整合单机缓存ehcache

区别于redis的分布式缓存&#xff0c;ehcache是纯java进程内的单机缓存&#xff0c;根据不同的场景可选择使用&#xff0c;以下内容主要为springboot整合ehcache以及注意事项添加pom引用<dependency><groupId>net.sf.ehcache</groupId><artifactId>ehc…

PTA L1-044 稳赢(详解)

前言&#xff1a;内容包括四大模块&#xff1a;题目&#xff0c;代码实习&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 大家应该都会玩“锤子剪刀布”的游戏&#xff1a;两人同时给出手势&#xff0c;胜负规则如图所示&#xff1a; 现要求你编写一个稳赢不输的…

计算机组成结构之数据传输控制方式、总线、CISC和RISC

数据传输控制方式 输入输出控制方式 程序控制&#xff08;查询&#xff09;方式&#xff1a;cpu一直持续不断在查询I/O是否准备好了&#xff0c;准备好就会调用I/O&#xff1b;I/O没有准备好&#xff0c;CPU会持续等待I/O&#xff1b;&#xff08;软件实现&#xff09;程序中…

vcruntime140_1.dll无法继续执行代码,怎么解决这种问题?

经常使用电脑的人&#xff0c;可能对于这个弹出框应该不陌生&#xff0c;“vcruntime140_1.dll无法继续执行代码”&#xff0c;其实会出现这种情况&#xff0c;主要是因为缺少一个动态链接库 (DLL) 文件导致的。这个文件是 Visual C 2015 库的一部分&#xff0c;某些程序需要这…

第五节 字符设备驱动——点亮LED 灯

通过字符设备章节的学习&#xff0c;我们已经了解了字符设备驱动程序的基本框架&#xff0c;主要是掌握如何申请及释放设备号、添加以及注销设备&#xff0c;初始化、添加与删除cdev 结构体&#xff0c;并通过cdev_init 函数建立cdev 和file_operations 之间的关联&#xff0c;…

阿里云ecs服务器搭建CTFd(ubuntu20)

1.更新apt包索引 sudo apt-get update更新源 1、使用快捷键【ctrlaltt】打开终端。 2、输入以下命令备份原有软件源文件。 cp /etc/apt/sources.list /etc/apt/sources.list.bak_yyyymmdd 3、再输入以下命令打开sources.list文件并添加新的软件源地址。 vim /etc/apt/sources.…

本质安全设备标准(IEC60079-11)的理解(四)

本质安全设备标准&#xff08;IEC60079-11&#xff09;的理解&#xff08;四&#xff09; 对于标准中“Separation”的理解 IEC60079-11使用了较长的篇幅来说明设计中需要考虑到的各种间距&#xff0c; 这也从一定程度上说明了间距比较重要&#xff0c;在设计中是需要认真考虑…

VBA提高篇_ 21 随机数 / 模运算

文章目录1. 模Mod运算2. 随机数及其运算2.1 Rnd()函数调用Excel公式: Rand() / RandBetween()使用VBA函数: Rnd()函数2.2 随机小数化整数公式2.3 伪随机数(过程是随机的,但是实际上不是,随机数算法)2.3.1 随机数初始化2.3.2 随机小数被当做下标时会被自动四舍五入VBA的默认属性…

BERT简介

BERT&#xff1a; BERT预训练模型训练步骤&#xff1a; 使用Masked LM方式将语料库中的某一部分的词语掩盖住&#xff0c;模型通过上下文预测被掩盖的信息&#xff0c;从而训练出初步的语言模型在语料库中选出连续的上下语句&#xff0c;并使用Tranformer模块识别语句的连续性通…

PHP基于TCPDF第三方类生成PDF文件

最近在研发招聘的系统 遇到了这个问题 转换pdf 折腾了很久 分享一下PHP基于TCPDF第三方类生成PDF文件最近遇到一个需求&#xff0c;需要根据数据库的字段生成表格式的PDF文件并发送邮箱第一步、我们先去官网上面去下载tcpdf的类&#xff1a;http://www.tcpdf.org/或者是从githu…