从前,任何程序的任何功能,都需要一行一行敲出来。

后来,程序猿要写的代码越来越多,世界上便有了各种各样的API,来减少大家的工作量。有些功能,可以让API来帮我们实现。

不过,人类写下的话,API并不是每一句都能听懂。语言不通的话,愿望就无法实现。

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

吃得不多,写得不少

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

这个应用叫Bayou,是在美国国防高级研究计划局 (DARPA) 和谷歌研究院的资金支持下诞生的。

Bayou的爸爸们说,这个孩子和它的前辈不同。以前那些会写程序的AI,都需要事先投喂大量细节,才能开始生成代码。有空写好那些细节,不如自己写个程序了。

而要支配Bayou,开发者只要给它吃一点点信息,比如几个小小的prompt,它就会善解人意地猜测,人类想要怎样的程序,然后疾速补全代码。

△input

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

△output

然后,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增加一些自然语言处理技能,也想在用户体验里增加一些交互性。

调戏Bayou传送门:

http://askbayou.com/

论文传送门:

https://arxiv.org/pdf/1703.05698.pdf

这是发表在ICLR 2018的论文。不过,在5月1日的温哥华,团队可能又要端上新版本了。

有个AI陪你一起写代码,是种怎样的体验?| 附ICLR论文的更多相关文章

  1. 为微软samples-for-ai贡献代码是种怎么样的体验?

    推送原文链接:传送门 关注SomedayWill,了解为微软项目贡献代码的始终. 还记得微软神器samples-for-ai吗?它可不仅仅可以用来安装框架,它其实是个开源的AI样例库,以Visual ...

  2. 让 AI 为你写代码 - 体验 Github Copilot

    前几天在群里看到有大神分享 Copoilot AI 写代码,看了几个截图有点不敢相信自己的眼睛.今天赶紧自己也来体验一下 Copoilot AI 写代码到底有多神奇. 申请 现在 Copoilot 还 ...

  3. AI写代码! 神器copilot介绍+安装+使用

    !郑重提示!!!!!!!: 正在学编程.算法的同学请千万不要依赖此插件,否则你可能甚至无法手写出一个for循环 AI帮我写代码?我帮AI写代码?庄周梦蝶?蝶梦庄周?十分梦幻. copilot在VSco ...

  4. AI框架外部用户贡献代码

    AI框架外部用户贡献代码 概述 飞桨是百度自主研发的一款开源的深度学习框架,是主流深度学习框架中首个完全国产化的产品,已经在农业.医疗.林业.科研.服务等领域成功应用.无论是已入职场的深度学习从业者. ...

  5. 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

    直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...

  6. ClownFish:比手写代码还快的通用数据访问层

    http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...

  7. Markdown: 用写代码的思维写文档

    作者:吴香伟 发表于 2014/08/07 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 本文不讲解Markdown的语法规则,只关注它带来的好处以及我使用的方 ...

  8. 【腾讯Bugly干货分享】深入理解 ButterKnife,让你的程序学会写代码

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578753c0c9da73584b025875 0.引子 话说我们做程序员的,都 ...

  9. 不需要写代码,文件夹右键cmd定位指定目录

    引子 这篇文章其实本来不是这样的,因为我用C#的代码实现了一个程序,后面才突然发现,我太傻太天真了,明明不需要写程序和写代码的,结果自己把自己二住了. 我们来看看效果图. 由于,我自己的原因,这个功能 ...

随机推荐

  1. mdev自动创建和删除设备节点

    设备节点的创建有二种方法: 1)手动创建:mknode命令  当insmod后,还需要手动moknod创建设备节点才能被应用层打开,并且使用完成之后还要删除节点. 2) 自动创建:mdev mdev, ...

  2. iOS:PrefixHeader / 头文件 / 宏定义(18-03-02更)

    宏定义,不一定放在PCH文件,可能放在一个.h文件,再用PCH包含进来. 1.屏幕尺寸 // 屏幕尺寸 #define kSCREEN_WIDTH [UIScreen mainScreen].boun ...

  3. Mysql基于Linux上的安装

    MySQL 在Linux/Unix安装 所有平台的 MySQL 下载地址为: MySQL 下载 . 挑选需要的 MySQL Community Server 版本及对应的平台. 注意:安装过程需要通过 ...

  4. java实现验证码功能主要代码

    package com.baojuan.servlet; import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;i ...

  5. 跨域详解之-----Jsonp跨域

    一.通过jsonp跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的. 比如 ...

  6. 使用Letsencrypt做SSL certificate

    为什么要使用Letsencrypt做SSL certificate? 最简单直接的原因是免费.但是免费存在是否靠谱的问题,尤其是对安全要求比较高的网站,需要考虑使用letsencrypt的安全性是否符 ...

  7. 【淘宝客】批量提取QQ号

    1:打开QQ群官方,网址:http://qun.qq.com/ 2.点击导航栏:群管理 3.点击成员管理,选择需要提取QQ号的群 4.全选复制群成员 5.打开网址:http://tool.oschin ...

  8. 安装jenkins环境之jdk8

    Launchpad PPA Repositories是很有用的非ubuntu官方的第三方个人资源库,可以很方便地安装第三方软件. 但是在运行add-apt-repository命令时,有时会提示命令不 ...

  9. python学习笔记:第16天 面向对象02--对象中的成员

    目录 ⼀.类的成员介绍: 二.类的成员-变量 三.类的成员-方法 四.类的成员-属性 五.私有属性 ⼀.类的成员介绍: ⾸先, 什么是类的成员. 很简单. 我么能在类中写什么? 写的内容就是成员. 到 ...

  10. Batch Normalization 批量标准化

    本篇博文转自:https://www.cnblogs.com/guoyaohua/p/8724433.html Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效 ...