首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

吃得不多,写得不少,让人工智能帮你写代码指日可待

从前,任何程序的任何功能,都需要一行一行敲出来。后来,程序猿要写的代码越来越多,世界上便有了各种各样的API ,来减少大家的工作量。有些功能,可以让API 来帮我们实现。不过,人类写下的话, API 并不是每一句都能听懂。语言不通的话,愿望就无法实现。

现在,有会写代码的AI 可以替你召唤API 。以及,它能做的并不止这些。

吃得不多,写得不少

莱斯大学的一群极客,发布了一个基于深度学习的代码编写应用。神经网络从GitHub这样的线上源代码库里汲取养分,写自己的程序。

这个应用叫Bayou,是在美国国防高级研究计划局( DARPA ) 和Google 研究院的资金支持下诞生的。Bayou 的爸爸们说,这个孩子和它的前辈不同。以前那些会写程序的AI ,都需要事先投喂大量细节,才能开始生成代码。有空写好那些细节,不如自己写个程序了。而要支配Bayou ,开发者只要给它吃一点点信息,比如几个小小的prompt ,它就会善解人意地猜测,人类想要怎样的程序,然后疾速补全代码。

举个简单的栗子,假设你想写个读取文件的Java 方法。如果你知道某个API 里面有个功能叫做readline ,就可以写出上面这样的代码。

然后, Bayou 便知道它要召唤的技能叫做readline ,随之为你输出以上代码,只要用这段代码来调用你需要的API 就可以了。

不要忘了,专门给Bayou 看的部分,要标上///,以示害羞。

除了调用一个或者几个API ,我们还可以用API 数据类型把自己的要求具体化。另外, Bayou 有一个非常友好的特点,便是多模态,就算把各种不同的术语混进同一段代码,它也能看懂。

草图训练大法

毕竟,这只AI 已经从大约1500 个安卓应用里,学习了人类编写的上亿行Java代码。

用一种名为「神经草图学习( Neural Sketch Learning ) 」的方法来训练神经网络, Bayou 可以给自己想要读取的每个程序,创建一个树状结构的句法模型,称作「草图( sketch ) 」。

当有人对Bayou 提出要求的时候,系统会先做一个判断,感受一下自己要写的程序是怎样的。然后,就是为代码库里同类型的程序做草图。这里只识别high – level 模式,而忽略所有low – level 特征。

在那之后, Bayou 还有一个用来理解low – level 细节的模块,可以自动进行逻辑推理。它会根据第一步做出的判断,生成我们可能需要的代码。哪怕问题没有解决, Bayou 给出的代码示例或许也能帮我们提出更合适的问题。这时候再去Stack Overflow 寻求答疑,疗效可能会好一些。

孩子你还小

团队认为, Bayou 非常适合为各种API 编写代码示例。不过,现在的它并不十分成熟,还有一些局限性。

比如,它目前支持的API 非常有限,只有java.lang , java.io 和Java.util 。再比如,它没办法处理通配符的多种类型。

作为一只年幼的AI , Bayou 还有很长的路要走。抱着GitHub 修炼的好处是,从那里识别出的模式会比较通用;缺点是GitHub 上面的项目质量参差不齐。

目前,团队正在给Bayou 增加一些自然语言处理技能,也想在用户体验里增加一些交互性。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180620A0JGBE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券