代码推荐哪家强?Facebook 机器学习技术有话讲
自动补全功能相信大家在写代码时用得不少,这是一个十分方便的功能,但也十分基础,它只是免去了我们输入冗长单词的操作。但如果我告诉你,有一个工具能直接给你推荐代码 —— 可以直接用的代码,你会考虑使用吗?
日前,Facebook 宣布了一个名为 Aroma 的工具,通过 Aroma,开发者可以轻松找到常见的编码模式,而无需手动浏览数十个代码片段,从而节省了日常开发工作流程的时间和精力。
Aroma 基于代码和代码之间进行搜索和推荐,辅以机器学习的加持,即便是在大型代码仓库中也有可观的效率。
说了这么多,下面就来看看 Aroma 是如何进行代码推荐的。
假如一位开发者编写了如下的代码,但同时想了解其他人是如何解码手机 bitmap 的,他就可以使用下面的代码直接进行搜索:
Bitmap bitmap = BitmapFactory.decodeStream(input);
Aroma 会返回一些推荐:
final BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; // ... Bitmap bmp = BitmapFactory.decodeStream(is, null, options);
这段代码来自于五个实现类似功能的代码,但是去除了相关细节,以便开发者更好地参考。
此外,我们也可以把 Aroma 集成到开发环境中。
Facebook 表示除了将 Aroma 部署到自己的内部代码仓库之外,还为其它的开源项目创建了 Aroma 版本。上面的示例就是来自 GitHub 上 5000 多个开源 Android 项目的集合。
△ Aroma 工作原理
虽然这个工具提升了开发者的效率,但也引起了一些争议。有开发者认为,Aroma 似乎是强行使用机器学习解决实际上没有人有问题的例子。他认为很多人搜索习惯用法的主要用例,是希望了解如何进行高级别的重构,而不仅仅是为了获得相似的代码。
对此,你有怎样的看法?欢迎留言交流。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
最后的 Windows XP,也将在 4 月 9 日退役
微软已经在2014年4月8日终止了对 Windows XP 的支持服务,我们熟悉的那个 Windows XP 也由此正式宣告退役。但那并不是 XP 的终点。 ▲图自flickr 在那一天失去支持的是Windows XP 的桌面版系统。事实上,运行在银行ATM设备的嵌入式 Windows XP 产品仍然可以继续服役,微软也提供了额外的扩展支持。 最后一个还在服役的XP系列嵌入式系统是Windows Embedded POSReady 2009。它是基于 Windows XP SP3 的一个嵌入式操作系统,于2008年12月9日发布,是 Windows Embedded for Point of Service (WEPOS) 的继任者。 根据微软官方的说法,微软对 Windows Embedded POSReady 2009 的扩展支持将持续到2019年4月9日,在此之前,Windows Embedded Standard 2009(基于Windows XP SP2) 也已经在今年1月29日失去了支持。也就是说在4月9日之后,最后的 XP 系统也将失去微软官方支持。 在官方说明文件中,微...
- 下一篇
宜信开源专注业务逻辑的轻量级服务框架 nextsystem4
宜信于2019年3月29日正式开源nextsystem4(以下简称“NS4”)系列模块。此次开源的NS4系列模块是围绕当前支付系统笨重、代码耦合度高、维护成本高而产生的分布式业务系统解决方案。NS4系列框架允许创建复杂的流程/业务流,对于业务服务节点的实现可串联,可分布式。其精简、轻量,实现了“脱容器”(不依赖tomcat、jetty等容器)独立运行。NS4系列框架的设计理念是将业务和逻辑进行分离,开发人员只需通过简单的配置和业务实现就可以实现逻辑复杂、性能高效、功能稳定的业务系统。 NS4系列包括4个开源模块,分别是:ns4_frame 分布式服务框架、ns4_gear_idgen ID 生成器组件(NS4框架Demo示例)、ns4_gear_watchdog 监控系统组件(服务守护、应用性能监控、数据采集、自动化报警系统)和ns4_chatbot通讯组件。 NS4系列模块的核心优势主要体现在以下几个方面: 具有很好的伸缩性,可以优雅地扩容和降级; 集中化管理,对各个节点的消息进行集中式管理和分发; 易维护,将复杂的流程性业务拆分成多个模块系统进行交互,减少代码耦合; 完善的调用链路...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度