当前位置: 首页 > 科技观察

机器编程的到来会让2700万程序员失业吗?

时间:2023-03-21 15:22:54 科技观察

据介绍,英特尔公司于2020年12月推出的机器编程研究系统ControlFlag是全球首个无需标注数据即可学习的自我监控系统。在初步测试中,该系统在超过10亿行未标记的生产级代码上进行了训练,还可以自主检测代码中的错误,发现许多开发人员过去忽视的违规和异常。据英特尔首席科学家、英特尔研究院机器编程研究主任兼创始人贾斯汀·戈茨利希(JustinGotzlich)称,该软件可以“显着减少评估和调试(修复错误)所需的时间和成本”。英特尔研究院的研究人员发现,软件开发人员将大约一半的时间花在调试上。通过ControlFlag和类似系统,程序员有望显着减少调试时间,并将更多时间花在人类程序员最擅长的事情上。.机器编程的本质是移动代码模型,还是具有一定的自主开发特性?目前机器编程的主要方法有哪些,效果如何,有什么优势?为什么有专家认为机器编程不仅会取代程序员,还会创造很多工作机会呢?机器编程让代码不再是“手艺”。快速发展的技术领域几乎离不开编程。传统编程看似简单,其实对操作人员的要求很高。虽然大多数人都能熟练地用自然语言表达自己的想法,但是学习编程对每个人来说都不是一件容易的事,这需要人的逻辑思维和对底层原理的理解作为支撑。据统计,全球78亿人中,会写代码的只有2700万人,占比不到1%。美国非营利组织code.org的数据显示,美国有50万个程序员职位空缺,而欧盟目前只有10%的程序员接受过计算机科学方面的培训。“就像好编剧不一定是好编剧,编剧可以用‘心如刀割’这样的词来描述人的内心活动,但编剧需要通过场景的构建和细节的设置,将这种情感表达得淋漓尽致,只有演员才能做到沿着这个逻辑表现得栩栩如生。”西安电子科技大学电子工程学院教授吴家骥表示,一个好的程序员就像一个代码“编剧”,往往需要长时间的学习和实践才能掌握编程的基本规则。传统编程是基于计算机语言规则和逻辑,使用标准化的编程语言在计算机世界中实现人类的意图。程序员就像传统工厂流水线上的员工。他们只需要按照定义好的标准接口和程序标准化,将需求意图拆解成正确的逻辑,写成代码即可。然而,在软件飞速发展的今天,软件的开发和维护仍然是一项耗时且容易出错的工作。JustinGotzlich认为,这个自软件诞生以来就困扰了几代程序员的问题并非无解。他认为:“我们可以创造一个人人都是软件开发者的社会。届时,机器将承担编程部分的工作,即机器编程,让代码不再是‘手工艺品’。”吴家吉向记者介绍,所谓机器编程,就是通过机器学习等自动化方法,设计出可以自动编写软件的软件。方法、编程语言、编译器、计算机系统和许多其他领域。机器编程中使用的自动编程技术既有精确方法(如形式化程序综合),也有概率方法(如可微分编程)。“人类编程过程重在逻辑业务,很少关心编程的语法和格式。机器编程的本质是移动代码模型,因为没有成熟的编程机器可以独立开发软件,包括最新的由英特尔提出。ControlFlag。”吴家吉指出。有助于显着降低开发和维护成本事实上,机器编程并不是什么新鲜事物。早在20世纪50年代,一些学术机构就开始涉足机器编程的研究。在JustinGotzlich看来,现在是发展机器编程的好时机。“机器编程利用了我们迄今为止获得的所有硬件和软件知识。今天的不同之处在于,我们正处于历史的转折点,我们现在拥有新的机器学习算法、新的和优化的硬件、大量和多样化的编程数据,而这三者是机器编程发展的基本要素。”机器编程目前效果如何,有什么优势?吴家骥表示,有了机器编程,软件开发和维护将有望实现完全自动化,解决编程人才短缺、编程精度亟待提高等问题也已经解决了,据了解,机器编程的方法主要分为两种:一种需要依靠编程领域的专家知识和已经设置好的模板库,即编程机器结合制定的规则专家有大量的模板库来满足人们的编程需求。但问题是,专家的知识储备和模板库需要不断积累和更新。另外,编程中存在非常复杂的逻辑和多样的语法差异.仅有少数专家很难完全掌握所有信息,规则公式他们设计的产品不可能近乎完美。二是利用机器学习进行自我监督来适应编程规则,让机器通过大量给定的代码学习到正确的编程规则,常用于程序代码测试。该方法包括两个阶段:模式挖掘阶段,主要学习用户指定的GitHub(开源平台)存储库中的特殊编码模式。当学习完成后,模式会生成一个优先字典,用于后续的机器编程。知识储备;扫描阶段主要是根据学习到的特定模式字典来分析给定的源代码库。当识别出异常模式时,将发出警报消息,并为用户提供可能的替代方案或自动更正。“使用自学习的方法可以提高机器编程的效率。这是因为自监督学习可以不断地自我完善和进化,让机器越来越智能——它可以在需要时快速将人的意图或自然语言转换成编程语言。编程。在代码调试时可以智能提示错误。”吴家骥指出,机器编程的快速发展有望大大提高软件开发和维护的效率,同时有效降低成本。据统计,全球IT行业每年花费的1.25万亿美元软件开发费用中约有50%用于调试,目前ControlFlag已经证实可以在广泛使用的产品级代码中发现隐藏的bug(漏洞),例如在分析cURL(程序员广泛使用的开源命令行工具,实现互联网下载)时,ControlFlag发现未捕获的异常促使cURL开发人员提出更好的解决方案。节省人类程序员的时间来创建可以自动化的高效程序构建是否意味着程序员将失去工作?JustinGotzlich的观点是机器编程是真正擅长创造数千万到数亿个就业机会的专业项目rs不会被替换。“未来,机器编程不仅不会取代程序员,还会创造大量就业机会,可能多达数百万。这是因为机器编程大幅降低了编程门槛,就像计算机上的许多操作工具一样。”它们的出现提高了人类的工作效率,让更多的普通人参与到编程中来,实现了更多的工作流,即在计算机应用环境下部分或全部业务流程的自动化。”远望智库AI事业部部长、图灵机器人首席战略官谭明洲表示,英特尔曾表示,其发展机器编程的愿景是:只要你能以某种方式表达你的“意图”机器可以理解——也许是用自然语言,或者是可视化图表,甚至是手势——机器编程它将帮助你开发自己的软件。对此,谭明舟解释道:“未来需要更有效的编程意图大纲设计,将大的意图拆解成更小的意图,每一个意图都更容易让机器理解,然后机器才能写代码。”未来机器编程可能以交互方式进行,编程环境可能通过多轮对话交互构建。”专家预测,从目前人工智能相关技术的发展来看,机器编程的广泛应用可能还需要几十年以上的时间。因为广泛的应用意味着机器能够更准确地理解人的意图,但人类自然语言的表达本身就有很多不确定性,因此机器编程并不能完全替代人类程序员,尤其是在需要多重嵌套逻辑和多分支逻辑的场景,这些场景需要更多的确定性逻辑分析,这对机器来说显然更难谭明洲指出,机器编程可能首先大规模应用到整体逻辑可以拆解成多个简单逻辑的场景,比如工作流固定的场景或者计算简单的场景;或者逻辑简单但精度要求高的场景,如会计、医疗、金融等c.“要在人工智能时代实现‘人机共存’,就要顺应技术的发展趋势,让机器做它擅长的事情。例如,在软件开发中,简单而枯燥的部分由机器承担,而人类程序员可以完成。有了更多的自由、灵活性、时间和精力去创作。”谭铭洲说。