科技未来 | 用软件写软件,软件开发正在走向机器编程?

      最后更新:2020-04-17 11:27

      世界上第一个软件理论来自计算机科学和人工智能之父艾伦·图灵在20世纪30年代提出的图灵机理论,它也是当代计算机科学的基石理论。在过去的半个世纪里,软件已经几乎遍布科技世界的每一个角落。它不仅像游戏或应用一样简单,软件还控制着我们手中的笔记本电脑、平板电脑和手机等移动设备的方方面面。连接到互联网-需要软件;在社交媒体上分享你的生活——你需要软件;虚拟化数据中心和让家庭生活变得更智能——所有这些都需要软件。随着人工智能、云计算、物联网等技术的发展,软件的前景是空前的。

      英特尔高级副总裁、首席架构师兼架构、图形和软件总经理拉贾·科杜里(Raja Koduri)在谈到软件时表示,软件带来的性能提升是指数级的。通过软件和硬件的结合,我们可以把摩尔定律提高十倍。因为摩尔定律会带来更多的晶体管,而软件可以释放越来越多晶体管的极端性能。未来的世界是“软件第一”。

      软件是不可或缺的,但是随着今天软件的快速发展,开发和维护仍然是耗时且容易出错的。据英特尔研究院机器编程研究部主任贾斯汀·戈特施里奇(Justin Gottschlich)称,自软件诞生以来,这个问题就一直困扰着几代程序员。事实上,这并不是没有解决方案:“我相信我们可以创造一个每个人都是软件开发人员的社会,然后机器将承担工作的“编程”部分。因此,我们称之为“机器编程”

      Justin Gottschlich在英特尔研究院领导一个机器编程研究团队,致力于软件开发自动化,从而减少编程错误并解决专业程序员短缺等问题。(图片来源:瓦尔登·基尔希/英特尔公司)。

      什么是机器编程?

      贾斯汀在英特尔研究所的工作是领导系统和软件研究所新成立的机器编程研究小组。这个研究小组专门负责研究机器编程的开创性前景。

      MPR团队正在做的是设计能够通过机器学习和其他自动化方法自动编写软件的软件。这种软件被称为“机器编程”,本质上是软件开发和维护的自动化。如果机器编程完全实现了,那么每个人都可以自由地表达他们的创造力并开发他们自己的软件,而不需要编写任何代码。

      在贾斯汀看来,现在是开发机器编程的好时机。机器编程集成了机器学习、形式化方法、编程语言、编译器、计算机系统和其他领域。它使用的自动编程技术包括精确方法(如形式程序综合)和概率方法(如差分编程)。机器编程利用了我们迄今为止获得的所有软件和硬件知识。从20世纪50年代开始,人们就开始参与机器编程的研究,但是贾斯汀说,“今天和过去不同了。今天,我们站在历史的转折点上。我们拥有新的机器学习算法、新的硬件和优化的硬件,以及大量多样的编程数据,这些都是开发机器编程的必要元素。”

      贾斯汀团队最新的遗传算法研究项目①就是一个例子。他们发现遗传算法的适应度函数——一组由编程专家为机器学习开发的复杂启发式算法——可以自动化。贾斯汀说,即使在几年前,这也是完全不可能的。

      机器编程能解决什么问题?

      首先是弥补人才缺口。据贾斯汀说,高级开发工程师的人力资源短缺是英特尔和其他领先技术公司面临的核心问题,这也直接阻碍了各领域编程量的增长。根据code.org II的数据,仅在美国就有50万名程序员在等待职位空缺,而每年只有5万名计算机科学毕业生毕业。欧盟也存在人才短缺的问题。贾斯汀说,在欧盟人才市场,多达10%的程序员接受过计算机科学方面的专业培训,并有潜力在未来成为一线高级开发工程师。

      今天的异构硬件种类繁多,包括CPU、GPU、FPGA、ASIC、神经形态芯片和即将诞生的水平空的量子芯片。很难找到能够为这些硬件正确、高效和安全地编写程序的开发人员,这是一项不可能完成的任务。

      除了人员问题,困扰世界各地程序员的bug也是所有软件开发和维护的一大难题。“我们最近在《神经病学杂志》2019年版上发表的论文初步表明,一些即使是编程专家过去也无法检测到的漏洞可以通过机器编程自动检测到,而无需任何人工干预。下一步是自动修复这些漏洞。”贾斯汀说。

      贾斯汀还举了一个非常著名的例子来说明机器编程的好处。众所周知,谷歌翻译可以提供多语言自动翻译服务。很长一段时间,它是由工程师通过传统的编程方法用大约500,000行代码手工编写的。机器编程出现后,谷歌重写了这段代码,其中一些是通过差分编程实现的。这次重写将谷歌翻译后的50万行代码减少到了500行,减少了1000倍。“不仅代码量减少了1000倍,而且系统操作的准确性也得到了提高。太不可思议了。”贾斯汀说。

      有很多好处的机器编程会剥夺大多数程序员的工作吗?

      在贾斯汀看来,机器编程不仅不会导致失业,还会增加就业机会——甚至可能增加数百万个工作岗位。在与麻省理工学院的研究人员联合发表的论文《机器编程的三大支柱》中,贾斯汀和他的团队描述了机器编程的未来愿景。

      在软件开发中,枯燥的部分将被自动化,让人们有更大的自由、灵活性和时间与精力去创造。他补充道:“我们的愿景是,只要你能以机器能够理解的方式表达你的‘意图’,机器编程将帮助你开发自己的软件——或许使用自然语言、视觉图表,甚至做一个手势。”

      贾斯汀说,为了构建这些先进的机器编程系统,我们非常依赖开发人员和科学家群体——他们可以在不同的平台上开发,可以使用机器学习和正式方法、异构硬件和多种编程语言。

      资料来源:智音

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类