管理进化

人工智能能否代替码农


对于人工智能能否代替码农这一点,一些研究人员认为,在几年内,我们可以将人类完全从编码过程中移除。但是我认为在很长一段时间内,我们将需要人工编码员。对此,我们将在文章中展开。

过去我们不得不在计算机科学考试中手工编写代码。

在纸上。用笔。

如果你在过去十年中学会了编码,你可能会认为这听起来很野蛮,效率低下,而且非常愚蠢。你是对的。但这里也有一个严重的问题:我们用于计算机编程的技术在不断发展,而且发展得非常快。

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

如果你是一名程序员,你会很高兴听到他们错了。在很长一段时间内,我们将需要人工编码员。在本文中,我将解释原因。

神经网络和编码

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

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

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

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

如果能够充分发挥其潜力,该MISIM系统有望成为革命性的工具。由于它是与语言无关的,因此系统可以在编写代码时读取代码,并自动编写模块以实现常见任务。用于自动执行云备份的许多代码在许多程序中都是相同的,并且合规性过程也是许多编码人员的主要时间消耗。

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

限制

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

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

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

我上面提到的第三种工具——MISIM及其相关系统——无疑是神经网络在编码中最具创新性的用途,并且最有希望真正改变我们的工作方式。但是,应该注意的是,该系统仍处于开发的早期阶段,距离公开测试版还有很长的路要走。因此,在我拿到一个版本之前,我将不去评判它的局限性。

最后,同样值得指出的是,所有这些工具中都隐含着一个更基本的限制:创造力。

换句话说,虽然这些工具在给出提示的情况下很好地完成了代码,但它们不会赢得任何设计奖项,无论是编码还是设计。即使是最好的网页设计软件也尝试过实现人工智能驱动的美学工具,但都失败了——这是有充分理由的:人类知道什么对其他人来说看起来不错。

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

协作与创意

无法创造新解决方案的能力就是为什么神经网络最终不会取代人类的原因。相反,我们需要确定哪些任务最好由人工智能完成,哪些最好由人类完成,然后建立一种利用两者优势的协作编码方法。

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

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

第三,像MISIM这样的系统,即使它们不能完全自动化代码的编写,也可能有一个稍微意想不到的好处:它们可以用来重写遗留系统。因为像MISIM这样的工具是独立于平台的,所以它们可能会自学理解像COBOL这样的古老(现在非常晦涩)的编码语言,然后以Python等可用格式重写这些程序。你问谁还在使用 COBOL?好吧,美国政府,举个例子。

所有这些方法都不寻求用机器类似物取代人类编码器。事实上,他们都受到一种不同的范式的影响:当涉及到编码时,人类和机器可以作为同事而不是竞争对手一起工作。

底线

这听起来像是乌托邦的愿景,但从更长远的角度来看,你会发现这是一个非常可行的愿景。在许多方面,AI和ML工具在编码中的出现反映了图形编码工具甚至编程语言本身的先前发展。你的前端开发工具和python脚本都不在基本层面上与你的硬件交互:一切,以免我们忘记,都需要转换为二进制机器代码。

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

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

智齿客服