代码|2700万程序员要失业?机器编程要让全球78亿人都能写代码

数据显示,全球78亿人中,只有2700万人会编写代码,占比不到1%。不过,机器编程想让另外99%的人也能编写代码。这听起来很科幻,但英特尔在机器编程领域的进展让我们相信让100%的人都能写代码并非触不可及。
代码|2700万程序员要失业?机器编程要让全球78亿人都能写代码
文章插图
英特尔的ControlFlag系统是全球首个自我监控系统,不需要标记数据就能学习,通过学习超过十亿行代码,可以自主检测代码中的错误,发现了许多过去被开发人员忽略的违规和异常。
机器编程到底要做什么?为什么全员都能编程后程序员不会失业?
什么是机器编程?
机器编程并非近来提出的全新概念,在20世纪50年代时它被称为“程序合成”,程序合成是一种使用数学证明的非常形式化的方法,它采用某种形式的输入,然后生成一个软件。
实际上,机器编程是构建系统,然后由系统自动构建软件系统,硬件系统也随之构建起来。显然,自动生成软件是机器编程的核心重点,其核心原则是,人类向机器表达他(她)的意图,机器会自动创建完成该意图所需的所有软件。
代码|2700万程序员要失业?机器编程要让全球78亿人都能写代码
文章插图
研究机器编程是为了替代程序员吗?答案当然是否定的。英特尔高级院士、副总裁、英特尔研究院院长Rich Uhlig在2020英特尔研究院开放日上表示:“关于编程,我们看到了两种对立的趋势。一方面,计算资源变得越来越异构,需要了解硬件以及如何最大限度使用硬件的专家级程序员。另一方面,软件开发人员越来越青睐于使用更抽象的语言,以提高工作效率,但这会导致硬件难以发挥出它本身的性能。”
“研究当前的软件是如何开发的,考虑异构硬件的未来,可以得出一个强有力的结论,那就是当前开发软件的方式不会可维持地继续向前发展。”英特尔首席科学家、英特尔研究院机器编程研究主任及创始人Justin Gottschlich认为,“我们对程序员的要求过高。”
用一个非常形象的比喻来解释软件开发需要的准备工作,想象你是一位技艺高超的画家,但在画画之前,需要制作画笔、画布、画框、画架、颜料。“有多少画家能做到这些?我认为这样的画家很少,甚至没有,编程的门槛过高导致许多天才被埋没。“Justin认为。
他举了个例子,一名房地产行业的权威,对市场的理解敏锐又细致,但现有的工具不能帮助她制定房地产决策,于是只能分开使用每一种工具,慢慢收集数据。但只要在她决策之前市场发生变化,之前的工作就需要重新开始,时间也被浪费。
不仅仅是需要精细度、精确性的地产行业,农业、生物、建筑、医疗、金融领域的专家也希望能够向机器表达他们的意图,机器能够构建相应的软件实现他们的意图。
这也是机器编程的概念以及人们为什么需要机器编程。
如何实现机器编程?
英特尔研究院和麻省理工学院的教授团队合作撰写的题为《机器编程的三大支柱》的论文指出,意图(Intention)、创造(Invention)和适应(Adaption)是机器编程的三大支柱。
代码|2700万程序员要失业?机器编程要让全球78亿人都能写代码
代码|2700万程序员要失业?机器编程要让全球78亿人都能写代码
文章插图
简而言之,“意图”是人类向机器表达自己想法的能力,表达出来后机器就可以“创造”,之后继续根据用户指定的意图,构造更高级的程序表达。在构造了更高级的表达后,“适应系统”会对这个更高阶的程序进行转换,化解异构硬件挑战。
要实现这个长期的愿景,需要先迈出关键一步。Justin说:“要让机器编程同时从两个方向为开发人员提供帮助。首先是提高编码员和非编码员的工作效率。其次是确保机器编程系统生成的是高质量、快速、安全的代码。”
基于两个核心价值,机器编程关键的第一步是改进软件调试(Debug)。软件Debug本质上是识别、分析和纠正软件缺陷的过程,让软件变得更强大和可靠。根据2017 年剑桥大学开展的一项调查,美国程序员Debug的时间平均花费占到整个开发周期的一半。
这明确了两个问题,程序员的开发的软件质量不合格,同时Debug严重影响了程序员的工作效率。据悉,英特尔研究院开发的机器编程系统可以将程序员的工作效率提高2倍。
利用《诊断软件性能回归的零正学习方法》提出的一种在高性能计算代码中,自动进行回归测试(由新代码签入引起的错误)的方法AutoPerf,在运行代码时只利用名义训练数据和硬件性能计数器,英特尔的系统证明AutoPerf可以检测到并行编程中一些最复杂的性能bug。更重要的是,这个系统可以自动将测试应用于不同的硬件架构上,解决了硬件异构带来的软件编程复杂性大幅提升的挑战。这个系统的研究成果已经在去年的机器学习顶级研究会议NeurIPS上发布。