热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

可怕!程序员要被革命了,微软推出自己会编程的“AI程序员”插件

loonggg读完需要7分钟速读仅需3分钟大家好,我是校长。这几天微软和GitHub推出了一款AI程序员智能插件,它自己会编程,会自动生成

loonggg

读完需要

7

分钟

速读仅需 3 分钟

大家好,我是校长。

这几天微软和 GitHub 推出了一款 AI 程序员智能插件,它自己会编程,会自动生成代码,有人说:

软件开发领域的「第三次工业革命」似乎正缓缓揭开序幕。

01

到底怎么回事?

GitHub、OpenAI、微软联合打造了一个全新的代码生成 AI:GitHub Copilot ,堪称为程序员们送上的编程神器。

以后,我们再也不用面向搜索引擎编程了,未来或许我们也不需要再复制和粘贴了。

Copilot 目前作为 Visual Studio Code 插件,支持在本地或 GitHub Codespaces 上使用。

也就是目前我们可以在 VS Code 上安装这款插件,让它帮我们辅助编程,有人调侃目前 Copilot 就像是程序员的小秘书。

我们程序员这个工作真的是挺好的,累了有程序员鼓励师,现在写代码也来了智能小秘。照这个劲头发展下去,未来,我们程序员可能就被这么舒服的哄着,躺在舒适区丧失了编程技能,从而要被淘汰了,哈哈。

简单来说,Copilot 可以根据程序员的注释写代码,自动补全代码,提供与代码匹配的测试,还能生成多个备选方案的代码供选择。GitHub 表示,Copilot 生成的代码大部分是原创的。

是不是看着很厉害呢?

你确实没看错,它不仅可以自动补全代码,还可以根据你的注释,自动生成你所需要的代码,而且还可以根据你的测试需求,生成测试需要的代码。

02

具体介绍

我之所以说,Copilot 是我们程序员的小秘书,是因为 GitHub 给 Copilot 的官方定义是「AI 结对编程员」。「结对编程」(pair programming)是一种软件开发方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员。两个程序员经常互换角色。

GitHub 认为 Copilot 是进化版的「结对编程」,在未来帮程序员查缺补漏的,将会换成 AI。

目前,Github Copilot 作为 Visual Studio Code 插件,它适用于多种框架和语言,在 Python、Javascript、TypeScript、Rudy、Go 几种语言上的表现格外突出。

1、它会自动补全,甚至会根据你的代码,提前猜测和预知你要写什么,帮你自动补全代码。

2、根据注释自动生成代码,什么意思呢?就是它能够根据你注释当中描述的意思生成你想要的代码,只需描述出你想要执行的命令,GitHub Copilot 就能自动为你组装代码。

而且,在注释中用简单的英语描述一个函数,Copilot 也可以将其转换为实际代码。

3、模仿能力也很强,可以根据你写的代码例子,快速生成模板和重复的代码。

4、根据测试包,匹配生成测试所需要的代码,就是你只要导入单元测试包,GitHub Copilot 就能给出与代码匹配的测试,真的是很牛逼啊。

5、既然能够做到自动补全和自动提示,当然了,人家也会在你写代码的时候,根据你写代码的情况,提供好几个备选方案的代码供程序员选择,看看哪个更符合你的要求,你就可以使用,减少你的代码量。

此外,据说 Copilot 还能辅导新手写代码,可以帮助他们找出错误、学习新框架,省去大量查资料的时间。

03

它是如何做到的呢?

GitHub Copilot 由 OpenAI Codex 提供支持,可以理解为 GPT-3 的改进版。

科普一下 GPT-3,GPT-3 这个自然语言处理 AI 在去年就已经很出名了,被公认是继 AlphaGo 之后人工智能史上又一里程碑式的东西。

据说它在互联网上阅读了 5000 亿词,模型达到 1750 亿参数,从而变得很通用。

而 OpenAI 则是在 GPT-3 的基础上生成的 Codex 算法,Codex 在从 GitHub 那里提取出来的 TB(terabyte)级公开代码以及英语语言示例中得到训练。基于 Codex 算法,编程 AI Copilot 诞生了。

OpenAI Codex 对于人们的代码使用习惯有着广泛了解,而且它在训练中接触到的大量公共源代码数据集,所以在代码生成能力上远远超过 GPT-3。

GitHub Copilot 会把程序员给出的命令或代码发送到服务器,然后服务器使用 OpenAI Codex 来给出代码或建议。

根据官网所说,它是用数十亿行的代码训练后,才达到了现在的效果。

04

它会取代程序员吗?

就目前来看,Copilot 提供建议的准确率似乎不高。

GitHub 对一组 Python 函数进行了基准测试,测试团队清除了函数并要求 Copilot 填充它们。模型在第一次尝试正确率是 43%,经过 10 次尝试后,正确率达到了 57%。团队表示,之后 Copilot 还将进行多次训练和测试,准确率会进一步提升。

据一些程序员的说法,这种自动生成的代码工具要「好用」有个前提,就是能精确描述了函数需要实现的功能,不然后续的调试会是更耗时的工作。所以,要想让 Copilot 好用,程序员的描述能力,文字功底要到家。

目前据 GitHub 内部的使用情况来看,GitHub 的数百名开发者在编码时,整天都在使用 Copilot 功能,他们中的大多数人都接受了 AI 的建议,没有关闭该功能。

所以,GitHub Copilot 能达到的效果还是十分可观的,许多用过的程序员都说好。

就目前释放的功能来看,取代程序员还是不太现实,但是未来取代初级程序员我感觉还是很有可能的。

但是,对于我们程序员来讲,现在的 Copilot 绝对是一个好帮手,程序员的好秘书。因为,有了它,我们可能再也不要面向搜索引擎编程了,再也不用去 StackOverflow 找答案,去复制粘贴了。

我们都知道,我们程序员很大一部分的时间和精力都浪费到面向搜索引擎,面向 Google 编程上了,大量的在网上复制和粘贴代码。

有了 GitHub Copilot ,真的是可以大大提高我们程序员的生产力。

就目前来讲,是一个好事。

但是,在未来,随着科技的发展,我感觉可能有点不妙,至少初级程序员的生存空间可能就没有了。但是高级程序员应该会很高兴,有了它效率大大提高了,可能拥有了它之后,就不用 996 加班了,可以提前下班了。

GitHub CEO Nat Friedman 在 Hacker News 写道:

软件开发正迎来自己的『第三次工业革命』。第一次革命是编译器、调试器、垃圾收集器以及语言等工具的出现,极大提升了开发者的工作效率;第二次革命则以开源为契机,全球开发者社区得以汇聚起来,并在彼此的开发成果基础之上不断推进;第三次革命就在现在,业界尝试在编程当中使用 AI 技术。在发展成熟之后,开发人员的日常工作将有巨大改变 —— 但仍然有很多工作可做、也只能由人类开发者完成,因此不用太担心。

所以,通过 GitHub CEO 的话我们也可以看出,未来的程序员只有两种:

  1. 一种你只需要会操作就行,不需要你写,这种程序员就像是车间的操作工,身价会大大降低;

  2. 另外一种就是高级程序员,就像是解决难题的技术专家,这事 AI 干不来,只能人来,就像是车间的那种老师傅,少林寺的扫地僧。这种人的价值由于 AI 的帮忙,效率会大大提升,价值也会大大增加。

你们认为呢?

安装地址:https://marketplace.visualstudio.com/items?itemName=GitHub.copilot

最后,推荐一下,我刚刚做的一个新的公众号「涩郎」,只分享知识类, 认知类的文章,都是高质量的干货,目前已经更新了很多文章了,最近几篇如下:

「独立思考」的背后是一个残酷的世界

☞颠覆你的三观

☞人在年轻的时候,最核心的能力是什么?

☞导致我们形不成「自律」的「罪魁祸首」

☞其实,这就是「幸存者偏差」

点击下方公众号卡片,关注我

我们一起挖掘知识,见证彼此成长

点击下方公众号卡片,关注我

在公众号对话框,回复关键字 “1024”

免费领取副业赚钱实操教程


推荐阅读
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 【历史上的今天】1 月 8 日:谷歌推出 Google Pay;Quibi 的重生;平衡二叉树的发明者出生
    整理|王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。今天是2022年1月8日,在1942年的今天,英国理论物理学家霍金(StephenHawking)出生;霍金在 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 如何用R语言做词云图,以某部网络小说为例
    作者:horoR语言中文社区专栏作者知乎ID:https:www.zhihu.compeoplelin-jia-chuan前言一开始,我在 ... [详细]
  • 前言4.1回到基础赋值(略)barfoo[:]copy.deepcopy()等式(略)is条件语句ifelifall()any()4.2序列字符串链表元组序列类型上的操作表4-1P ... [详细]
author-avatar
JasonXie
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有