百度王海峰:AI赋能软件开发将提高程序员工作效率

百度王海峰:AI赋能软件开发将提高程序员工作效率
2018年06月29日 11:20 新浪科技

  新浪科技讯 6月29日上午消息,由工业和信息化部、北京市人民政府共同主办的第二十二届中国国际软件博览会今日在北京举行,百度高级副总裁王海峰出席全球软件产业发展高峰论坛,并发表“软件智能开发”主旨演讲。

  王海峰表示,从以百度为例,每日新增需求卡片6700张,每日新增代码153万……现在,编程现场和软件开发已经不是简单的一人一台电脑读写代码,而是多地的交互协同。软件开发也呈现出大数据特点,具有瞬时性、海量性、多样性、可变性。

  AI技术发展迅速,在各行各业均产生很大的影响,因此针对人工智能也产生了很多担忧,在王海峰看来,AI赋能软件开发,将有效地提升程序员的工作效率。

  王海峰表示,未来将是构建以编程开发为核心的快速迭代过程,同时软件开发机器人和程序员现场开发相结合,程序员的工作效率将得到提高,生活也会更美好。(何畅)

  以下为王海峰演讲全文:

  王海峰:各位来宾、各位朋友大家上午好,非常有幸有机会在软博会上跟大家交流一下我们的一些工作,我今天讲的题目是“软件智能开发”。当然我们这个大会的主题就是软件,软件也是我们这个时代一个非常重要的基础,刚才尤校长讲起软件定义,而人工智能也是这个时代最热门的词汇之一。那么软件和智能在一起会发生什么。

  首先我们看一下软件,今天这个数字已经被提及好几次,2017年中国软件和信息技术服务业的产值已经达到5.5万亿,而全球19个国家软件支出占整个GDP都已经超过0.5%。在我国软件是很多重要国家战略和重大任务部署的基础,不管是大数据、人工智能、互联网+等这些战略,还是十三五要强化科技创新引领作用,着力推进供给侧改革等等,软件都是很重要的基础。

  那么软件现在越来越重要,而规模也越来越大,在影响各行各业。那么软件面临一些什么挑战呢?

  我们看一下,首先软件产品交付的需求在极具提升。以百度为例,我们百度公司每天新增的需求卡片就达到6700张,而每天线上发布的次数也达到了700次等等。另一方面,在需求量越来越大,代码产生的量也越来越大的同时,在软件整个开发过程中,在写程序现场的数据规模也极具在膨胀。比如说还是以百度公司为例,每天新增的代码量就超过150万行,同时又很多旧的代码在删除,每天删除的代码量也超过60万行,每天评审的次数,每天云端编译的次数,每天触发代码检查的次数也都过万次。还有一个特点现在软件不再说一个人拿一台电脑自己写程序这样一个开发过程,而是一个大规模的跨地域的交互协同,已经常态化。

  比如说以百度大脑为例,百度大脑的工程师分布在北京、上海、深圳、硅谷、西雅图等很多不同的地区,超过三千人每天在协同开发。相应在这样一个大规模的开发过程中,就产生了编程现场大数据,这个过程中就即时产生以编程为中心的海量数据,呈现出非常典型的大数据的特点,比如说瞬时性、海量性、多样性和可变性。那么这些大数据在软件开发过程中,是软件开发过程中的产物,另一方面为软件开发带来什么呢?利用这些编程现场大数据,通过人工智能技术赋能会使软件整个开发过程会带来很大的变化。接下来我们再说一下人工智能。

  现在都知道人类的第四次工业革命一个核心科技就是人工智能,人工智能的迅速发展已经带来了各行各业非常多的改变。人工智能发展了60多年,过去这若干年带来了非常高速的发展,最核心的支撑有三点,就是算法、算例和数据,这三者共同作用导致人工智能迅速在各行各业产生非常重大的影响,而在很多方面人工智能的能力已经超过了人类,比如说计算机下棋,包括计算机语音识别,包括一些场景下的图象识别等等,很多方面在逐渐超过人类。因此也有很多人在说,会有对人工智能有一些担心,比如说这是一个片子里提到的,人工智能是不是会取代人类很多工作,导致人的失业。相应我也在百度搜索里面查一下人工智能会取代程序员,大家看到有三百多万条结果,很多人关心人工智能会不会使程序员失业。

  我们观点是什么?我们认为人工智能会利用刚才我提到的编程现场大数据去赋能软件开发,使整个软件开发的过程更高效,软件开发的结果更高质量,而不是说替代了程序员。为什么是这样?下边给大家解读。为了解读人工智能到底怎么样去赋能软件开发,先看一下一个典型的百度程序员他工作大概是什么样的?他需要接需求、需要开发,需要代码的评审、编译、构建而且发布等等大量的工作做。下面这些数字就是百度上万名工程师每天产生的代码的相关的这些总量的数据。我们在微观上看一下程序员的工作,比如说有了需求,要开始开发了,要看代码,要查很多文档。因为并不是每一行代码要重头写,需要调用很多模块,需要调试,需要改代码,需要编译测试等等。同时出了问题,也要去追查问题,追查问题要分析问题,要复现,要定位,定位之后可能又进入到一个开发这样一个迭代的过程。我们都知道现在的软件开发是一个高速迭代的过程。

  刚才说了程序员做事情的全景,程序员每天干的事情最多的时间花在什么地方?就是读代码、写代码和调试代码。这个过程中有大量的数据,怎么样去提升程序员的效率,以及工作的质量?刚才我们说了读代码、写代码、调试代码这些,如果提升这个过程的效率,就会使整个软件开发的效率得到很大的提升,这是一个我们整个通过编程现场大数据做这种软件智能开发的一个整体的技术构架图。我们看到有基础处理的编程现场大数据,进行采集、清晰、校对,同时有跨地域动态感知的编程环境,有这两层基础以后,我们可以进行一些更智能化的编程,环境框架的搭建,比如程序的学习和现场代码生成,包括编成规范与风格的指导,现场代码的构建以及接口的推荐,包括这种缺陷的分析诊治这些。有了所有的技术可以构建一个人机协同的面向软件开发的一个云平台,形成一个智能的编程机器人。

  给大家一点具体的例子,比如说有一些源代码自动生成的补全的例子,这个背后除了我们有这些数据,我们用人工智能技术会用到很多相关的人工智能技术,比如说百度深度学习框架(英文)的平台,就会用在现在大家看到场景的背后,有这样一个深度学习的框架来支撑去学习这些编程现场大数据,进而可以进行这种代码的生成和补全。当然也可以从这些数据里,自动去学习建模,怎么样对代码里面的问题进行辅助的定位和修复。

  稍微总结一下,我们在逐渐构建这样一个以编成开发为核心的快速迭代的过程,这里边从需求到设计到测试,到部署发布、运维等等一系列的过程,而整个过程中,我们基本可以实现软件生产过程中这些都可以实时进行反馈,同时整个生产过程是高度并行化的。展望未来,我们看到这个图实际上是在软件整个编程,软件开发这样一个演进的过程,我们从最早期,比如说在我上学那个年代,我用到更多是一些工具,比如编辑的工具、编译的工具等等这些,而逐渐智能化水平越来越高会逐渐发展成从这些软件开发工具变成助手,慢慢形成软件开发的机器人和真人的程序员,他们俩之间不是一个互相替代的关系,而是会成为这样一个同台的关系,一起合作开发,让程序员的工作效率变得更高,质量变得更高,程序员的生活也会更美好。当然了最后,程序员产生的软件也会让我们每一个人的生活更美好,让我们的世界更美好,谢谢大家。

百度AI软件开发
新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

苹果汇

众测

来电聊

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片