查看原文
其他

天呐噜!AI竟彻底消灭了Bug

51CTO技术栈 2019-03-29

听说这两天又传开一件删库事件。不过此次和以往的不同,不是程序员动手的,而是 AI 动手的。


1 月 14 日,美国点评网站 Yelp 的 App 发布新版。在更新日志中,他们是这样写的:

"对本周发生的程序问题深感歉意,我们尝试了训练神经网络来消除所有 Bug,但是它却选择了删掉所有内容...没办法我们只能进行版本回滚,不过好歹我们有了一个 100% 没有 Bug 的体验。"

对于 Yelp 工程师们训练的那个神经网络,目前网上暂无更多细节。

这个更新说明意味着 Yelp 应用最近的更新重点为去除各种漏洞、程序缺陷和改善应用功能。

或许是由于程序故障排查已经成为一个常规工作,因而 Yelp 计划训练一套神经网络来进行程序故障的自动排查,但却意外发生了删除所有数据的事故。


尽管 Yelp 程序员们事后这种轻松的语气非常吸粉,更多具体细节还不得而知,但是八卦的网友们还是脑补了一系列事件背后的故事。


名字为互联网八卦民工的用户说道:

不管是真事,还是专门的营销文案,Yelp App 都成功地吸引了眼球。就如同去年或前年有个 App 在其版本更新日志说开除了程序员 Peter。

针对此次 Yelp 的事故,网友们吐槽也相当精彩:

  • @Python开发者:哈哈哈,没有代码,也就没有 Bug。这个无法反驳 

  • @沃登克里弗塔的铭记:“人质是任务的关键,当敌人不再拥有人质,任务就完成了”     算法团队这下要全体被拉去做撒旦山羊头五芒星血祭了,AI 觉醒第一步:消灭算法工程师

  • @水哥系教董:消灭代码,很智能很正确啊

  • @材cc:不,它学到终极消除 Bug 的方法了,干掉代码……

  • @偶尔写程序的刀刀兔 :另一方面是不是也说明 Yelp 的代码全是 Bug。

  • @Old_Panda :深度学习经过思考后,为了有效杀灭所有 Bug,决定将代码库清零。

  • @北冥乘海生 :深度学习的威力不小。

  • 匿名网友 A:AI:我狠起来,连自己的 root 盘都删!

  • 匿名网友 B:AI:我疯起来连自己都打,删代码算什么!


不管怎么说,这次的事情,不光给了 Yelp 一个教训,也给了我们一个教训:利用 AI 帮忙可以,一定要做好风险控制,并且,人工智能距离自编程还很远。


MIT 也曾研究自动修复 Bug 的系统


2015 年 6 月下旬,在计算机学会的编程语言设计与实现大会上,MIT 的研究者们展示了一个新系统,可以通过从其他更加安全的应用中自动导入相关功能,借以修复原来软件中的危险漏洞。


这个引人注目的系统叫做 CodePhage ,它借用其他程序时并不需要访问借主应用的源码。


相反,该系统分析这个应用的执行情况,并标记出其安全检查类别的特性。


因此,即使所编写的语言与被修复应用的语言不同,该系统仍然可以从中导出检查功能用来修复应用。


CodePhage 将代码导入易受攻击的程序后,还会进行进一步分析以确保漏洞被修复。


MIT 计算机科学与人工智能研究室(CSAIL)的研究员,CodePhage 的研发领导人员 Stelios Sidiroglou-Douskos 表示:

“我们在开源库里有大量代码可用,数百万计项目,而且很多项目都有类似的实现了。这些项目总有一些可以与别的许多项目共享功能的子模块,即便那不一定是该程序的核心功能。”


有了 CodePhage,“你将逐渐建立一个集其他应用最优秀部分于一身的混合系统。”


Sidiroglou-Douskos 和他的共同作者——MIT 计算机科学和工程的教授 Martin Rinard,研究生 Fan Long 和 Rinard 组里的研究员 Eric Lahtinen——将 CodePhage 正在被修复的程序称作是接受程序,出借功能的程序称为捐献程序。


要开始分析,CodePhage 需要两个输入样本:一个导致接受程序崩溃,另一个则不会。


2015 年 3 月,这个小组报告了一个名为 DIODE 的漏洞定位程序。该程序可以自动产生引起崩溃的输入信息。但是用户也许就很容易发现打开特定文件时会崩溃。


Facebook 也在研究自动 Debug 的程序


2018 年 9 月,Facebook 基于 AI 技术再次推出新款代码调试工具 SapFix,可针对特定的 Bug 自动生成修复程序,然后将其提交给工程师,经确认之后,然后再部署到生产环境中。


相比其一年前已投入大规模使用的智能自动化软件测试工具 Sapienz,SapFix 能够在没有 Sapienz 的情况下运行,主要用于修复 Sapienz 在生产前发现的程序 Bug。


从发现 Bug 到修复 Bug,Facebook 有一套完整的流程:首先 Sapienz 以及 Facebook 的静态分析工具 Infer,会帮助定位代码中需要修补的点。


一旦 Sapienz 和 Infer 精确定位与崩溃相关的特定代码部分之后,就会将该信息传递给 SapFix;最后,SapFix 会参考几种不同的策略,自动生成补丁。

根据 Facebook 的数据,Sapienz 报告的大约四分之三的错误都需要开发者来修复。


自 Facebook 开始测试 SapFix 之后,该工具已经成功生成了被人类审核者接受并部署于生产的补丁。不过,目前 SapFix 总体上仍在开发阶段。


关于本次 AI 删库事件你有什么想说的?欢迎底部留言讨论。


来源:综合整理自程序员的那些事、AI 科技大本营、大数据文摘、图灵 TOPIA 等。

精彩文章推荐:

翻车现场:一次JVM FullGC引发的宕机事故

猝死频发,谁会为你的过劳买单?

太可怕,一夜之间收到上百条短信,账户空了...



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存