据科技日报报道,英特尔公司在2020年12月推出的机器编程研究系统ControlFlag是全球首个自我监控系统,可以自主检测代码中的错误,发现了许多过去被开发人员忽略的违规和异常。这是可以说是在2018年英特尔研究院和麻省理工学院联合发布的《机器编程的三大支柱》论文中,首次提出“机器编程”后的一次有益尝试。
什么是“机器编程”
“机器编程”顾名思义就是通过机器学习和其他自动化方法,设计可以自动编写软件的软件,它涉及形式化方法、编程语言、编译器、计算机系统等多个领域。虽然“机器编程”是现代提出的新词汇,但是其概念早在上世纪50年代就产生了,称为“程序合成”,是一种使用数学证明的非常形式化的方法,它采用某种形式的输入,然后生成一个软件。
而今“机器编程”概念提出的初衷,一方面是编程人才缺口巨大;据美国非盈利组织code.org的数据,美国有50万个编程人员岗位空缺,欧盟目前只有10%的编程人员受过计算机科学专业训练,全球 78 亿人中,只有 2700 万人会编写代码,占比不到 1%。另一方面是为了提高编程人员的工作效率;据2017 年剑桥大学开展的一项调查显示:美国程序员平均花费 50% 的时间在 Debug 上,严重影响了工作效率。
“机器编程”让程序员失业?
“机器编程”最大的愿景之一,就是降低编程门槛,让全球会编程人员提升至100%。那是否意味着这一强大的功能,会导致程序员的失业?这也是英特尔首席科学家、英特尔研究院机器编程研究主任及创始人贾斯汀·戈茨利被问及最多的问题。
答案显然是否定的,首先我们要了解“机器编程”主要实现方法,一种是依赖编程领域专家知识和已经设定好的模板库,以满足人们的编程意图,但弊端也十分明显,由于逻辑与语法的差异,需要足够多的数据作为支撑,才能不断发挥作用。另一种是利用机器学习进行自我监督去适应编程规则,让机器通过海量给定的代码学习正确的编程规则,常用于进行程序代码测试。
所以贾斯汀认为机器编程如果成功,那未来只会创造数千万甚至数亿个就业机会,而非取代专业程序员使其失业。毕竟当今存在的机器编程系统都需要大量的数据作为支撑,只有高技能的程序员编写的代码越多、产出更多的数据,构建的机器编程系统才能越先进。其次在“机器编程”问世后,那些有着好的想法与构思,但编程技能会稍逊色的程序员,将借助“机器编程”系统把这些想法综合起来变为软件。
全民编程的时代何时来到
机器编程已经起步,那么全民编程的时代何时来到?贾斯汀认为机器编程正处于拐点,而拐点的来到基于三个进步:其一,算法的进步;其二,算力的进步;其三,数据。专家更预测从当前人工智能相关技术的发展来看,机器编程得到广泛应用可能仍然需要几十年以上,因为广泛应用意味着机器能更准确地了解人类的意图,但是人类自然语言的表达本身就存在很多不确定性。
无论机器编程何时能开始广泛应用、全民编程时代何时来到,我们都需要保持学习、积极应对。毕竟机器编程对于编程从业者而言,虽然提高了程序员的工作效率,但也提出了更高的要求;对于非专业人员而言,虽然提供能将想法与构思软件化的机会,但也建立于最基础的编程知识之上。那么你准备好了吗?