3

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

 2 years ago
source link: https://zhuanlan.zhihu.com/p/386133729
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

公众号「非著名程序员」主理人,程序员/复业者/生涯规划师

文章首发于微信公众号「非著名程序员」,欢迎大家关注。

大家好,我是校长。

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

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

01

到底怎么回事?

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

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

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

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

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

v2-19258b74c57032980bb57ad3f0e94450_720w.jpg

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

是不是看着很厉害呢?

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

02

具体介绍

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

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

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

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

v2-17de3757fd93ad6b303c2071970e6564_b.jpg


v2-908498f58f8edeb3290d647fea1fc5a7_b.jpg

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

v2-0efb7a6400fcd1af7865dd6b27305985_b.jpg

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

v2-f7cde9d657c30f953e115373fd8737d6_b.jpg

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

v2-881b044255ad54da97f1c26aabcdaca1_b.jpg

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

v2-508ff0880b12343d29e6d1d70ab88ab7_b.jpg

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 的话我们也可以看出,未来的程序员只有两种:

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

你们认为呢?

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

文章首发于微信公众号「非著名程序员」,欢迎大家关注,关注之后,即可查看系列生财思维和副业赚钱的文章,超多干货,值得你去一探究竟。打开微信,使用 “搜一搜”,搜索「非著名程序员」,即可关注。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK