0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器编程:自动编程还能自主检测Bug,有望成为一种强大的生产力工具

ss 来源:探索科技TechSugar 作者:朵啦 2021-01-04 10:24 次阅读

机器编程机器学习有很大的不同,机器编程是教系统自己编程。虽然还处于早期阶段,但这种新颖的自我监控系统有望成为一种强大的生产力工具,并帮助软件开发人员完成耗时费力的DEBUG工作

软件进步靠研发,研发进展靠程序员,程序员写代码靠996。

软件产品是核心竞争力,如果不能领跑同行,就会被时代的浪潮拍死在沙滩上。头部公司每年都要在研发上砸下巨资,对于大公司需要靠研发投入保持竞争力;对于小公司来说,软件产品就是事关生存的“最后一根稻草”。随着异构时代的到来,海量数据由多样化的专用处理器组合管理,系统功能日趋繁复,管理这些系统所需的软件就越来越复杂,bug出现的可能性也越来越高。开发人员要花费越来越多的时间来修复bug,而不是编写代码。

写代码、改bug成了程序员996的工作核心;而软件开发周期未知而漫长,怕是996都无法解决。一觉睡起来,原本1%的代码就自动写到了99%,bug自动修复,你敢想吗?——Hi,这不再是梦了。

构建系统,然后由系统自行构建自己的软件系统,这种被称为“机器编程”的领域应运而生。英特尔首席科学家、英特尔研究院机器编程研究主任及创始人Justin Gottschlich表示,机器编程与机器学习有很大的不同,机器编程是教系统自己编程。虽然还处于早期阶段,但这种新颖的自我监控系统有望成为一种强大的生产力工具,并帮助软件开发人员完成耗时费力的Debug工作。

检测bug,软件自己搞定

“机器编程”一词在英特尔研究院和麻省理工学院联合发布的《机器编程的三大支柱》论文中首次提出,通过机器学习和其他方法,机器编程可以设计实现自动编写软件的软件。这将使程序员们有更大自由度和更多的精力去创造新的软件。对于英特尔研究院机器编程研究,自动生成软件领域是机器编程的核心重点。这个研究领域,英特尔研究院机器编程研究称之为“机器编程”。

它的核心原则是,人类向机器表达他(她)的意图,机器会自动创建完成该意图所需的所有软件。英特尔研究院机器编程研究对于某些工作负载进行专业化处理,计算资源变得越来越异构化,所以这需要专家级的程序员,他们非常了解硬件以及如何最大限度地利用硬件。但与此同时,软件开发人员越来越青睐于使用更抽象的语言,以提高工作效率。这反过来会导致硬件难以发挥出它本身的性能。

不久前,英特尔科学家与麻省理工学院(MIT),以及佐治亚理工学院(Georgia Tech)的研究人员共同推出了一种新的机器编程(MP)系统——机器推断代码相似性(MISIM)全新机器编程系统。是一款检测软件意图的自动化引擎,通过识别代码结构、分析与其它功能相似代码的句法差异实现。正如Justin所阐述的,“这是实现机器编程伟大愿景的重要一步。”同时Justin表示:“如果机器能做到自动检查和修复bug,我想大多数开发人员一定非常愿意让它来承担这项工作,至少我会。”

抱着实现机器编程的美好愿景,英特尔研究院机器编程研究在12月进一步推出了机器编程研究系统ControlFlag,除了自动编程,它还可以自动检测代码中的错误。在初步测试中,ControlFlag使用超过10亿个未标记的产品级代码来训练和学习新的缺陷。英特尔研究院机器编程研究认为ControlFlag是一个强大的新工具,可以大大减少评估和调试代码所需的时间和成本。

首先,ControlFlag是完全自我监督的机器编程系统,不需要人类对其进行训练及指导。ControlFlag的无监督模式识别方法使它可以在本质上学习适应开发者的风格。在要评估的控制工具的有限输入信息中,ControlFlag可以识别编程语言中的各种样式,不受代码使用的编程语言限制。

第二,ControlFlag检测bug的功能集成了机器学习、形式化方法、编程语言、编译器和计算机系统。据悉,ControlFlag通过一个称为异常检测的功能来进行bug检测,通过学习经验证的例子来检测正常的编程模式,并找出代码中可能导致bug的异常。该工具将学会识别和标记这些风格选择,并根据其见解进行自动的错误识别和建议解决方案,以便ControlFlag能够尽可能地避免将两个开发团队之间的风格差异视为代码错误。

自动检测bug的系统好不好用?英特尔已经开始评估内部使用ControlFlag来发现自己的软件和固件产品化中的错误。这是英特尔开发人员快速分析项目的一个关键组成部分,该项目旨在通过提供专家支持来帮助程序员加快速度。

机器编程更偏向随机

英特尔机器编程研究系统ControlFlag从超过十亿行的代码中学习,英特尔研究院机器编程研究表示,这在机器编程系统中尚属首次。另外,对于跨架构硬件来说,能够正确、高效、安全地编写代码的程序员稀少,从而导致代码中存在难以发现的新错误。而ControlFlag检测现有软件中的违规或异常情况,使可能已经在生产质量系统中存在了20多年的隐疾得以发现。过去可能有数百名开发人员查看过这些代码,但都没有意识到任何问题,现在ControlFlag可以实现人力不能达到的效果。

英特尔研究院机器编程研究融合了两种方法,来推动大量的机器编程研究,一种是形式化方法,一种是随机方法(stochastic approaches)。英特尔研究院机器编程研究分析目前业界在机器编程领域方面的工作发现,机器编程更偏向随机方法,并得到了很大的重视,例如深度神经网络和贝叶斯网络(Bayesian networks)等等。事实上,英特尔研究院机器编程研究表示,他们的某些合作伙伴或竞争对手正在做神经网络编程,使用神经网络来替换大量代码。这样做有好处,但是当遇到诸如可解释性或debug问题时,这样做也有风险。

在正确的应用场景,机器编程对开发效率的提升惊人。Justin表示,在某个案例中,用传统的软件技术,开发完成大约需要三年时间,有了先进的机器编程技术,只需要花一天的时间,就能开发完成同样质量的软件。“很多例子表明,不管是与我们的合作伙伴项目,还是我们自己内部的开发项目,机器编程都将生产率提高了一千倍以上。”

降低行业准入门槛,从业者创造性会更强

机器编程发展是否会让英特尔的程序员失业呢?Justin表示:不会。相反,机器编程实际上会创造数千万到数亿个就业机会。他进一步解释到:首先,当今存在的大多数机器编程系统都需要大量的数据,这些数据通常是以代码的形式存在,而代码是由专业程序员编写。

因此,随着自动化的发展,英特尔研究院机器编程研究对高技能程序员的需求增加,以推进系统的进步升级。最重要的是,如果英特尔研究院机器编程研究的意图系统成功,即允许用户向机器表达他或她的意图的系统,这将降低行业准入门槛。

机器编程会为全新类型的程序员创造大平台,从业者创造性会更强,而机器和系统会把这些想法综合起来做出软件。如今,通过ControlFlag和类似的系统,程序员可以显著减少调试时间,并将更多的时间花在人类程序员最擅长的工作——向机器呈现创造性的新思想。完全实现的ControlFlag可以通过自动化繁琐的软件开发工作(如测试、监控和调试)来帮助缓解上述挑战,同时可以解决当前软件开发中耗时费力代价昂贵的bug修复问题。

图:在全球78亿人中,只有2700万人会编写代码,占比不到 1%。英特尔希望借助机器编程技术,使所有人获得编程能力。

英特尔推进机器编程的最终目标是让每个人都能创建软件。当这一目标完全实现时,每个人都可以通过自己最擅长的方式,如代码、自然语言或其他方式向机器表达自己的设计意图,从而创建软件。这是一个大胆的目标,需要英特尔及合作伙伴付出许多努力。

做理性自由的破题者

算法与算力的进步,以及可用代码库的极大丰富,让机器编程拥有适宜的孕育环境;随着近年计算技术的迅猛发展,机器编程迎来重要拐点。英特尔一直以来的作风便是积极打破传统,开拓新的研究或工程领域,这些领域在英特尔研究院机器编程研究突破界限之前还无人涉及。此次异构系统领域亦是一片“处女地”,英特尔的创新驱动力来自于对这一未来技术趋势的预测。

如前所述,异构系统非常复杂,能够切实掌握异构系统编程技术的工程师少之又少,英特尔研究院机器编程研究正在开发某种机制,让程序员或非程序员不仅能够轻松访问异构硬件,还能充分使用其他系统可用资源,以大幅降低异构编程难度。这也是英特尔机器编程的基本驱动力之一。

为推动机器编程的开源合作,英特尔、发布了开源技术和出版物,推动机器编程的进一步发展以及与合伙伙伴的合作。英特尔还创立了叫做“机器编程研讨会”,也称MAPS,参会人数已经从四年前的20人增加到了2019年底的近400人。Justin透露,2021年还将建立一个新的机器编程中心,英特尔将会与业界建立更广泛的合作。

最后,引用Justin的一段话:对于颠覆性的技术,需要“理性的自由”。一切构想需要花时间埋头深入挖掘,把事情做好。否则,如果做事急躁,可能会在设计和方法上做出妥协。虽然可能获得短期收益,但系统的长期生命力可能会下降。

责任编辑:xj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3439

    浏览量

    92373
  • 机器学习
    +关注

    关注

    66

    文章

    8112

    浏览量

    130545
  • BUG
    BUG
    +关注

    关注

    0

    文章

    154

    浏览量

    15579
收藏 人收藏

    评论

    相关推荐

    # FPGA 编程如何工作?

    提图斯· 卡穆尼亚 硬件和软件之间存在着非常细的界限。在为计算机等小工具创建硬件时,必须确保它可以运行并执行代码。 现场可编程门阵列(FPGA)是一种允许用户随时随地定制电路的硬件架构
    发表于 03-30 11:50

    工业级路由器如何提高你的生产力和工作效率?

    工业级路由器是提高你的生产力和工作效率的关键工具。它们提供了强大的数据处理能力、无缝的网络连接、实时安全防护、易于使用和管理、强大的兼容性和长期稳定性和可靠性。
    的头像 发表于 03-06 19:05 76次阅读
    工业级路由器如何提高你的<b class='flag-5'>生产力</b>和工作效率?

    新质生产力哪些行业发展最好 如何提升新质生产力

    新质生产力的发展主要集中在新能源、新材料、先进制造、电子信息等战略性新兴产业。 新质生产力作为先进生产力的具体体现形式,是马克思主义生产力理论的中国创新和实践,是科技创新交叉融合突破所
    的头像 发表于 02-22 17:57 2582次阅读

    自动化到自主化、协调化,更加智能化的生产机器

    自动化到自主化、协调化,更加智能化的生产机器
    的头像 发表于 10-16 17:50 357次阅读
    从<b class='flag-5'>自动</b>化到<b class='flag-5'>自主</b>化、协调化,更加智能化的<b class='flag-5'>生产</b>用<b class='flag-5'>机器</b>人

    Python编程实用指南

    Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过 Python 编程,我们能够解决现实生活中的很多任务。本书是本面向实践的 Python 编程实用指南。本书
    发表于 09-27 06:21

    一种结构化道路环境中的视觉导航系统详解

    根据结构化道路环境的特点提出了一种将边沿检测和道路环境知识相结合的机器视觉算法 , 并结合基于行为响应的路径规划方法和智能预瞄控制方法 , 实现了套基本的
    发表于 09-25 07:23

    STM32WL系列的STM32CubeWL入门手册

    包括: •套用户友好的软件开发工具,涵盖从设计到生产的项目开发,包括其中: –STM32CubeMX,一种图形软件配置工具,允许
    发表于 09-08 06:25

    自动编程机器人如何使编码民主化

    在过去,编程通常是专业程序员的天地,需要大量的时间、技能和经验。然而,随着自动编程机器人的崛起,编码正在逐渐变得更加民主化。这些机器人通过
    的头像 发表于 09-04 14:23 291次阅读

    引入自动编程机器人的新时代

    的新时代。   自动编程机器人是一种能够自动执行编程任务的人工智能软件。它们使用
    的头像 发表于 08-14 11:39 527次阅读

    焊接机器编程方法及流程技巧

    焊接机器编程方法有什么?所谓焊接机器人是从事焊接的工业机器人,广泛应用于汽车制造、造船、航空等领域。使用机器人时,首先要做好
    的头像 发表于 07-13 16:46 1051次阅读
    焊接<b class='flag-5'>机器</b>人<b class='flag-5'>编程</b>方法及流程技巧

    工业机器编程

    (KUKA Robot Language)等,用于特定品牌的机器编程。 基于图形化编程界面的编程语言 基于图形化编程
    发表于 06-26 14:03 601次阅读

    如何快速地让机器人投入生产

    辨别。 所以,如果你三角函数学得不好,就不要学习机器人了。会很累。而编程的方面的内容并不是很难。大多数逻辑可以用个if和个jmp完成。其重点难度大概都是二进制数据的处理。 说简单点
    发表于 06-06 16:18

    当AI冲击自动编程,谁将成为受益者?

    随着 GPT-4 的出现,自动编程迎来新的可能。未来人机协同提高开发效率将成为主流发展趋势。AI 的强大能力让很多程序员担心被取代,但业界认为 AI 并不是来取代程序员的,而是来助其
    的头像 发表于 05-30 15:29 513次阅读
    当AI冲击<b class='flag-5'>自动</b>化<b class='flag-5'>编程</b>,谁将<b class='flag-5'>成为</b>受益者?

    先学习上位机编程还是PLC编程

    当我们们谈到学习自动编程时,可能会面临一个选择:学习上位机编程还是PLC编程?针对这个问题,我想说,这两种编程方式之间没有直接的联系。PL
    发表于 05-09 14:23 3次下载
    先学习上位机<b class='flag-5'>编程</b>还是PLC<b class='flag-5'>编程</b>

    国产MCU有望在未来成为行业领导者吗?

    MCU(Microcontroller Unit)是一种集成电路,具有微处理器、存储器和各种输入输出接口的功能,被广泛应用于各种电子设备中。在过去,国内企业在MCU领域属于较弱势地位,主要依赖进口
    发表于 05-08 17:32