机器编程驱动未来 全世界78亿人会写代码?
- 2021-01-04 16:42
- 科技日报
据统计,全球78亿人口中,能写代码的只有2700万人,不到1%。美国有50万程序员空缺,欧盟只有10%的程序员受过计算机科学的培训。
据报道,英特尔公司于2020年12月推出的机器编程研究系统ControlFlag是全球首款自我监控系统,无需标记数据即可学习。在初步测试中,系统使用超过10亿个未标记的产品级代码进行训练,能够独立检测代码中的错误,发现很多过去被开发者忽略的不规范和异常。
英特尔首席科学家、机器编程研究主管、英特尔研究院创始人贾斯汀戈茨莱希认为,该软件可以“大大减少评估和调试所需的时间和成本”。英特尔研究院的研究人员发现,软件开发人员大约有一半的时间花在调试上。通过ControlFlag和类似的系统,程序员有望大大减少调试时间,把更多的时间花在人类程序员最擅长的事情上。
机器编程的本质是携带代码模型,还是具有一定的自主开发的特点?目前机器编程的主要方法有哪些,它们的效率和优势是什么?为什么有专家认为机器编程不仅会取代程序员,还会创造大量就业机会?
机器编程使代码不再是一种“手工艺品”
科技的飞速发展,几乎离不开编程。传统编程看似简单,实际上对操作人员要求很高。虽然大多数人都可以用自然语言熟练地表达自己的想法,但对每个人来说,学习编程并不容易,这需要人们的逻辑思维和对底层原理的理解。
据统计,全球78亿人口中,能写代码的只有2700万人,不到1%。根据美国非营利组织code.org的数据,美国的程序员空缺有50万个,欧盟只有10%的程序员接受过计算机科学的专业培训。
“就像好的编剧不一定是好的编剧一样,编剧可以用‘心如刀’这样的语言来描述人的内心活动,但是编剧需要通过场景的搭建和细节的设定来细致地表现这种情感,演员可以遵循这个逻辑。生动地表现出来。”西安电子科技大学电子工程学院教授吴家基说,一个好的程序员就像一个代码的“编剧”,往往需要长时间的学习和实践才能掌握编程的基本规律。
传统编程是在计算机世界中,基于计算机语言规则和逻辑,使用标准化编程语言,实现人的意图的过程。程序员和传统工厂流水线的员工一样,只需要根据定义好的标准接口和编程规范,将需求意图拆解成正确的逻辑,用代码写出来。
然而,在软件快速发展的今天,软件的开发和维护仍然是一项耗时且容易出错的任务。贾斯汀戈茨莱希认为,这个自软件诞生以来就困扰了几代程序员的问题并不是无法解决的。他认为:“我们可以创造一个大家都是软件开发者的社会,然后机器来承担编程部分的工作,也就是机器编程,让代码不再是‘手工业’。”
吴嘉吉告诉记者,所谓机器编程,就是通过机器学习等自动化方法,设计出能够自动编写软件的软件,涉及形式化方法、编程语言、编译器、计算机系统等领域。机器编程中使用的自动编程技术包括精确方法(如形式程序综合)和概率方法(如微分编程)。
“人类的编程过程侧重于逻辑业务,很少关注编程语法和格式。机器编程的本质是承载代码模型,因为没有成熟的编程机器能达到独立软件开发的水平,包括英特尔最新的ControlFlag。”吴嘉吉指出。
有助于显著降低开发和维护成本
其实机器编程也不是什么新鲜事。早在20世纪50年代,学术机构就开始涉足机器编程的研究。
在贾斯汀戈茨莱希看来,现在是开发机器编程的好时机。“机器编程利用了我们迄今为止获得的所有硬件和软件知识。与过去不同的是,我们正站在历史的转折点上。我们现在有了新的机器学习算法,新的硬件和优化的硬件,以及海量多样的编程数据,这些都是开发机器编程必不可少的要素。”
目前机器编程的效率和优势是什么?吴嘉吉表示,有了机器编程,软件的开发和维护将有望完全自动化,编程人才短缺、需要提高编程精度等问题将迎刃而解。
据了解,机器编程主要有两种方法:一种是依靠编程领域专家的知识和设定的模板库,即编程机器将专家制定的规则与大量的模板库结合起来,以满足人们的编程意图。但问题在于专家的知识储备和模板库需要不断积累和更新。另外,编程逻辑复杂,语法差异多样,少数专家很难全面掌握全部信息,他们制定的规则也不可能近乎完美。
二是利用机器学习进行自我监控以适应编程规则,让机器通过海量的给定代码学习到正确的编程规则,这也是程序代码测试经常用到的。该方法包括两个阶段:模式挖掘阶段,主要学习用户指定的GitHub(开源平台)库中的特殊编码模式。学习完成后,模式会生成优先字典,为后续的机器编程提供知识储备;在扫描阶段,主要根据学习到的具体模式字典对给定的源代码库进行分析。当识别出异常模式时,将发送报警消息,并为用户提供可能的替代或自动校正。
“使用自学习可以提高机器编程的效率,因为自监督学习可以不断改进和进化自身,使机器越来越智能。——可以在编程时快速将人类意图或自然语言转换成编程语言,并在代码调试时智能提示错误。”吴嘉吉指出,机器编程的快速发展有望大大提高软件开发和维护的效率,同时可以有效降低成本。
据统计,全球IT行业每年花费1.25万亿美元的软件开发成本中,约有50%用于调试。目前,ControlFlag已经证明可以在广泛使用的产品级代码中发现隐藏的bug(漏洞)。比如在分析cURL(程序员广泛使用的实现互联网下载的开源命令行工具)时,ControlFlag发现了一个以前没有发现的异常,促使cURL开发者提出了更好的解决方案。
为人类程序员创造节省时间
是否意味着如果程序可以自动高效的构建,程序员就会失业?贾斯汀戈茨莱希的观点是机器编程的真正优势是创造几千万到几亿的就业机会,专业程序员不会被取代。
“未来,机器编程不仅会取代程序员,还会创造大量就业机会,可能多达数百万。这是因为机器编程大大降低了编程门槛,就像计算机上的很多操作工具一样。它们的出现提高了人类的生产力,让更多的普通人参与编程,实现了更多的工作流。即计算机应用环境中部分或全部业务流程的自动化。”王源智库人工智能部主任、图灵机器人首席战略官谭明洲表示。
英特尔表示,其开发机器编程的愿景是,只要你能以机器可理解的方式表达你的“意图”,——可能会使用自然语言,或者视觉图表,甚至做出手势,——机器编程将帮助你开发自己的软件。
对此,谭明洲解释说:“未来需要更有效的编程意图大纲设计,将大的意图拆解成更小的意图,让每一个意图更容易被机器理解,然后机器才能写代码。未来机器编程可能会以交互的方式进行,编程环境通过多轮对话以交互的形式构建。”
专家预测,从目前人工智能相关技术的发展来看,机器编程的广泛应用可能还需要几十年以上,因为广泛应用意味着机器可以更准确地理解人类的意图,但人类自然语言的表达存在许多不确定性。所以机器编程并不能完全取代人类程序员,尤其是在需要多个嵌套逻辑和多个分支的逻辑场景中,需要更多的确定性的逻辑分析,这对于机器来说显然是比较困难的。
谭玉舟指出,机器编程可能首先大规模应用于整体逻辑可以分解为多个简单逻辑的场景,如固定工作流场景或简单计算场景;或者逻辑简单但精度要求高的场景,比如会计、医疗、财务等。
“要想在人工智能时代实现‘人机共存’,就需要适应技术的发展趋势,让机器做它擅长的事情。比如软件开发,简单枯燥的部分由机器承担,而人类程序员可以有更多的自由。灵活性、时间和精力来创造。”谭明洲说。
- 公安部交管局公布今年上半年事故多发路段2020-07-27 11:24
- 全球深空探索走进新时代2020-07-27 09:06
- 四部门:遏制货车非法改装 严厉打击百吨王2020-07-27 07:18
- “四个一百”优秀政法新媒体榜单正式发布2020-07-27 07:16
- 多地出台稳外贸稳外资“加强版”举措2020-07-24 09:11
-
2
上海海警查获5起涉嫌走私案件 涉案金额2000万元
2020-07-22 07:16
-
3
高科技重新定义新时代抢险抗洪
2020-07-21 07:24
-
4
2020第五届大致坡琼剧文化节在海口启幕
2020-07-13 08:56
-
5
黔东南州非遗大集市在丹寨万达小镇开市
2020-07-08 07:29