热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机器编程驾到,会让2700万程序员丢掉饭碗吗?

科技日报记者华凌据报道,英特尔公司在2020年12月推出的机器编程研究系统ControlFlag是全球首个自我监控系统,不需要标记数据就能学习。在初步

科技日报记者 华凌

据报道,英特尔公司在2020年12月推出的机器编程研究系统ControlFlag是全球首个自我监控系统,不需要标记数据就能学习。在初步测试中,这个系统利用超过10亿行未标记的产品级别代码进行训练,还可以自主检测代码中的错误,发现了许多过去被开发人员忽略的违规和异常。

英特尔首席科学家、英特尔研究院机器编程研究主任及创始人贾斯汀·戈茨利希认为,这款软件能够“大幅减少评估和Debug(修补漏洞)所需的时间和成本”。 英特尔研究院的研究人员发现,软件开发者会花费大约一半的时间用来Debug,通过ControlFlag以及类似的系统,程序员有望大幅减少Debug的时间并把更多时间用于人类程序员最擅长的工作。

机器编程的实质究竟是搬运代码模型,还是具有一定的自主开发特征?目前机器编程的主要方法有哪些,效能如何,具备怎样的优势?为什么有专家认为机器编程不仅不会取代程序员,还会创造出大量就业机会?

机器编程让代码不再是“手工艺品”

快速发展的科技领域几乎离不开编程。传统编程看似简单,其实对操作者的要求很高。尽管大多数人可以熟练使用自然语言表达自己的想法,但是让所有人都去学习编程却并不是件容易事,这需要人的逻辑思维和对底层原理的理解作为支撑。

据统计,全球78亿人中,只有2700万人会编写代码,占比不到1%。根据美国非盈利组织code.org的数据,美国有50万个编程人员岗位空缺,欧盟目前只有10%的编程人员受过计算机科学专业训练。

机器编程驾到,会让2700万程序员丢掉饭碗吗?

 

“如同好的作家不一定是好的编剧,作家描写人的内心活动可以用‘心如刀绞’这类语言进行描述,但是编剧需要通过场景搭建和细节设置把这种情绪细致地表现出来,演员才能沿着这个逻辑栩栩如生地表演出来。”西安电子科技大学电子工程学院教授吴家骥介绍说,好的程序员就如同代码“编剧”,往往需要通过长时间学习和实践才能掌握编程的基本规则。

传统编程是基于计算机语言规则和逻辑,利用规范化的编程语言,把人的意图在计算机世界里实现的过程,程序员就像传统工厂流水线上的员工一样,只需按照定义好的标准接口和编程规范,把需求意图拆解为正确的逻辑,用代码写出来。

然而,在软件飞速发展的今天,软件的开发和维护却依然是既耗时又容易出错的工作。贾斯汀·戈茨利希认为,这从软件诞生之日就困扰着一代又一代程序员的问题其实并非无解,他认为:“我们能创造一个人人都是软件开发者的社会,届时机器将会承担编程部分的工作即机器编程,让代码不再是‘手工艺品’。”

吴家骥向记者介绍,所谓机器编程,就是通过机器学习和其他自动化方法,设计可以自动编写软件的软件,它涉及形式化方法、编程语言、编译器、计算机系统等多个领域。机器编程所使用的自动编程技术既有精确方法(比如形式程序合成),也有概率方法(比如可微分编程)。

“人类的编程过程侧重于逻辑业务,很少关心编程的语法、格式等。而机器编程实质是搬运代码模型,因为目前还没有成熟的编程机器可以达到自主开发软件的程度,包括英特尔最新提出的ControlFlag。”吴家骥指出。

有助于大幅降低开发和维护成本

其实机器编程并非新生事物,早在上世纪50年代,就已经有学术机构开始涉足机器编程的研究。

在贾斯汀·戈茨利希看来,当下正是发展机器编程的好时机。“机器编程汲取了我们迄今为止获得的所有软硬件知识。今日与往时不同的是,我们站在了历史的拐点上,我们现在有新的机器学习算法、新硬件与优化硬件、海量而多样的编程数据,而这三者是发展机器编程的必备要素。”

目前机器编程的效能如何,具备怎样的优势?吴家骥介绍说,有了机器编程,软件的开发和维护将有望实现完全自动化,编程人才的缺口、编程精确度有待提升等问题也迎刃而解。

据了解,机器编程的方法主要分为两种:一种需要依赖编程领域专家知识和已经设定好的模板库,即编程机器把专家制定的规则和大量模板库组合起来,进而满足人们的编程意图。但其问题在于,专家的知识储备和模板库需要不断积累更新。此外,编程中存在很复杂的逻辑和多样化的语法差异,仅靠少数专家很难做到全面掌握所有信息,其制定的规则也无法做到近乎完美。

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

机器编程驾到,会让2700万程序员丢掉饭碗吗?

 

“利用自我学习的方法可提高机器编程效率,这是由于自监督学习可以不断自我完善自我进化,使得机器越来越聪明——在编程时可以快速把人类意图或自然语言转变为编程语言,在代码调试过程中可以智能地提示错误。”吴家骥指出,机器编程的快速发展将有望大幅提高软件开发和维护的效率,同时可以有效降低成本。

据统计,全球IT行业每年花费的1.25万亿美元软件开发成本中,大约有50%用于Debug。目前,ControlFlag已经证实了其可以在广泛使用的产品级代码中发现隐藏的bug(漏洞),比如在分析cURL(程序员广泛使用的实现互联网下载的开源命令行工具)时,ControlFlag发现了一个以前没有发现的异常,促使cURL开发者提出了更好的解决方案。

为人类程序员省出时间去创造

程序能够自动化的高效构建,意味着程序员要失业了吗?贾斯汀·戈茨利希的观点是,机器编程真正过人之处是创造数千万到数亿个就业机会,并且专业程序员也不会被替代。

“未来机器编程不仅不会取代程序员,还会创造出大量就业机会,可能多达上百万个。这是由于机器编程实质上大幅度降低了编程门槛,就如同电脑上的很多操作工具,它们的出现提高了人类的工作效率,可以让更多的普通人参与到编程中,实现更多的工作流,即业务过程的部分或整体在计算机应用环境下的自动化。”远望智库AI事业部部长、图灵机器人首席战略官谭茗洲说。

英特尔公司曾表示,其开发机器编程的愿景是:只要你能以机器可理解的方式表达你的“意图”——可能是用自然语言,或者可视化的图表,甚至是打个手势——机器编程就会帮你开发属于你自己的软件。

机器编程驾到,会让2700万程序员丢掉饭碗吗?

 

对此,谭茗洲解释道:“未来需要更有效的编程意图概要设计,把大的意图拆解为更小的意图,每个意图更容易让机器理解,进而可以让机器编写代码。未来机器编程可能以一种交互式的方式进行,通过多轮对话以交互形式构造编程环境。”

专家预测,从当前人工智能相关技术的发展来看,机器编程得到广泛应用可能仍然需要几十年以上,因为广泛应用意味着机器能更准确地了解人类的意图,但是人类自然语言的表达本身就存在很多不确定性。因此机器编程不可能完全替代人类程序员,特别是在需要多重嵌套的逻辑和多分支的逻辑场景下,这些场景需要确定性更强的逻辑分析,显然这对机器来说是比较困难的。

谭茗洲指出,机器编程可能会首先大规模应用于整体逻辑能够拆解为多个简单逻辑的场景,如工作流固定的场景或简单的计算场景;亦或逻辑简单但精确性要求高的场景,如财会、医疗、金融等。

“要想在人工智能时代做到‘人机共存’,需顺应技术的发展趋势,让机器去做其擅长的部分,例如软件开发中,简单枯燥的部分由机器承担,而人类程序员则可以有更大的自由度、灵活度、时间和精力去创造。”谭茗洲说。


推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了游戏开发中的人工智能技术,包括定性行为和非定性行为的分类。定性行为是指特定且可预测的行为,而非定性行为则具有一定程度的不确定性。其中,追逐算法是定性行为的具体实例。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文详细介绍了商汤科技面试中涉及的CV算法面经内容,包括CornerNet的介绍与CornerPooling的解决方案、Mimic知识蒸馏的实现方式、MobileNet的特点、普通卷积和DW PW卷积的计算量推导、Residual结构的来源等。同时还讨论了在人脸关键点和检测中的mimic实现方式、pose对人脸关键点的提升作用、目标检测中可能遇到的问题以及处理检测类别冲突的方法。此外,还涉及了对机器学习的了解程度和相似度分析的问题。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 老牌医药收割AI红利:先投个15亿美元抢中国人才
    萧箫发自凹非寺量子位报道|公众号QbitAI没想到,一场大会把我的“刻板印象”攻破了。2021世界人工智能大会现场,能看见不少熟悉的身影, ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • Python入门后,想要从事自由职业可以做哪方面工作?1.爬虫很多人入门Python的必修课之一就是web开发和爬虫。但是这两项想要赚钱的话 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
author-avatar
草千里2502902931
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有