近日,OpenAI带着他们最新、最神自动编码神器Codex霸榜各大科技媒体头条,我们知道OpenAI是微软投资的通用人工智能平台,而GitHub是微软旗下的代码托管平台,这样微软出算力、OpenAI出技术、GitHub出代码的AI编程铁三角就产生了,在发布了AI自动辅助编程工具Copilot之后,能够自动写代码的Codex也正式登场了。与Copilot一样,Codex也是在GPT-3的基础上构建而成,可以将英文的需求描述直接转换为代码。

虽然目前AI自动编码水平还更像一个华而不实的噱头,但这项技术的发展却给程序员们敲响了警钟,在未来,“我有个创意,就差个程序员”的说法是否会演变成“只要有创意,根本不需要什么程序员”,的确值得我们思考。

Codex的前世今生

Codex要从GPT-3(论文地址:https://arxiv.org/abs/2005.14165)说起,GPT-3的出现充分证明大力就是能够出奇迹,这个训练集45TB,参数规模1750亿,预训练结果700G的AI模型一经问世就成为了大众瞩目的焦点。一时之间用GPT-3作诗、作曲乃至画画的应用层出不穷,而Codex的前身应该算是那个能够自动生成代码的网站debuid.co(https://debuild.co/)。

在debuild注册以后,用户只要用英语描述需求,相关前端的代码就会被自动生成出来了,笔者这种在IT界摸爬滚打十几年的老程序员,在一年前试用debuild时也惊得说不出话来,当然这个网站只是昙花一现,目前已经基本处于纯关闭状态。

不过这次的Codex明显是更猛的,它能准确Get到自然语言描述的需求,并生成有一定复杂逻辑代码,比如下面这个游戏。

奇迹创造者OpenAI

说起OpenAI最源依靠AI游戏强化学习模型gym(https://github.com/openai/gym)在业界抱得大名,翻开OpenAI (https://www.openai.com/)的主页,你会发现他们除了做游戏AI,还做这种自动玩魔方的机器人。

不过在NLP领域OpenAI迎来了华丽的转身,虽然本次Codex论文的正式版还没发出,但是本质上讲Codex只是个编码专用版的GPT-3,OpenAI在GPT-3在论文开头就直接指出,通过对大量文本进行预训练,并且针对特定任务进行微调,模型的性能可以在许多NLP任务以及基准测试中获得显著提升。如图所示,X轴代码模型的参数数量级而纵轴代表准确率,可以看到,模型规模越大,准确率也会随之升高,尤其是在参数规模达到13亿以后,准确率提升的速度还会更快。简单讲也就是说GPT-3的决胜之道在于,其模型的训练集特别大,参数茫茫多。

GPT-3与GPT-2使用了相同的模型和架构,包括改进的初始设置、预归一化和 reversible tokenization。GPT-3最主要提升点在于其在transformer的各层上都使用了交替密集和局部带状稀疏的注意力模式,我们知道理解自然语言需要注意最相关的信息。例如,在阅读过程中,人们倾向于把注意力集中在最相关的部分来寻找问题的答案。然而,如果不相关的片段对阅读理解产生负面影响,就会阻碍理解的过程,而理解过程需要有效的注意力。这一原理同样适用于自然语言的计算系统。注意力一直是自然语言理解和自然语言生成模型的重要组成部分。因此,交替密集和局部带状稀疏的注意力模式只关注k个贡献最大的状态。通过显式选择,只关注少数几个元素,与传统的注意方法相比,对于与查询不高度相关的值将被归0。

由于代码规模远不如整体自然语言的规模大,因此Codex的规模仅有100多亿,比GPT-3的1750亿要少得多,不过正如我们上文演示中所展现的,它的效果还不错。

新时代到底需要什么样的程序员

最新上线的代码Codex可能只是OpenAI的一次尝试而已,直接根据产品经理的需求描述,生成全套可执行的代码,似乎并不是GPT-3这种基于已有代码进行训练的模型所能达到的高度,本质上Codex不创造代码,而只是代码的搬运工,这也就决定了它只能对以往代码进行模仿,却很难有创造性的突破,因此想让AI独立完成编码任务似乎不太现实,未来AI与人类程序员配合,由人类程序员完成功能模块的一部分,再由AI帮助续写剩余代码,似乎才是合理选择。

因此笔者认为Copilot(https://t.co/eWPueAXTFt)也就是“程序员结对编程实践中的AI对手”,可能在未来的发展空间会更大,很多时候开发者只需要提供函数签名,Copilot就可以完成整个函数的代码编写了,有时甚至只需要一个简单的注释描述,Copilot就能把整个功能模块全写出来。

那么在这个AI自动编程的时代下,什么样的程序员会更受欢迎呢?

Ctrl+C/V式开发将迎末路,实力程序员将迎春天:根据OpenAI的官方说法Codex试图理解需求描述中的逻辑,并尽可能生成最好的代码,AI最擅长做的就是高度模仿之前大量存在过的类似代码,因此如果是简单的拷贝粘贴加修修补补式的开发方案,那么AI很可能比人类程序员做得更好。

因此这也要求人类程序员需要在更有创造力的领域继续发挥作用,这也会带来一个现象就是未来初级程序员的需求量会变少,而能与机器完美结对编程的大神级程序员会更加紧俏,不过问题也就随之而来,程序员都是慢慢成长的,很难有人起步就是大神,初级岗位变少是否意味程序员群体的断档也值得观察。

信息安全编程将更为紧俏专家:正如前文所说AI真正擅长的仅仅是对以往代码的高度模仿,不过这个技能造成的问题就是AI很可能会引用旧的类库或者软件包,从而带来安全隐患。因此即便AI生成的代码能够正常运行,也不能代表这些代码没有安全漏洞,这就很可能为黑客们创造各种可逞之机,同时也给信息安全领域的专家提供更大的空间。

最后的灵魂拷问,使用开源代码训练的Codex是否有原罪

不少的开源项目都是禁止将代码用于商业用途的,而用这部分不应用于商业的代码去训练收费AI模型,这种做法真的合适吗?正如前文所说GPT-3能够成功依靠就是海量的训练集,而Codex的训练代码由公开来源的英语注释及源代码而来,这其中包括了GitHub上公共存储库中的源代码及注释,而且种种迹象表明Codex的训练代码并没有按照不同的开源许可证进行区分对待。

如果AI最终给出的建议代码与原先训练集中的代码达到一定的相似度阈值,那就肯定会涉嫌侵权,但AI生成的代码与训练集代码的相似度如何界定才是问题关键,当然截止目前这还依旧是个开放性问题,业界尚未形成共识。

目前已经有消息称OpenAI已经开始关注GPT-3及Codex有可能引发的道德风险了,不过大的趋势不可阻挡,坦率讲,目前AI编码并没有迎来自己的阿尔法狗时刻,在现有模式下,AI编码最多只能达到初级程序员的水平,而没有任何创造性,不过笔者也不能排除未来AI会完全抛弃人类的编程方式,走出自己的风险甚至达到神之一手的水平的可能。因此AI程序员Codex的出现也给程序员们敲响了警钟,至少只会复制粘贴的话在未来就很难保住饭碗了,程序员还要尽快扩充自己的知识栈,尽快提升进步才是王道。

作者:马超,CSDN博客专家,阿里云MVP、华为云MVP,华为2020年技术社区开发者之星。

新闻

英伟达推出首个元宇宙平台

面试

大厂的面试官是如何挑人的?

新闻

阿里达摩院刷新 VQA 记录

技术

如何跟蜻蜓的大脑学计算?

分享

点收藏

点点赞

点在看

程序员门槛再被“神器”降低:只要会英文,就能写代码!相关推荐

  1. 28岁程序员:我要转行能行么?网友:除了写代码你还能干啥?

    在互联网行业,万人瞩目的职业也就是程序员了,关于程序员的话题真可谓源源不断,程序员创业,程序员找女朋友,程序员炫富,程序员退休,程序员转行等等,今天要给大家说的是程序员转行这个话题,接下来咱们就以一个 ...

  2. 程序员转实施工程师_只有程序员才能看得懂?程序员:算了,不看了,我得写代码了...

    程序员:还是看完我在写代码吧 1.程序猿最烦两件事,第一件事是别人要他给自己的代码写文档,第二件呢?是别人的程序没有留下文档. 2.程序猿的读书历程:x语言入门->x语言应用实践->x语言 ...

  3. 程序员吐槽工资和Bug数量挂钩!网友:不写代码就能最高绩效

    众所周知,每一个项目是否能够上线都是由Bug的大小和数量所决定的,Bug多了会影响用户的体验,到时候不仅会给公司带来经济损失,对公司的名声也会有一定的影响,而到最后背锅的还是测试人员和开发人员,所以有 ...

  4. 程序员迎娶白富美的唯一出路是什么? 认真用心写代码

    /*2 如果认真工作了,就可以迎娶白富美.否则,打光棍, 半辈子.如果输入 认真用心工作, 就提示弹出 可以迎娶白富美.否则,提示弹出 打光棍.*/var demostr2 = prompt('请输入 ...

  5. 程序员必看:如何降低APP软件开发的成本?

    程序员必看:如何降低APP软件开发的成本? 作为一名曾经的程序猿,一直想写一点东西给大家分享一下,今天终于动笔了,写写我们在开发的过程中怎样才能更快更好的进行开发,降低app开发成本.无论是个人开发者 ...

  6. ciTerm - 程序员终端摸鱼神器,建议全屏后体验效果更佳

    摸鱼神器哪家强,程序员盒子找ciTerm!!! ciTerm是个啥? ciTerm:coder iTerm,是由程序员盒子出品的一款程序员在线摸鱼神器,给你终端般的摸鱼使用体验!对,有了它明目张胆摸鱼 ...

  7. 《当程序员的那些狗日日子》(二十二)代码民工

    三个月的试用期结束后,我顺利转正. 之前面试时我跟曾经理谈好的转正后的工资比试用期高一千块钱,但是由于此前不久老总从外面请来了一位副总,这位副总新官上任,在我转正后的工资上给我压低了五百块钱,他的说法 ...

  8. 程序员离职代码交接_程序员离职大半个月,被老板命令回单位讲代码,员工:一次1万...

    正常情况下,如果我们已经被辞退大半个月了,那么与上一家公司也就没了任何关系,而根据<劳动合同法>的规定,离职人员应该按照双方的约定,办理工作交接,公司也应当依照法律的规定,在我们办理完工作 ...

  9. 程序猿的节日:1024,今天祝愿全球所有程序猿们、IT精英们节日快乐!——我在上海写代码

    程序猿的节日:1024,作为程序猿,祝全球所有程序猿们.IT精英们节日快乐!--我在上海写代码 ​ 程序猿的节日: 祝愿全天下程序猿们.IT精英们节日快乐!今天是属于我们的节日,该狂欢的时候,就不要吝 ...

最新文章

  1. SyntaxError: Non-UTF-8 code starting with ‘\xe4‘ in file解决办法
  2. ubuntu python3.5升级3.6_ubuntu16.04升级Python3.5到Python3.7
  3. SAP UI5 bindItem will cause OData refresh
  4. jaxb 命名空间_在JAXB解组期间应用名称空间
  5. Sentinel配置规则持久化
  6. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(6) - 字符串指令/输入输出指令
  7. Quartus ii 13.1错误合集,持续更新
  8. python常用模块一览表_python 常用模块
  9. 老年手机计算机的按键怎么调至桌面,怎样设置一键回到桌面啊,就是这个图标(如图)...
  10. 文献按时间排序_论文参考文献详解~
  11. PyCharm设置Python版本
  12. STM32 硬件IIC OLED
  13. java母类_java关键字分类详解
  14. Android获取超级管理员权限
  15. C++ Primer 读书笔记及知识点延伸 chapter2
  16. 如何克服自己懒惰的坏习惯?
  17. php添加学生信息,PHP开发 学生管理系统之添加信息PHP页面
  18. OK外呼中心配置的电话系统规则
  19. IBM人工智能新项目——寻找外星人
  20. HTTP协议 chunked

热门文章

  1. modified: xxx(modified content, untracked content)
  2. SMO学习笔记(二)——还原(恢复)篇之完整恢复
  3. bzoj 1691: [Usaco2007 Dec]挑剔的美食家
  4. jQuery EasyUI 表单插件 - Datebox 日期框
  5. MATLAB——scatter的简单应用
  6. Word2010开发——操作文档
  7. perl XML创建XML文件
  8. 如何理解jdk8通过行为参数化传递代码
  9. python2.7和3.7共存_centos7 python2 和python3 共存[转]
  10. KNN(k-NearestNeighbor)