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

兔年春节一过,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 != nilcase *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.rhkb.cn/news/56149.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android中英文单词录入背诵软件

PC端演示: Android端演示(GIF太大,就图片吧): 源代码下载地址:http://suo.im/6f6zLa,解压密码:lrbs7 我在上传资源时,没有为任何一个设置下载需要C币或是积分,但是平…

⚡写一个有发音的背单词软件⚡——四六级必过系列

四六级必过 ⚡导读演示爬虫阶段GUI阶段朗读单词阶段封装阶段⚡肥学有话说⚡导读 你还在为小小英语而发愁吗?,你还在为备考四六级没有动力而难过吗?那么今天教你写一个背单词软件你不会不想学吧。兄弟们新学期都开始了大家和我一起肥学一起吧!! 演示 用python教大家怎么写…

一款c#实现的实用好玩儿的背单词程序

1.程序功能: 软件logo: 1.可实现背四级单词、六级单词、考研单词、托福单词、雅思单词、中考单词、高考单词、新概念单词的功能。 2.四级单词、六级单词、考研单词、托福单词、雅思单词、中考单词、高考单词、新概念单词以一定的格式存储在记事儿本里通…

程序员快速记忆英文单词的专属诀窍

本文来自作者 曹某某 在 GitChat 上分享 「程序员快速记忆英文单词的专属诀窍」,「阅读原文」查看交流实录。 「文末高能」 编辑 | 哈比 首先感谢选择我这个专题的所有的读者。这是我第一次在 GitChat 做分享。我希望我的分享能够带来一些有趣和有用的东西&#xff…

大模型扎堆涌现,AIGC 的价值到底是什么?

ChatGPT 在 2023 年初爆红之后,AIGC 引发了各行业的热切关注,国内的各类大模型不断推出。近日,科大讯飞对外发布了“讯飞星火认知大模型”,现场不仅实测了文本生成、语言理解、知识问答、数学、逻辑推理等能力表现,科大…

win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理?

先说说什么是telnet命令? telnet命令用于登录远程主机,对远程主机进行管理。 举个栗子:在cmd中运行telnet localhost 8431 也就等同于在浏览器中输入localhost:8431 如果在cmd中使用telnet指令发现报错:telnet不是内部或外部命…

在VSCode下利用PlateFormIO开发Arduino的MicroROS遇到的一些问题

文章目录 简介1.左下角没有platformio的相关按钮2.vscode没有串行监视器(Serial Monitor)3.关于trajectory_msgs/msg/joint_trajectory.hpp的相关问题4.关于control_msgs::action::FollowJointTrajectory的相关问题4.1.方法一4.2.方法二 5.关于moveit_ms…

进程管理(笔记)

如果对内存寻址熟悉的话, 或者认真看过上一节的内容: 内存管理之内存寻址: https://blog.csdn.net/qq_40482358/article/details/130868188. 那么对linux系统中的进程管理应该已经有一个初步的认识了: cr3作为一个控制寄存器, 描述当前进程的页目录的物理内存基地址, 当进程切换…

chatgpt赋能python:Python数据读写——技术大杂烩

Python数据读写——技术大杂烩 介绍 Python作为一种高级的编程语言,被广泛应用于数据科学领域。Python提供了多种实用工具来读取和写入数据,包括CSV文件、Excel文件、JSON文件、SQL数据库等。本文将介绍Python常用的数据读写技术和应用,并探…

chatgpt赋能Python-libreoffice_python扩展

LibreOffice Python扩展: 提升办公效率的利器 如果你一直在寻找一种提高办公效率的方法,那么你肯定会喜欢LibreOffice Python扩展。作为LibreOffice的一个特性,它可以让你使用Python编写宏程序自动化你的日常办公任务。 什么是LibreOffice Python扩展&…

【Linux操作系统】【综合实验二 vi应用与shell脚本编辑】【浅试编辑命令】

文章目录 一、实验目的二、实验要求三、实验内容⭐(1)继续练习Linux系统的文件类、目录类、进程管理类与磁盘操作类常用命令,并使用常见的选择项;⭐(2)了解ed、ex行编辑器与Emacs全屏幕编辑器的工作模式、基…

chatgpt赋能python:使用Python获取句柄和发送消息

使用Python获取句柄和发送消息 什么是句柄? 在计算机中,句柄是指一个唯一的标识符,用于引用正在执行的进程或程序。在Python中,我们可以使用win32api模块获取Windows操作系统中的句柄。使用句柄,我们可以与Windows中…

chatmol:将chatgpt应用于pymol

文章目录 前言一、源文件二、安装二、应用示例总览示例1(方法查询)示例2(直接运行上述方法)示例三(结合口袋展示) 前言 Chatmol将chatgpt内置到了pymol当中,采用对话的方式调用pymol进行绘图。 一、源文件 https://github.com/JinyuanSun/ChatMol/blob/main/chatm…

开源问卷项目分享-TDUCK填鸭表单

前言 自TDUCK填鸭表单开源以来,收到许许多多微信社群朋友的反馈,其中关心最多的莫非就是部署的相关问题,对于初学者或者行业小白来说,非常希望能够简化部署方式。为了满足伙伴们的需求,现在我们推出简化部署教程&…

chatgpt赋能python:Python的排列组合生成工具——实现高效SEO

Python的排列组合生成工具——实现高效SEO 排列组合是算法中非常常见的模块,也是搜索引擎优化(SEO)中常用的工具。举例来说,如果某个电商平台需要为某个页面展示的商品进行排列组合,那么Python就是一个非常有效的选择…

chatgpt赋能python:Python就近捕捉原理及其在开发中的应用

Python 就近捕捉原理及其在开发中的应用 Python 作为一门高级编程语言,拥有着丰富的库和工具,广泛应用于数据分析、机器学习、自然语言处理等领域。同时,Python 作为一种主流的 Web 编程语言,也有着众多优秀的 Web 框架和库。在 …

ChatGPT刷力扣面试题 01.05.一次编辑

题目描述 字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入: first "pale" second "ple" 输出: True示例 2:输入: first …

【直播回放】ChatGPT刷力扣面试题 02.03. 删除中间节点

直播截图 题目描述 若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点 c&#x…

用完即走!设计师必备的浏览器工具!

设计师们都知道,谁都不想在设计过程中被一堆繁琐的操作搞得焦头烂额。 浏览器中一些有趣但实用的工具,如颜色拾取器、像素标尺和抠图、在线生成工具等,让我们的设计变得更加简单有趣。 但网站每次都要去收藏夹里找出来用,有时候…

chatgpt赋能python:Python截图库的全面介绍:了解它如何提高你的工作效率

Python截图库的全面介绍:了解它如何提高你的工作效率 在如今的数字化时代,截图已经成为了我们处理信息和交流的重要手段之一。特别是对于那些需要分享教程、演示演讲或者进行 bug 报告的人,截图所提供的直观性和高效性无疑是无法替代的。而在…