如何编写高效代码?aiXcoder编程机器人正确解锁“程序猿”新技能
996、发际线后移······是对程序员真实生活状态的概括,然而,每天24小时连续在线的工作强度,并不能从根本上提升程序员的的开发效率。
此外,现在开发者所书写的代码,大多都已被重复使用多次。即便如此,他们依然要被复杂、繁复的代码逻辑占去大量时间,未能把更多的时间和精力真正的投入到富有创造性的劳动当中。
近日,猎云网接触到一款智能编程机器人aiXcoder——这是一款人工智能辅助软件,可以将人工智能与软件开发连接起来,利用人工智能技术辅助开发者自动进行程序编写。
aiXcoder成立于2018年初,据CTO郝逸洋介绍,aiXcoder智能编程机器人可以帮助编程开发者们承担大部分劳动:比如处理跟程序生成、理解及分析相关的事情,像代码自动补全(辅助程序员编写代码)、相似代码搜索、错误自动定位(帮助程序员找bug)以及代码的规范性检查等等。
预测程序员编程意图,实现代码自动补全
在aiXcoder的辅助下,程序员将摆脱过去逐字逐句的编程模式。以代码自动补全功能为例,它能够自动预测程序员的编程意图,为开发者推荐出的代码补更长、更准确,从而程序员在编写过程中可以通过“一键选择”的方式,直接补全代码。
aiXcoder“一键代码补全”
不仅如此,经过训练的aiXcoder还能根据程序员使用习惯,对频繁使用的成员、方法进行智能排序,从而大大提高代码的编写效率。
而且,aiXcoder还能在程序编写的过程中,通过智能的搜索并推荐与当前功能代码相似的程序,开阔了程序员的思维,为程序员提供了有力的参考。
智能搜索与相似代码推荐
采访过程中,郝逸洋亲自演示了aiXcoder的使用过程,当他在编写程序时,aiXcoder自动预测并迅速给出了提示,几乎整一句代码都能通过aiXcoder的自动补全技术实现正确编写,按照这种方式,一个程序在短时间内就能轻松完成。
正是这样一个aiXcoder智能编程机器人,能将编程开发人员的效率和质量提上去,同时能把人从那些复杂的、繁复的代码逻辑中解脱出来。
aiXcoder就像一个时刻陪伴程序员工作的“伙伴”,与程序员一起编写代码,帮助程序员查缺补漏。
aiXcoder——一个会学习的“引擎大脑”
据猎云网了解,aiXcoder强大的代码自动补全技术,区别于普通编译软件(比如IDE)自带的基于编程语法的代码提示,aiXcoder是基于语义进行代码生成补全的——其背后是一个“会学习”的深度学习引擎大脑。
aiXcoder 采用了专门应用于程序分析与生成的特定深度神经网络模型,其原理是用深度神经网络构造起一个庞大的深度神经网络体系,然后基于GitHub和Stackoverflow等优质平台上的开源代码数据集加以训练,最后针对不同的任务、对引擎大脑进行特别训练,以插件的形式整合在常用的IDE中。
aiXcoder的原生技术来源于北京大学高可信软件技术教育部重点实验室,首席科学家李戈是北京大学信息科学技术学院软件研究所的副教授,2013年,他曾到斯坦福大学AI实验室中的吴恩达团队下,以访问学者的身份进行合作研究。
在此期间,李戈提出了利用深度神经网络进行程序分析和生成的想法。
对于这个想法,曾有Stanford教授提出自己的疑惑:“计算机知道程序的一切,它可以编译、可以run(运行),你为什么还要分析他?”
在李戈看来,“计算机虽然能运行程序,但并不知道程序的语义,这就是为什么有一些恶意的程序还会被计算机所运行。如果它知道程序的语义,就不会去运行它。我想构造一个神经网络,使其专门用来分析程序的语义。在此基础上,还可以构造深度神经网络用于程序的生成。”
这,就是aiXcoder最初的思想来源。
北大坐阵,团队成员缺一不可
李戈所在的研究团队北京大学高可信软件技术教育部重点实验室,也是国际上最早运用深度学习技术进行计算机程序分析与生成研究的团队之一。
它以北京大学软件研究所为基础建立,并由我国著名的软件科学家杨芙清院士、梅宏院士带领,是国际上领先的软件与人工智能研究团队。
此外,硅心科技团队成员也大都在软件领域具有多年的丰富经验。
COO刘洋毕业于南开大学本科、北京大学硕士,后就职于了阿尔卡特朗讯、黑莓,在朗讯工作了五年后又开始自己的创业之旅,具有丰富的创业经验。
CTO郝逸洋毕业于北京大学本科、日本早稻田大学硕士,后去就职于微软亚洲工程院院人工智能语音交互团队,一直从事人机智能交互、深度学习技术等相关方向上的研究与开发。
打造特色的B、C端服务
随着公司的成立,aiXcoder智能编程机器人也在不断的进步。
当前,aiXcoder采用“云服务”的运行模式,它的深度学习引擎部署在云服务器中,就如同一个云端的“编程大脑”,开发者只需要下载一个客户端插件,这其中涵盖了IntelliJ、Eclipse、VS-Code等主流集成开发环境,支持当下各种主流的开发语言,如Python、Java、C++等。
郝逸洋表示,aiXcoder将于近期推出PHP和JavaScript语言等前端开发语言的支持。
在此基础上,开发者们只需选择相应的插件即可实现与“云端AI服务”的对接,随时随地使用自己的“编程大脑”,不需要更繁琐操作流程。
aiXcoder主要面向企业用户提供智能编程服务,对于企业用户,aiXcoder提供了定制化的专属服务,以“企业私有云”的方式部署在企业中,利用企业自己的代码对深度学习引擎进行训练,使aiXcoder学习到企业代码中的隐含逻辑和知识,从而为企业中的开发者提供贴身的编程辅助。
同时,配合aiXcoder的企业开发者服务模式,推出了“aiXmanager开发质效提升”一体化解决方案,aiXmanager能够对程序员的“指尖行为”所形成的大数据进行分析,有效揭示出开发过程中存在的一系列效率和质量问题,帮助企业挖掘潜在的开发潜能。
在此之前,程序员的“指尖行为”是软件开发中典型的“暗数据”,价值大却难以捕获、难以分析。在aiXcoder的帮助下,这些暗数据被充分利用了起来。
哪些技术难点最影响开发效率?哪些代码质量问题最为突出?哪些程序代码耗费时间最多?哪些代码被修改的次数最多?等等这些影响企业开发能力的潜在问题被明明白白揭示出来。
面向C端用户,aiXcoder主推两个版本,分别是Community版(社区版)和Professional版(专业版)。社区版可以免费下载使用,而Professional版则会更智能,它能够从用户编写的代码中不断学习个性化的编程模式和编程习惯,能为用户打造一个更加智能的私人编程“助理”。
现阶段,aiXcoder团队已经为华为、百度、阿里巴巴、软通动力等公司提供了企业定制服务。
来自企业开发者的反馈信息表明:在aiXcoder的帮助下,编程开发人员能够在最短的时间内高效的编写代码,有效的节省了程序员的开发时间,同时也降低了程序员对API文档或相关信息的依赖。使得将开发者从繁复的代码逻辑中解脱出来,让他们有机会能投入到一些更有创新性的工作上去。
aiXcoder完胜kite及TabNine
当前在智能编程机器人领域内,还有来自美国的两款插件——kite、TabNine也和aiXcoder处于同一赛道。其中,kite在2019年完成了1700万美元的A轮融资。
在公开、透明的条件下对比,aiXcoder的效率提升是上述两个竞品的1.5~3倍;aiXcoder包含更多的长推荐(多于两个词),数量是竞品的3~5倍;aiXcoder包含更多的一整行代码推荐,长推荐数量是竞品的2~10倍。
例如,在与kite的迎面对比中,用kite官方网站给出的示例代码进行对比,普通IDE需要102键完成输入,kite可以降低为54键,但aiXcoder仅需24键即可完成输入;在以Tensorflow公开开源代码进行的测试中,kite仅有24次正确推荐,此时aiXcoder的正确推荐则达82次,是kite的3.42倍。
TabNine是近期被国内媒体推送的一款插件,在与TabNine的对比中,aiXcoder的优势更为明显。
用TabNine官方网站给出的示例代码进行对比,aiXcoder仅需132次按键即输入完毕,而TaNine需要228次按键才能完成输入,Kite也需要214次按键才能完成,在该示例中,aiXcoder的输入效率是TabNine的1.73倍,是kite的1.62倍,可见aiXcoder的优势非常明显。
实际IDE中代码补全对比
在未来,aiXcoder想要打造成一款能够自动帮助程序员完成程序编写的“智能编程机器人”,以低耗时、高效率、便捷式的方式切入到开发者的工作中。
“aiXcoder将取代人类程序员吗?”
对此,李戈表示:“我们从来没想要替代掉人类,我们只是想让人类的机械劳动少一点、重复劳动少一点,把更多时间和精力用到创新性的工作上去。”