我的背景是机械工程,所以请原谅我对这个领域的无知。
我真的很喜欢编程和软件开发。此外,我最近参加了一个免费的在线机器学习(ML)课程,这是我强烈推荐的,由斯坦福大学的Andrew教授教授。链接这里。
我听过这位教授说,很难找到ML永远不会影响的领域。
因此,我的问题是,到目前为止,在将机器学习应用于代码开发方面做了哪些研究?调试怎么样?
如有可能,请提供资源/来源/科学论文。
我对此并不满意,因为经常搜索ML和软件开发(或编程),最终会导致ML应用程序的软件开发(或编程)结果。
发布于 2017-06-19 18:17:34
毛茸茸是一种机器学习可以被应用的测试方法。模糊测试是自动探索性测试领域中的一种测试方法。它试图通过运行大量的输入和查找错误来发现软件中的缺陷。未处理的异常是最简单的类别,但智能实现可以使用ML查找可疑输出。然而,ML主要用于此领域,以提高流程的效率。这是通过使用ML来避免通过“有趣”输入的培训来测试每一个可能的输入。(Dis-可能导致失败的类似输入。)
发布于 2017-06-23 04:30:39
是。这个地区现在很热。它被称为“大代码”,DARPA为此投入了4000万美元:http://www.darpa.mil/program/mining-and-understanding-software-enclaves。一些令人印象深刻的结果已经从这项拨款,如先知和创世纪系统的范龙,它可以自动修复程序中的错误,使用一个正确的补丁学习模型。马丁·韦切夫和他的学生韦斯林·雷切夫也是这一领域的先驱。也许他们最令人印象深刻的结果是JSNice ( http://jsnice.org/ ),它可以“去最小化JavaScript代码”。
总的来说,大代码的想法并没有实现它的承诺:数据太少了,无法学习比变量名称更有趣的东西。虽然我仍然得到了DARPA项目的部分资助,但我的实验室已经停止了它的工作。在这一点上,我听到的关于DeepCoder的最后一件事是,与程序合成技术的现状相比,它得到了相当可悲的结果。
大多数自动编程的成功工具仍然依赖于非ML方法,如SMT求解器。看看任何PL会议(例如: PLDI、POPL、OOPSLA)或任何学术软件工程会议(例如: ICSE、FSE、ISSTA、ASE)的会议记录,您将看到许多例子。
https://softwareengineering.stackexchange.com/questions/351111
复制相似问题