当前位置: 首页 > 编程日记 > 正文

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

近日,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 记录

技术

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

分享

点收藏

点点赞

点在看

相关文章:

微软职位内部推荐-Software Engineer II-News

微软近期Open的职位:News is a critical areas for integration of mobile and services, one of the top priorities in Microsoft. Microsoft is innovating rapidly to grow its share of this market by providing the news industry with a world-class News platform and…

css3中的box-sizing属性

盒子宽度、高度计算公式:css元素宽度 width padding bordercss元素高度 height padding border css3之前,当我们需要呈现一个宽度为200px的盒子时,我们需要减去它本身的内边距、边框,然后得知属性的width应该设置为多少。例…

影响Lucene索引速度原因以及提高索引速度技巧

在网上看了一篇外文文章,里面介绍了提高Lucene索引速度的技巧,分享给大家。先来看下影响索引的主要因素: MaxMergeDocs该参数决定写入内存索引文档个数,到达该数目后就把该内存索引写入硬盘,生成一个新的索引segment文…

java 反射 动态代理

在上一篇文章中介绍Java注解的时候,多次提到了Java的反射API。与javax.lang.model不同的是,通过反射API可以获取程序在运行时刻的内部结构。反射API中提供的动态代理也是非常强大的功能,可以原生实现AOP中 的方法拦截功能。正如英文单词refle…

公路病害检测有了“智慧眼”,思谋AI“助力”广东省高速公路

近日,思谋科技与广东省某高速企业达成合作,智慧交通一体化平台病害检测模块已成熟落地,将使广东省高速公路病害检测进入高频率、高效率、智能化时代,以行业领先的AI技术助力智慧交通产业的发展。 近年来,我国公路建设…

无准备,不编程——计算机达人成长之路(15)连载

8、俄罗斯方块(三)编码 嬉闹归嬉闹,最终二人静下心来,绍绍开始请教俄罗斯方块的设计,木鸿飞也不藏拙,马上开始讲解;“游戏其实分为三重循环,也就是可以分为三个部分。” “哪三个&am…

Memcached 缓存系统的-介绍、安装以及应用

一. memcached 是什么?memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.memcached是一个高性能的、分布式内存对象缓存系统&am…

被算法“监控”的打工人,这家公司 150 人被算法裁定为“不敬业”

整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,一家公司通过 AI 算法裁掉三成员工的消息在网上引起热议。当你上班时突然收到一封邮件显示“效率低下”而要求马上离开公司,你会怎么想呢? 据 Game World Obser…

(转)I 帧和 IDR 帧的区别

I 帧和 IDR 帧的区别:http://blog.csdn.net/skygray/article/details/6223358 IDR 帧属于 I 帧。解码器收到 IDR frame 时,将所有的参考帧队列丢弃 (用x264_reference_reset 函数实现——在 encoder.c 文件中) 。这点是所有 I 帧…

ExtJs 备忘录(3)—— Form表单(三) [ 数据验证 ]

正文一、资料 1.1. 表单提示的方式设置,如: Ext.form.Field.prototype.msgTargetside 该设置为枚举值:qtip,side,title,under qtip:把鼠标移动到控件就可以显示提示信息了,有点像设置了title的input标签一样的效果…

Dynamo 以及一致性哈希简介

本介绍参考 Amazon 的 Dynamo 论文。需要更详细更准确信息的同学请直接阅读原文。 (原文地址http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) 这篇论文本身没提出什么新的思想,正如论文中所说,贡献在于把非常多的技术结…

如何更快速加载你的JS页面

确保代码尽量简洁 不要什么都依赖JavaScript。不要编写重复性的脚本。要把JavaScript当作糖果工具,只是起到美化作用。别给你的网站添加大量的JavaScript代码。只有必要的时候用一下。只有确实能改善用户体验的时候用一下。 尽量减少DOM访问 使用JavaScript访问DOM元…

性价比超高:苹果发布了新数据集,助力室内场景理解

作者:刘媛媛 来源:数据实战派前言计算机视觉界一直渴望能够找到一种方法,让计算机和人们都能够理解室内场景的复杂性。对于许多基本的场景理解任务,很难或不可能从真实图像中获得每像素地面实况标签。一部分研究人员选择通过使用交…

42. fastjson处理下划线和驼峰问题的方法和源码分析

一. 前言 在开发过程中经常遇到json解析和生成的问题,所以用自己也一直用fastjson来实现这个功能。 但是,最近遇到一个问题: json字符串里面的数据很多都是"_"下划线的比如,op_id。 而在java里面,很多都是驼峰的写法&…

Cacti Weathermap添加主机在线状态图示检测

Weathermap 中文名称翻译为 气象图weathermap版本支持:0.94及最新版1、首先添加气象图 图例像这样。编辑需要添加图例的气象图配置文件 (气象图配置文件默认在/var/www/html/plugins/weathermap/configs/ 目录中)其中 KEYPOS指定全局图例名称以及 图例位置和 图例标…

jquery技巧总结

一、简介1.1、概述随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype、YUI、jQuery、mootools、Bindows以及国内的JSVM框架等,通过将这些JS框架应用到我们的项目中能够使程序员从设计和书…

Unet网络实现叶子病虫害图像分割

作者|李秋键 出品|AI科技大本营(ID:rgznai100) 智能化农业作为人工智能应用的重要领域,对较高的图像处理能力要求较高,其中图像分割作为图像处理方法在其中起着重要作用。图像分割是图像分析的关键步骤, 在复杂的自然背景下进行图像分割, 难度较大。 在传…

SilverLight 4页面跳转大全

http://blog.csdn.net/lihaiyin/article/details/5674766 //Silverlight页面的跳转 //(Application.Current.RootVisual as IContent).Content new DragControl(); //普通页面跳转 HtmlWindow html HtmlPage.Window; //html.Navigate(new Uri("http://www.0379zd.co…

Linux 性能监控常用命令

工具简单介绍top查看进程活动状态以及一些系统状况vmstat查看系统状态、硬件和系统信息等iostat查看CPU 负载,硬盘状况sar综合工具,查看系统状况mpstat查看多处理器状况netstat查看网络状况iptraf实时网络状况监测tcpdump抓取网络数据包,详细…

jquery 1.6以上版本 全选

2019独角兽企业重金招聘Python工程师标准>>> <html xmlns"http://www.w3.org/1999/xhtml"> <head><title>全选&#xff0c;不全选&#xff0c;反选</title><script src"jquery.js" type"text/javascript"…

想提高代码水平,做到这点就够了

【CSDN 编者按】本篇文章来自于《程序员》杂志的一位老读者&#xff0c;他从大学时最深刻的记忆谈起&#xff0c;到编程路上的心得体会&#xff0c;再到对广大年轻程序员的建议&#xff0c;全篇娓娓道来&#xff0c;希望能对大家有所帮助。作者 | 姜宁 华为开源能力中心技术专…

modified: xxx(modified content, untracked content)

from:://http://blog.csdn.net/huguohu2006/article/details/7045052 提交代码到服务器后发现git clone下来的有些目录是空的。 查看服务器的目录果然是空的。看本季git add . 后查看git status modified: xxx(modified content, untracked content) 大概意思是xxx目录没有…

一些JSON相关的函数

JSON作为一种轻量的数据传输格式&#xff0c;越来越受到人们的青睐。下面是我仿照Prototype的一些实现。 JSONFilter:/^///*-secure-([/s/S]*)/*///s*$/, unfilterJSON:function(json,filter) { return json.replace((filter || dom.JSONFilter), function(a,b){ return b |…

太任性!17 岁少年买不到回国机票,因“泄愤”攻击航司系统,被判刑 4 年

整理 | 王晓曼出品 | 程序人生&#xff08;ID&#xff1a;coder _life&#xff09;因买不到回国机票&#xff0c;一气之下&#xff0c;身处境外的17岁少年陈某竟多次、持续攻击某航空公司计算机系统&#xff0c;致使该航空公司对外服务网络全面瘫痪近四小时&#xff0c;5000余万…

hbase2.0.0-安装部署

依赖hadoop 环境&#xff0c;我这边的版本是hadoop-2.6.5 选择hbase2.0.0版本的时候&#xff0c;去官网查看支持的hadoop版本 1、伪分布式安装 下载&#xff1a;http://mirror.bit.edu.cn/apache/hbase/2.0.0-alpha4/ 版本&#xff1a;hbase-2.0.0-alpha4-bin.tar.gz 2、tar -z…

Git详解之二 Git基础

Git 基础 读完本章你就能上手使用 Git 了。本章将介绍几个最基本的&#xff0c;也是最常用的 Git 命令&#xff0c;以后绝大多数时间里用到的也就是这几个命令。读完本章&#xff0c;你就能初始化一个新的代码仓库&#xff0c;做一些适当配置&#xff1b;开始或停止跟踪某些文件…

一致性哈希(Consistent Hashing)

在大型web应用中&#xff0c;缓存可算是当今的一个标准开发配置了。在大规模的缓存应用中&#xff0c;应运而生了分布式缓存系统。分布式缓存系统的基本原理&#xff0c;大家也有所耳闻。key-value如何均匀的分散到集群中&#xff1f;说到此&#xff0c;最常规的方式莫过于hash…

CT片居然可以这么玩:用头部CT断层扫描片复原三维头像

作者&#xff1a;天元浪子 来源&#xff1a;Python作业辅导员前言CT是现代医学影像的主力设备&#xff0c;寻常百姓并不陌生。通常&#xff0c;一张CT片由多张连续断层扫描的图像组成。在医生眼中&#xff0c;CT片展示了人体器官的形态和性质&#xff0c;是判断病人健康状况的重…

Nginx学习笔记(一) Nginx架构

Nginx全程是什么&#xff1f; Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。 daemon守护线程 nginx在启动后&#xff0c;在unix系统中会以daemon的方式在后台运行&#xff0c;后台进程包含一个master…

PXE实现批量部署linux系统

pxe批量部署linux服务器1、pxe介绍PXE是有intel设计的协议&#xff0c;它可以使计算机通过网络启动&#xff0c;协议分为client和server两端&#xff0c;PXEclient在网卡的ROM中&#xff0c;当计算机引导时&#xff0c;BIOS把PXE client调入内存中执行&#xff0c;并显示出命令…