用 AI 和 ML 写代码是怎样一种体验?

909 阅读6分钟
原文链接: mp.weixin.qq.com

By 超神经

按照 AI 现在发展的态势,应该是计划先取代送货员,再取代驾驶员,接着取代前台、保安、售票员等等。最后总有一天会把魔爪伸向一手打造他们的工程师,不过在这一天来临之前,AI 计划先和程序员们搞好关系,做一个助理。

Kite 就是这款「看起来就很有野心」的产品, 不再是基础的自动补全,Kite 是一款提供实时代码片段的软件。

在不久前,Kite 还获得了 Trith Ventures 的 1700 万美元的 A 轮融资,而且 GitHub 和 Dropbox 的首席执行官都参与了投资。

用 AI 和 ML 把写代码变得轻松

最早,Kite 可没想过要替代掉程序员,而是觉得花费时间阅读文档,搜索各种各样的代码示例实在是太费劲了, Kite 想更好地解决这个问题。

「我们的使命就是利用 AI 和机器学习(ML)的最新成果,把写代码这个过程变的快乐和轻松 。」Kite 公司始人兼首席执行官 Adam Smith 在采访时表示,「使用 Kite ,开发人员可以把在网上搜索代码或资料的工夫省下来,而把精力放在下一个技术挑战上。」

怀着这样的初衷,Kite 公司开发了这款产品,它是一个本地应用插件,支持 Windows 和 macOS 系统,最早在 2016 年推出,如今功能越来越完善,也受到了更多人的喜爱。

简单的说,就是利用 AI 技术帮助程序员在写代码时获得更好的体验,初学者也能通过这个工具,更快的开启 coding 之路。

同样的代码片段,传统方式需要敲键 102 次,

使用 Kite 则需要 54 次敲键 

目前 Kite 已经与Atom,VS Code,Sublime Text,PyCharm,IntelliJ 和 Vim 集成,全球有超过 3 万名 Python 开发人员使用 Kite 。

对了,目前 Kite 只支持 Python。

 Kite 不仅是「自动补全」

Kite 允许用户通过点击完成代码补充,或者函数调用,大大缩减了需要跳出去寻找资料的过程。

这个功能与自动补全类似,Kite 会在您输入实时建议时提供相关的代码段。和自动补全不同的是, Kite 最重要的功能,被称为「代码全行完成」。

传统的代码补全功能只是帮助你一次一个代码单词,但 Kite 将这项辅助功能做到了业内顶尖水平,它可以预测接下来会输入的代码语句,甚至有时候会提供给一句完整的代码行。

需要的文档和代码示例可以实时查询

这得益于他们自己研发的类型推断引擎( type inference engine ),Kite 使用来自 GitHub 上高星程序员的数千种公开代码源,来训练其机器学习模型,用到了静态分析和机器学习技术,从而实现了强大的智能推荐功能。

在使用时,Kite 会检索用户的代码,整个项目的代码,以及在网络上公开的代码资源 (如 GitHub 和 StackOverflow ),然后根据上下文和使用频率实现智能推荐。而显示的顺序也是根据用户的习惯列出最优推荐。

而它的使用也很简单,就是在你输入时提供包含这些字母的包,这些包的类型有方法,使用文档,和示例代码等。

Kite 新统计模型了解变量名称,类型和结构上下文

 Kite 的终极目标

Kite 在发布之初,考虑放在云端,是因为他们认为云端处理优势明显。但没有预计到的是,隐私和安全问题对使用者的是很关心的事情。

经过几年看到用户如何与 Kite 互动,他们最终做出了调整,他们的 CEO 也总结了如下的优势:

1.延迟低。首先,低延迟完成对 Kite 体验至关重要。无论是在线上还是本地运行时,无论互联网连接如何,Kite 都能以极快的速度运行。

2.实现本地高性能任务。通过对 Python 分析引擎和 AI 模型的一些优化后,Kite 已经能在桌面设置中使用。

3.安全和隐私的重要性。提高安全性和隐私始终是对的,也是最重要的,许多用户都在担心代码放到云端这件事,Kite 现在已经做出了改进,做出了最好的预防措施,现在允许用户保留自己的代码库。

尽管全球工程师人数大幅增加,却依然满足不了日益增长的需求,不过类似 Kite 这类智能辅助的工具还不多,功能上还有很大的提升空间。

完成了新融资的 Kite 还有很长的路要走,比如今年,他们希望能尽快实现 Linux 版本的支持,开发出支持更多语言的版本。

虽然距离彻底取代程序员这一终极目的,现在看起来还遥不可及。

但可以想象,一直在学习全球最优质代码写作方式的 Kite ,总有一天,有机会先超过那些效率不高,代码不够整洁的程序员。

分享给你觉得第一批会被取代的程序员,让他们在这个新年里瑟瑟发抖吧。

超神经百科

增益率 Gain ratio

增益率在机器学习中一般指信息增益率,表示节点的信息与节点分裂信息度量的比值。增益率常作为属性选择的一个方法。另外两种常见的方式是信息增益和基尼指数。

增益率的公式是:

一般取增益率最大的属性作为最佳分裂属性。如果一个属性的取值很多,那么 SplitInfoR(D) 会大,从而使 GainRatio(R) 变小。不过增益比率也有缺点,SplitInfo(D) 可能取 0 ,此时没有计算意义;

且当 SplitInfo(D) 趋向于 0 时,GainRatio(R) 的值变得不可信,改进的措施就是在分母加一个平滑,这里加一个所有分裂信息的平均值:

历史文章(点击图片阅读)

回顾 2018 最 6 的 6 个机器学习开源项目

对 2018 年 AI 发展预言全中后,

他们立下了 2019 的 Flag

今年两百多场计算机学术会议,你 Pick 谁?

AI 百科

教程

数据集

商店

更多

http://hyper.ai