今天,英特尔推出了ControlFlag,这是一种机器编程研究系统,可以自动检测代码中的错误。
尽管仍处于早期阶段,但这种新颖的自我监控系统有望成为功能强大的生产力工具,以帮助软件开发人员执行耗时且劳动密集的调试。
在初步测试中,ControlFlag使用了超过10亿行未标记的产品级代码来培训和学习新的缺陷。
英特尔首席科学家,机器编程研究总监兼英特尔研究院创始人贾斯汀·戈茨利希(Justin Gottschlich)表示:“我们相信ControlFlag是一种功能强大的新工具,可以大大减少评估和调试代码所需的时间和成本。
该研究发现,软件开发人员将大约一半的时间花在调试上。
通过ControlFlag和类似的系统,程序员有望大大减少调试时间,并将更多的时间花在人类程序员最擅长向计算机展示创造性的新思想的方面。
今天,当软件的重要性变得越来越重要时,开发人员仍然继续花费不成比例的时间来修复错误,而不是编写代码。
实际上,IT行业每年在1.25万亿美元的软件开发成本中,约有50%用于调试代码1。
随着异构时代的到来,也就是多种多样的专用处理器的组合来管理当今的海量数据,管理这些系统所需的软件变得越来越复杂,出现错误的可能性也越来越大。
更倾向于。
此外,很难找到能够正确,高效和安全地为跨体系结构的硬件编写代码的程序员,这也增加了代码中新的和难以发现的错误的可能性。
因此,调试代码的工作将为开发人员和整个行业带来更高的价格。
完全实现的ControlFlag可通过自动化繁琐的软件开发工作(例如测试,监视和调试)来帮助缓解上述挑战。
这不仅提高了开发人员的效率,并使他们能够将更多的时间花在创造力上,而且解决了当前软件开发中最昂贵的问题之一。
ControlFlag检测错误的功能是通过机器编程实现的,该机器编程结合了机器学习,形式化方法,编程语言,编译器和计算机系统。
具体来说,ControlFlag通过称为异常检测的功能进行操作。
作为人类生活在自然界中,我们了解某些被认为是“正常”的模式。
通过观察。
同样,ControlFlag通过学习经过验证的示例来检测正常的编程模式,并在代码中查找可能导致错误的异常。
此外,无论代码使用哪种编程语言,ControlFlag都可以检测到这些异常。
ControlFlag的无监督模式识别方法的主要优点之一是,它可以从本质上学习适应开发人员的样式。
在需要评估的控制工具输入信息有限的情况下,ControlFlag可以识别编程语言中的各种样式,类似于读者在使用完整单词和缩写词来识别英语时的区别。
该工具将学习识别并标记这些样式选择,并基于其洞察力来识别错误并提出解决方案,以便ControlFlag尝试避免两个开发团队之间的样式差异(因为代码错误)。
ControlFlag已证明,它可以在广泛使用的产品级代码中找到隐藏的错误,这些错误以前已经由软件开发人员进行过审查。
例如,在分析cURL(程序员广泛使用的开放源代码命令行工具来实现Internet下载)时,ControlFlag发现了一个未被发现的异常,促使cURL开发人员提出了一种更好的解决方案。
英特尔甚至已经开始在内部评估ControlFlag的使用,以寻找其自己的软件和固件产品化过程中的错误。
这是“英特尔开发人员快速分析”项目的关键组件,该项目旨在通过提供专家支持来帮助程序员加速开发。