近年来,随着计算机领域的快速发展,有一种对立的趋势逐渐显露:计算机资源愈发异构化,因而需要更多硬件领域的专家级程序员 VS 软件开发人员更青睐抽象高效的编程语言,导致硬件性能得不到充分发挥

这样的趋势下,如果有一款工具可以让计算机自己编程岂不是解决了这个矛盾?基于这种思考,英特尔提出了“机器编程”这个概念,旨在通过自动化工具提升开发效率。而机器编程具体是什么呢,接下来就为你详细介绍。

机器编程是什么?

“机器编程”首次提出是在 2018 年英特尔研究院和麻省理工学院联合发布的《机器编程的三大支柱》论文当中,融合了机器学习、形式化方法、编程语言、编译器、计算机系统等多个领域。通俗地说,机器编程就是通过机器学习和自动化方法,设计出可以自己编写软件的软件,即教系统自己编程

而除了上文所说,机器编程可以补充跨架构专业编程人员的缺口之外,它还能解决软件开发和维护上的一大痛点问题:Bug 。因此,机器编程的核心原则是,人类向机器表达他(她)的意图,机器去自动创建完成该意图所需的所有软件。英特尔将机器自动创建软件的部分称为创造和适应,由此得出机器编程的三大支柱:分别是意图(Intention)、创造(Iinvention)和适应(Adaptation)

英特尔首席科学家、英特尔研究院机器编程研究主任及创始人Justin Gottschlich表示,尽管目前软件显著提高了人们的工作效率,但在全球 78 亿人中,只有 2,700 万人会编写代码,占比不到 1%。因而,机器编程的未来愿景是降低编程的门槛,让每个人都能创建软件,将这 1% 变成 100%。

英特尔推出机器编程研究系统ControlFlag

抱着这份美好的愿景,英特尔开始踏上了机器编程这段旅程的第一步。Justin认为,要想让机器编程真正能够帮助到开发人员,那么有两点必不可少:

一、提高编码员和非编码员的工作效率;

二、 确保机器编程系统生成的是高质量、快速、安全的代码。

基于这两点,发展机器编程关键的第一步是:改进软件调试(Debug)。所谓 Debug ,就是识别、分析和纠正软件缺陷,让软件变得更加强大且可靠的过程。据 2017 年剑桥大学开展的一项调查显示,美国程序员平均花费 50% 的时间在 Debug 上,严重影响了工作效率。此外,Debug在本质上意味着软件的质量不合格,否则就不用Debug。

再进一步研究就可以发现,Debug几乎都是因为程序员向机器传达意图不正确所导致的,而机器编程所追求的让人机交流准确无误,正好就可以纠正这一点。假设机器可以完美地捕捉到人的意图,那么 Debug 基本上就消失了。英特尔通过实验也得到了意外的收获:利用机器编程,程序员的工作效率提高了 2 倍,软件的质量也得到了提升。

这个结果意味着机器编程的愿景并非空想。上周五英特尔推出了可自主检测代码中的错误机器编程研究系统 ControlFlag ,虽然系统还处于早期阶段,但在初步测试中,ControlFlag 就利用超过 10 亿行未标记的产品级别的代码进行了训练并学习了新的缺陷,使这个自我监督系统有望成为一个强大的生产力工具。

ControlFlag检测Bug的功能正是通过机器编程实现的,具体来说,ControlFlag通过被称为异常检测(anomaly detection)的功能进行运转:通过学习经过验证的例子来检测正常的编程模式,发现代码中可能造成Bug的异常。另外值得一提的是,不论开发者使用的是何种编程语言,ControlFlag 都可以通过学习检测到其中的异常。

此外,ControlFlag 也证明了它的强大。在分析cURL(一个开源的命令行工具,被程序员广泛地用于实现互联网下载)时,ControlFlag发现了一个之前未被发现的异常,也就是说,ControlFlag 发现了被开发者审核过并且广泛使用的产品级别代码中隐藏的 Bug 。因此,英特尔也开始评估在内部使用ControlFlag,以在软件和固件产品化中寻找Bug。

机器编程会导致失业?

然而,强大会不会意味着取代?功能如此优越的机器编程未来是否会让部分程序员失业?

这种担忧并不难理解,毕竟如果机器编程可以实现自动化构建程序,那原来做这件事的人该怎么办?

而这个问题,Justin 其实经常被问到,但 Justin 始终认为,机器编程如果成功,那未来只会创造数千万甚至数亿个就业机会,而非取代专业程序员使其失业

他的理由很简单,总体来看是两个方面:

一、当今存在的大多数机器编程系统都需要大量的数据。数据通常是以代码的形式存在,而代码则是由专业程序员所编写。因此,一旦自动化编程完全实现,那么对高技能程序员的需求将会增加,因为专业程序员写的代码越多,那么通过大量学习,所构建的机器编程系统就越先进;

二、降低编程行业门槛。机器编程如果完全实现,那么用户就可以向机器表达他或她想要的系统从而进行自动化编程。只要有批判性思考的能力,并将软件创造的步骤和想法逻辑合理化,那么所有人都能编程的愿景就不会遥远。

因此, Justin 一直坚持一个观念:自动化不仅不会取代任何现有的程序员,反而它会为全新类型的程序员创造非常大的平台,让他们可以毫无顾忌地发挥想象力。或许这些程序员的编程技能会稍逊色,但强大的创造性会弥补这个不足,只要有能力表达他们的想法,那么机器和系统会帮他们把这些想法综合起来做出软件。

机器编程正处在拐点

Justin曾经说过,机器编程正处于拐点,但拐点并非一夜之间到来。机器编程进入拐点,大致是因为三个基本进步的实现。

一、算法的进步。在确定性算法和随机算法方面都得到了进步,这些形式化方法和机器学习算法为建立机器编程系统提供了大量的机会。目前很多可以实现的事情在10年前都做不到。

二、算力的进步。如果无法以易于处理的形式去执行,那么就算能够执行算法,但却需要10年,20年才能完成。随着过去十年英特尔在算力方面的进步,特别是异构计算方面,让英特尔有了解锁机器编程的第二块钥匙,成为了关键的转折点。

三、数据。大多数系统往往需要大量的数据,目前数据量正好非常丰富。以GitHub为例,2020年其代码库超过了2亿。这是一个巨大的代码量,因为任何一个代码库都可能包含多个源文件。而这些源文件,每一个都可能包含数百或数千行代码。因此这个数字变得非常大,增长非常快。

因此,就拐点而言,这三件事合在一起,才让今天成为可能。至于这是如何发生的,Justin 认为其驱动力是英特尔看见了即将进入异构系统的未来。异构系统编程人员的缺失,让英特尔意识到需要某种机制,让程序员或非程序员不仅能访问异构硬件,还能充分利用可用资源。同时这也是英特尔机器编程的基本驱动力之一。

机器编程已经起步,如果完全实现,那全民编程的时代就不再遥远,你准备好了吗?

让软件自己写软件,英特尔的机器编程会取代程序员吗?相关推荐

  1. 让软件自己写软件,机器编程未来会取代程序员吗?

    [CSDN 编者按]机器编程的可行性增大促使这一想法加快落入实地,事情的发展开始令人期待.英特尔为未来跨架构编程时代所设计的机器编程将会怎样影响程序员的世界?软件能否实现编写软件? 作者 | 郑丽媛  ...

  2. 【英特尔oneAPI——异构计算编程】

    英特尔oneAPI--异构计算编程 初识oneAPI oneAPI简介 选择oneAPI的理由 使用 oneAPI 可以做什么 oneAPI包含的内容 异构计算编程 什么是异构计算编程 异构编程学习参 ...

  3. 公开“英特尔多核平台编程优化大赛”优化报告及源代码

    公开"英特尔多核平台编程优化大赛"优化报告及源代码 本系列文章欢迎转载.打印.分发等,但不可用于商业用途,任何时候必须保留全文完整,并声明转载自恋花蝶的博客(http://blog ...

  4. 协助你写 Python,只是 AI 取代程序员的第一步

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

  5. 同步速度测试软件,速度快画质佳 英特尔快速同步技术测试

    1视频转码应用日渐广泛 每个小家庭中,天真烂漫的宝宝都会给父母增添无尽的欢乐,宝宝成长中很多珍贵的片段都值得去记录.随着数码摄影设备的普及,不少和我一样的80后父母手中都有了单反数码相机,虽然单反可以 ...

  6. AI 帮忙找 Bug ,英特尔开源代码编程工具 ControlFlag

    整理 | 孙胜 出品 | CSDN 近日,英特尔开源了自动代码调试工具 ControlFlag 源代码,ControlFlag 源码现在可通过 GitHub 获得. 据了解,ControlFlag 可 ...

  7. AI 帮忙找 Bug,英特尔开源代码编程工具ControlFlag

    近日,英特尔开源了自动代码调试工具 ControlFlag 源代码,ControlFlag 现在可通过 GitHub 获得. 据了解,ControlFlag 可用来帮助更多开发者自主检测代码错误,主要 ...

  8. AI编程软件会取代程序员吗?

    最近听到同事问了这样一个问题,今天就来好好的唠一唠,随着科学技术的发展,现在生命上都已经开始出现AI编程软件了.不由得感叹,一句现在时代发展还真快呀!然后我就和他一样产生了一种小小的恐慌和困扰,是呀! ...

  9. 软件和互联网都有哪些就业方向?你适合做程序员吗?

    大学生在校期间可能会有这样的疑问:将来就业干啥好呢? 如果你是学计算机的,将来想进入软件和互联网行业, 恭喜, 这是个好行业, 薪水很高, 也不需靠关系, 一切靠实力说话, 不需要有个好爸爸. 坏处是 ...

最新文章

  1. ios 状态栏 覆盖自定义View
  2. WIndows 下安装mysql (non-install版本,即绿色版,或称为 源码包)
  3. .net学习之委托和事件
  4. Windows 2008 R2_NLB网络负载均衡(图文详解)(转)
  5. python leetcode_Leetcode 常用算法 Python 模板
  6. java递归统计一个文件夹含子文件夹里文件不同后缀的出现次数
  7. 湖南女子学院 计算机,2019湖南女子学院专业排名
  8. html怎样在一张图片里写字,用HTML代码在图片上写字
  9. python读取lmdb文件_如何使用python創建LMDB文件
  10. Android Studio 修改包名 com.example.calculator-----gt;com.melon.calculator
  11. linux execl 错误信息,Excel:自动隐藏错误结果的显示信息(转)
  12. 样本不平衡 pytorch_CVPR2019 | 面对高度不均衡数据如何提高精度?这篇文章有妙招...
  13. 地图比例尺与空间分辨率之间的关系_分辨率与比例尺
  14. iOS开发之—— XCODE真机调试设备连接一直忙碌如何处理!(真机调试各种错误提示解决)...
  15. 谷歌插件.crx文件无法安装
  16. Vue中使用clipboard实现复制功能
  17. dell服务器面板不显示,戴尔服务器控制提示面板没有安装怎么处理
  18. android自动屏幕点击事件,Android 中屏幕点击事件的实现
  19. 新浪微博--分享到微博的简单使用
  20. 阿里云服务器建站教程

热门文章

  1. asp.net MVC中怎样让LINQ Designer自动生成的类从别的类继承并调用其基类构造器?...
  2. asp.net mvc 如何在执行完某任务后返回原来页面
  3. 深度剖析Java数据结构之迭代器(Iterator)
  4. node(基础)_node中的javascript
  5. sklearn使用小记GridSearchCV
  6. C# WindowService 动态修改服务名
  7. fineuploader php服务端
  8. Android之常见问题集锦Ⅰ
  9. easyui被activeX控件挡住的解决方法
  10. [记录]明天开始东软实训