神经网络可以帮助计算机自己编写代码:我们还需要人类编码器吗?

当我在大学的时候,我们不得不在计算机科学考试中手工写出代码。

在纸上用钢笔

如果你在过去十年中随时学会编码,你可能会认为这听起来野蛮,低效,只是简单的愚蠢。你是对的但这里还有一个严肃的观点:我们用于计算机编程的技术在不断发展,而且发展得相当快。我认为自己很幸运, 我的考试没有涉及打牌。

编码实践的下一个大革命可能比我们想象的要近,它涉及到帮助计算机自己编写代码。通过利用自然语言处理和神经网络,一些研究人员认为,在几年内,我们可以完全从编码过程中删除人类。

如果你做编码员,你会很高兴听到他们错了。我们需要人类编码器很长一段时间。在这篇文章中,我将解释原因。

神经网络和编码

首先,让我们看看这新一代的编码工具,看看他们能做些什么。在编程中使用神经网络、机器学习和人工智能工具的想法已经存在了几十年,但直到现在,第一个可用的实用工具才出现。这些工具可以分为三种类型。

第一种是旨在自动识别 bug 的工具。这是神经网络编程最成功的应用之一,对一些编码员来说肯定非常有用。总部位于瑞士的公司DeepCode在这类工具方面一直处于领先地位,但即使是他们的产品也有严重的限制,我很快就会来。

其次,有一系列工具旨在自行生成基本代码,或者可以自动完成程序员的代码。这些工具现已在许多流行的开发平台上发布。Facebook已经建立了一个名为"香气"的系统,可以自动完成小型程序,DeepMind已经开发出一个神经网络,可以比人类设计的算法更有效地开发出简单的算法版本

然后是神经网络在编程中最令人兴奋的应用:由英特尔、麻省理工学院和佐治亚理工学院的一个团队进行的研究。这些研究人员已经开发出一种叫做机器推断代码相似性的系统,他们声称该系统能够提取一段代码的"含义",就像NLP系统能够读取人类生成的文本段落一样。

如果能够充分发挥其潜力,这个 MISIM 系统有望成为一个革命性的工具。由于系统不具有语言独立性,因此可以在编写代码时读取代码,并自动编写模块以完成共同任务。用于自动实现云备份的大部分代码在许多程序中都是相同的,并且合规性过程也是许多编码器的主要时间汇。

像MISIM这样的系统承诺使编写代码的过程比现在效率高得多,但它们仍然有很大的局限性。让我们来看看一些。

限制

基于神经网络的编码工具不太可能很快取代人类编码器。要了解原因,让我们来看看使用这些工具的三种主要方式所固有的局限性。

首先,旨在捕捉人类创建代码中的 bug 的 ML 和 AI 程序非常有用,但仅在一点上。目前,正如你痛苦地意识到的,如果你使用了这些程序之一——它们往往会产生大量的误报:AI认为可能是错误,但不是。当然,从信息安全的角度来看,这些工具在谨慎方面犯了错误,这一事实很大,但也表明它们理解当代编程复杂性的能力有限。

其次,像芳香和 OpenAI 的 GPT-3 语言模型这样的工具可以产生简单的代码片段,即使是从自然语言描述中,也只能在人类的指导下。当遇到有限的、可控的问题需要解决时,它们的表现非常好,但(到目前为止)他们无法查看设计简介并制定出最佳方法。

我上面提到的第三种类型的工具——MISIM和它的相关系统——无疑是神经网络在编码中最具创新性的应用,并且最有望真正改变我们的工作方式。然而,应该指出,这一制度仍处于发展的早期阶段,甚至离公共测试版还有很长的路要走。因此,我将拒绝对其局限性的判断,直到我得到一个版本的手。

最后,不过,也值得指出的是,所有这些工具都隐含着一个更根本的限制:创造力。

换句话说,虽然这些工具非常善于在提示下完成代码,但它们不会因编码或设计而获得任何设计奖项。即使是最好的网页设计软件也尝试过,但未能实现人工智能驱动的美学工具——这有一个很好的理由:人类知道什么对其他人有好处。

在过去几十年中,利用这种美学、创造性能力一直是编码范式的主要焦点。例如,这也是为什么当今许多最好的前端开发框架如此面向视觉的原因之一。人类非常善于在看似无关的数据中发现模式,而 AI 擅长执行重复、耗时的任务。

协作和创造力

这种无法创建新解决方案的原因,最终,神经网络不会取代人类。相反,我们需要确定哪些任务最好由 AI 完成,哪些任务最好由人类完成,然后建立一种基于两者优势的协作编码方法。

在做这件事时,有几条明确的前进道路。其一是使用人工智能编码工具,以比目前我们的教育系统更灵活、更高效、更有针对性的方式培训人类开发人员。例如,可以使用自动推荐系统为初学者教授编程安全性,在编码时提供有关确保真实系统安全的详细指导

其次,在跟踪人类编码员的活动并提高他们的工作效率方面,AI 显示出巨大的希望。一个很好的例子是许多公司现在使用的自动发票,其中使用ML系统来跟踪员工的活动。事实上,为每个人提供人工智能助手,了解他们的工作原理,然后根据他们以前的解决方案提出建议,将对大多数开发人员大有裨益。

第三,像MICIM这样的系统,即使不能完全自动化代码的编写,也可能有一个稍微意想不到的好处:它们可以用来重写旧系统。因为像MISIM这样的工具是平台独立的,它们可能会教自己理解古代(现在相当晦涩难懂)的编码语言,如COBOL,然后以像Python这样的可用格式重写这些程序。你问,谁还在使用COBOL?嗯,美国政府,就一个。

所有这些方法并不寻求用机器模拟来取代人类编码器。事实上,他们都以不同的范式为背景:在编码方面,人和机器可以作为同事而不是竞争对手一起工作。

底线

这听起来像是乌托邦的愿景,但从长远的角度看,你会发现它是一个极其可行的。在许多方面,AI 和 ML 工具在编码中的出现反映了图形编码工具甚至编程语言本身的先前发展。无论是前端开发工具还是巨蛇脚本,都无法从根本上与硬件交互:一切,免得我们忘记,需要翻译成二进制机器代码。

将编码视为一个"翻译"的过程现在可能过时了,但这种方法确实为我自己的培训提供信息。二十年前,我们被明确教导如何将我们的代码转换为装配语言:如今,这种做法似乎完全是浪费时间。

归根结底,这就是人工智能编码工具的发展所寻求扩展的。这里的最终目标是,像MICIM这样的系统将能够对计算机程序进行描述,甚至能够描述一个需要解决的问题,并自行生成一个程序。但重要的是要记住,描述仍将由人类给出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值