国家开发银行,Facebook推出代码引荐东西Aroma:解放程序员,木瓜怎么吃

admin 1个月前 ( 04-16 02:45 ) 0条评论
摘要: 这一社交网络巨头在其官方博客上宣布,推出面向程序员的工具Aroma。它能帮助程序员轻松地找到可以“参考使用”的代码,节省他们日常开发工作流程中的时间和精力。...

乾明 发自 凹非寺

量子位 出品 | 大众号 QbitAI

解放程序员,Facebook是仔细的。

这一交际网络巨子在其官方博客上宣告,推出面向程序员的东西Aroma

直击程序员想完成功用,而不知道怎样写代码的痛点。

它能协助程序员轻松地找到能够“参阅运用”的代码,节约他们日常开发作业流程中的时刻和精力。

比方,一个安卓程序员想要了解其他人怎样解码手机中的bitmap,他能够露西皮德尔运用下面的这些代码直接进行查找:

Bitmap bitmap = BitmapFa国家开发银行,Facebook推出代码举荐东西Aroma:解放程序员,木瓜怎样吃ctory.decodeStream(input);

然后,Aroma会给出一些代码举荐:

final BitmapFactory.Options options = new BitmapFactory.Options();
options.iboytUbenSampleSize = 2;
// ...
Bitmap bmp = BitmapFactory.decodeStream(is, null, options);

这段代码来自与五个完成类似功用的代码,可是去狂野转化除了相关细节,以便程冷宫弃后很绝情序员更好地参阅。

除此之外,Aroma也能够集成在编码环境中。


Facebook表明,运用这一东西,程序员再也不必像本来那样,自己手动阅读几十个代码查找成果了。

哪怕代码库十分大,它也能在几秒钟内给出举荐,而且不需要提早进行形式发掘。

现在,Facebook现已将其用到了自己内部代码库中,并为其一些开源项目创立了Aroma版别。

这一东西露脸之后,便引发了巨大的重视。

甚至有人在Twitter上谈论称,能够从头界说程序员这一作业。



Facebook是怎样做到的?

给程序员举荐代码

用Aroma给程序员举荐代码,首要分为3个阶段:

榜首,依据特征的查找。

首要,Aroma会解析语料库中的每个代码,并创立其解析树,并将代码集丁舞王道兰琴书大全索引为稀少矩阵。

然后,从每个代码的解析树中提楚兰菊取一组结构特征。这些结构特征都是经过精心挑选的,能够捕冷俊王爷v幽默王妃捉每个代码的用法、调用办法和结构信息。

从而依据每个代码的特色,为其创立国家开发银行,Facebook推出代码举荐东西Aroma:解放程序员,木瓜怎样吃稀少向量。

最终,一切代码的特征向量构成索引矩阵,用于查找检索。



当一个程序员编写新的代码时,Aroma会以上述的办法创立一个稀少向量,并将该向量与包括一切现有代码的特征向量的矩阵相乘。

点积最高的前1000个代码会被检索出来,作为举荐代码的候选。

尽管代码语料库能够包括数百万种代码,但由于稀少向量和矩阵易燃情愫的点积能够十分高效的完成,这种检索的速度会很快。



第二,从头排序和聚类。

经过检索得到举荐代码的候选集之后,接下来便是对其进行聚类。为了做到这一点,Aroma要先依据候选的各个代码和查询代码的类似性来对它们进行从头排序。

由于稀少向量只包括关于存在哪些特征的笼统信息,所以点积分数轻视了代码之间的实践类似性。

因而,Aroma对办法语法树进行修剪,去掉办法主体中不相关的部分,只保存与查询片段最匹配的部分,并依据候选代码片段与查询的实践类似性对其从头排序。

在取得了最终的排序列表之后,Aroma会运转一个迭代的聚类算法来寻觅类似的代码片段国家开发银行,Facebook推出代码举荐东西Aroma:解放程序员,木瓜怎样吃,并在创立代码时举荐额定的代码句子。



第三,用穿插算法创立代码进行举荐。

穿插算法的作业原理,是将一切举荐代码中天唯艺术酒店的榜首个代码片段作为“根底”代码,然后与其他的代码进行比照,迭代地对风流皇帝其进行“修剪”。

比方下面的这几段代码,每一个都有特定于其项目的代码,但都包括公共的代码。

榜首段代码:

InputStream is = ...;
final BitmapFactory.Options options = new BitmapFactory.Options()手艺扒真空胎最快办法;
options.inSampleSize = 2;
Bitmap bmp = BitmapFactory.decodeStream(is, null, options);
ImageView imageView = ...;
imageView.setImageBitmap(bmp);
// some m国家开发银行,Facebook推出代码举荐东西Aroma:解放程序员,木瓜怎样吃ore code

第二段代码:

BitmapFactory.Options options = new B烧包谷的故事itmapFactory.Options();
while (...) {
in = ...;
options.inSampleSize = 2;
options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeStream(in, null, options);
}

依据上述的方消火栓箱法,Aroma会对榜首段代码和第二段代码进行比较,来找到公共代码。榜首段代中关于ImageView的代码,没有出现在第二段代码中,因而将被删去。成果如下所示:

InputStream is = ...;
final BitmapFactory.Options options = new Bi伯伦不归tmapFactory.Options();
optio国家开发银行,Facebook推出代码举荐东西Aroma:解放程序员,木瓜怎样吃ns.inSampleSize = 2;
Bitmap bmp = BitmapFactory.d圣甲幻瞳ecodeStream(is, null, options);

然后,将得到代码与第三段代码,第四段代行酒探案码进行比较……

修剪之后剩余的代码,便是一切办法中常见的代码,它将成为最终被举荐的代码。

其他被举荐的代码,也是以这样的进程创立出来的。

此外,Aroma的算法也能够保证这些举荐彼此之间有很大的不同,因而程序员能够看到几个不同的代码,来学习各式各样的编程形式。

程序员webmoney注册教程们的忧虑

尽管这一东西受到了不少程序员的好评, 但也有一些程小bb序员表达了不一样的观念。

有人在Hacker News上表明,这或许便是自己作为程序员作业生涯完毕的开端。



也有王苏菁人说,这个东西似乎是企图逼迫机器学习处理实践上没有人有问题的比如。

他说,很多人查找习惯用法的首要用例,便是知道怎样进行高档其他重构,而不是取得类似的代码。



此外,也有人忧虑有人写错了代码,它会不会在其他代码库中大国家开发银行,Facebook推出代码举荐东西Aroma:解放程序员,木瓜怎样吃肆传达……



你觉得呢?这一东西,关于程序员来说,影响几许?欢迎在谈论区给出你的观点。

传送门

Aroma论文链接:

Aroma: Code Recommendation via Structural Code Search

https://arxiv.org/abs/1812.01158

诚挚招聘

量子位正在招募修改/记者,作业地点在北京中关村。等待有才华、有热心的同学参加咱们!相关细节,请在量子位大众号(QbitAI)对话界面,回复“招聘”两个字。国家开发银行,Facebook推出代码举荐东西Aroma:解放程序员,木瓜怎样吃

量子位 QbitAI 头条号签约作者

'ᴗ' 追寻AI技能和产品新动态

文章版权及转载声明:

作者:admin本文地址:http://www.gozeniwa.com/articles/845.html发布于 1个月前 ( 04-16 02:45 )
文章转载或复制请以超链接形式并注明出处泥洼地,心中的平坦道路,需要我们走过你洼地