第二种是利用机器学习进行自我监督去适应编程规则,让机器通过海量给定的代码学习正确的编程规则,常用于进行程序代码测试 。这种方式包括两个阶段:模式挖掘阶段,主要学习用户指定的GitHub(一家开源平台)存储库中的特殊编码模式,当学习完成时,该模式将生成一个优先级字典,为后续机器编程提供知识储备;扫描阶段,主要是根据所学的特异性模式字典分析给定的源代码存储库,当识别到异常模式时,将发出报警信息并为用户提供可能的替代方案或进行自动校正 。

文章插图
“利用自我学习的方法可提高机器编程效率,这是由于自监督学习可以不断自我完善自我进化,使得机器越来越聪明——在编程时可以快速把人类意图或自然语言转变为编程语言,在代码调试过程中可以智能地提示错误 。”吴家骥指出,机器编程的快速发展将有望大幅提高软件开发和维护的效率,同时可以有效降低成本 。
据统计,全球IT行业每年花费的1.25万亿美元软件开发成本中,大约有50%用于Debug 。目前,ControlFlag已经证实了其可以在广泛使用的产品级代码中发现隐藏的bug(漏洞),比如在分析cURL(程序员广泛使用的实现互联网下载的开源命令行工具)时,ControlFlag发现了一个以前没有发现的异常,促使cURL开发者提出了更好的解决方案 。
为人类程序员省出时间去创造程序能够自动化的高效构建,意味着程序员要失业了吗?贾斯汀·戈茨利希的观点是,机器编程真正过人之处是创造数千万到数亿个就业机会,并且专业程序员也不会被替代 。
“未来机器编程不仅不会取代程序员,还会创造出大量就业机会,可能多达上百万个 。这是由于机器编程实质上大幅度降低了编程门槛,就如同电脑上的很多操作工具,它们的出现提高了人类的工作效率,可以让更多的普通人参与到编程中,实现更多的工作流,即业务过程的部分或整体在计算机应用环境下的自动化 。”远望智库AI事业部部长、图灵机器人首席战略官谭茗洲说 。
英特尔公司曾表示,其开发机器编程的愿景是:只要你能以机器可理解的方式表达你的“意图”——可能是用自然语言,或者可视化的图表,甚至是打个手势——机器编程就会帮你开发属于你自己的软件 。

文章插图
对此,谭茗洲解释道:“未来需要更有效的编程意图概要设计,把大的意图拆解为更小的意图,每个意图更容易让机器理解,进而可以让机器编写代码 。未来机器编程可能以一种交互式的方式进行,通过多轮对话以交互形式构造编程环境 。”
专家预测,从当前人工智能相关技术的发展来看,机器编程得到广泛应用可能仍然需要几十年以上,因为广泛应用意味着机器能更准确地了解人类的意图,但是人类自然语言的表达本身就存在很多不确定性 。因此机器编程不可能完全替代人类程序员,特别是在需要多重嵌套的逻辑和多分支的逻辑场景下,这些场景需要确定性更强的逻辑分析,显然这对机器来说是比较困难的 。
谭茗洲指出,机器编程可能会首先大规模应用于整体逻辑能够拆解为多个简单逻辑的场景,如工作流固定的场景或简单的计算场景;亦或逻辑简单但精确性要求高的场景,如财会、医疗、金融等 。
“要想在人工智能时代做到‘人机共存’,需顺应技术的发展趋势,让机器去做其擅长的部分,例如软件开发中,简单枯燥的部分由机器承担,而人类程序员则可以有更大的自由度、灵活度、时间和精力去创造 。”谭茗洲说 。
编辑:张爽
审核:朱丽
推荐阅读
- C++编程:函数前和函数后加const修饰符区别
- HTML + CSS 为何得不到编程界的认可?
- c++多线程编程
- 图像SEO新机会|利用机器视觉获得战略性流量
- JavaEE编程基础:Servlet核心API用法详解
- Python编程:pass与assert语句详解
- 21 个必须知道的机器学习开源工具
- 程序员怎样锻炼编程思维
- 发明了首台工业机器人 真正被称为机器人的装置最早出现在1959年
- 机器学习中的10个有趣的算法
