您好、欢迎来到现金彩票网!
当前位置:盛通彩票app下载 > 根编译程序 >

重新定义程序员职业Facebook推出代码推荐工具Aroma

发布时间:2019-05-05 02:54 来源:未知 编辑:admin

  公募基金的下一个二十年,将围绕着养老、科创、智能投资等展开,对此,“养老与基金高峰论坛”4月23日启幕,多位行业大咖齐聚共议未来,思辨如何更好的建设第三支柱养老金、夯实资产管理、支持科技创新!【详情】

  它能帮助程序员轻松地找到可以“参考使用”的代码,节省他们日常开发工作流程中的时间和精力。

  比如,一个安卓程序员想要了解其他人如何解码手机中的bitmap,他可以使用下面的这些代码直接进行搜索:

  这段代码来自与五个实现类似功能的代码,但是去除了相关细节,以便程序员更好地参考。

  Facebook表示,使用这一工具,程序员再也不用像原来那样,自己手动浏览几十个代码搜索结果了。

  哪怕代码库非常大,它也能在几秒钟内给出推荐,并且不需要提前进行模式挖掘。

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

  首先,Aroma会解析语料库中的每个代码,并创建其解析树,并将代码集索引为稀疏矩阵。

  然后,从每个代码的解析树中提取一组结构特征。这些结构特征都是经过精心选择的,可以捕捉每个代码的用法、调用方法和结构信息。

  当一个程序员编写新的代码时,Aroma会以上述的方式创建一个稀疏向量,并将该向量与包含所有现有代码的特征向量的矩阵相乘。

  尽管代码语料库可以包含数百万种代码,但由于稀疏向量和矩阵的点积能够非常高效的实现,这种检索的速度会很快。

  通过检索得到推荐代码的候选集之后,接下来就是对其进行聚类。为了做到这一点,Aroma要先根据候选的各个代码和查询代码的相似性来对它们进行重新排序。

  因为稀疏向量只包含关于存在哪些特征的抽象信息,所以点积分数低估了代码之间的实际相似性。

  因此,Aroma对方法语法树进行修剪,去掉方法主体中不相关的部分,只保留与查询片段最匹配的部分,并根据候选代码片段与查询的实际相似性对其重新排序。

  在获得了最后的排序列表之后,Aroma会运行一个迭代的聚类算法来寻找相似的代码片段,并在创建代码时推荐额外的代码语句。

  交叉算法的工作原理,是将所有推荐代码中的第一个代码片段作为“基础”代码,然后与其余的代码进行对比,迭代地对其进行“修剪”。

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

  基于上述的方法,Aroma会对第一段代码和第二段代码进行比较,来找到公共代码。第一段代中关于ImageView的代码,没有出现在第二段代码中,因此将被删除。结果如下所示:

  修剪之后剩下的代码,就是所有方法中常见的代码,它将成为最后被推荐的代码。

  此外,Aroma的算法也可以确保这些推荐彼此之间有很大的不同,因此程序员可以看到几个不同的代码,来学习各种各样的编程模式。

  虽然这一工具受到了不少程序员的好评, 但也有一些程序员表达了不一样的观点。

  有人在Hacker News上表示,这也许就是自己作为程序员职业生涯结束的开始。

  他说,很多人搜索习惯用法的主要用例,就是知道如何进行高级别的重构,而不是获得相似的代码。

http://dora6.net/genbianyichengxu/217.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有