大脑以及二进制代码(图:Canva)
写代码已经成了许多工作的一项关键技能。一些国家和学校甚至认为,编程语言是一种可以接受的外语。而在各种熙熙攘攘之中,程序代码的性质也正在发生巨大的变化。
随着低代码和无代码平台迅猛增长,个人和组织都可以用相对较少的传统上称为编写代码的东西,来创建强大的生产应用程序。该趋势的下一步,就是人工智能生成代码,比如,最近的Open AI Codex和Github Autopilot就展示了这一步的实现。
那么,这些趋势意味着什么呢?编写代码会过时吗?
背景是什么?
在我们回答这个问题之前,要先把这些趋势置于背景之中,这是有帮助的。在编程代码的早期,使用汇编语言和机器语言是当时的常态。编写代码后来演变为高级语言,开发人员可以用一种与机器无关的语言描述高层次的意图,再用编译器在下面生成特定机器的代码。
这种趋势一直持续到现在,今天的主流语言(例如python)带有许多可多次使用的库。所以,要创建强大的应用程序也相对简单,只需要编写少量的新代码即可。
低代码/无代码是什么?
低码/无码是这种演变的下一步。开发人员无需去寻找和组装可重用的代码块。低码平台能够遵照高层次的指示及识别正确的可重用代码块并组装出必要的代码。开发人员则仍然要作出许多决定,例如构建什么样的应用以及软件应该如何运作等等。
那么低码是自己做一些决定或是什么都由开发者决定呢?答案是前者,而且根据平台的不同,自动化做决定的数量也不一样。之前的编译器其实也是这样。比如说开发者使用编译器编写一个循环,开发者很少会指定该循环应该如何用机器代码实现。编译器决定如何用机器代码实现该循环,用到的实现方法,可能是一系列启发式算法和由编译器设计者绞尽脑汁创建的算法。
人工智能可以写代码吗?
人工智能写代码是最近的发展,这是比低码更高大上的一种方法。低代码平台上的人类(即低代码平台设计者)可能已经组装了自动化逻辑,在用户提供了高层次的指示后,自动化逻辑得以触发并生成代码。人工智能在研究了大量的现有代码语料库后确立一些组装规则,进而可以生成代码。
对于用户而言,人工智能生成的代码可能看起来和低码平台生成的代码一样,但这些代码是人工智能创造的低码。这意味着现在可以更容易地用人工智能创建新的低码平台,而平台自动化模式则是基于人工智能。
这一类的平台可以做很多事情:
创建应用程序
如今,业界的一些人工智能原型已经可以根据人类的日常语言指示编写简单的应用程序,这显示了人工智能在这领域的发展前景。这些人工智能用了许多用不同语言编写的程序例子进行训练,但从简单的层面上看就是个代码的自动更正。而从更复杂的层面上看,它实际上是一个引擎,这个引擎可以为开发者指定的任务编写代码。
调试代码
现在,程序员用到的一些集成开发环境(IDE)已经可以识别代码中的简单语法问题。新的人工智能技术在这方面则更进了一步,它能通过分析代码库、错误修复和代码更新进行训练,达到检测常见错误模式并在新代码中找到这些错误。
编写人工智能代码
现在已经可以将一个数据集交给自动化工具,使得自动化工具生成正确的代码类型,再从数据集中构建一个人工智能。这种类型的人工智能自动化已经可以用于一些特定的学习背景,例如在各种生产人工智能环境里用于生成后端代码,去教初中和高中学生如何利用人工智能编写代码。
图中显示的编译器、人类设计的自动化和人工智能设计的自动化逐步扩展了编程助手平台。新技术的出现扩展了编程助手的适应范围,编程助手也涵盖了更大范围的使用案例。(图:AIClub.World)
程序员该何去何从?
无疑,这些趋势将产生深远的影响。许多开发者担心这将使他们丢掉工作——但笔者不这样认为。
编译器并没有让开发者失业,而是大规模地增加了所需的开发者数量、代码的使用以及所创建的应用程序的规模和范围。笔者预计上述的趋势也是这样。但这将从根本上改变编写代码的性质(如果你是一个熟练的汇编语言开发人员,相关的工作有限)。这些趋势令人类成为设计者的角色,而不是实施者。未来的开发者将可以自由地专注于可用性、设计、特征功能等等,而无需担心如何使用特定的API等细节问题。
当然,该趋势的发展还有待观察。生产软件是一项复杂的工作,结合了设计、功能、实施、测试、修改和维护、DevOps等等。任何能实施自动化的东西都可以令开发者腾出手来处理其他事情。可以说,我们正在挺进一个新的领域,人类的任务在这个领域中将集中在功能、设计、道德等主题上,而低层次的实施将由人工智能和自动化来处理。
总结
回到标题的问题——人工智能“上位”会让程序员消失吗?
笔者认为不会。开发人员的工作是创造一个产品,产品需满足用户的需求,相应的解决方案需要特定运行的环境(如公司使用什么技术、现有的基础设施、团队技能、法律限制等)和许多其他因素。而人工智能生成的代码是对大多数这些事情的补充。不过笔者确实认为,人工智能正在从根本上改变编写代码的含义并将在未来持续改变编写代码的含义。关键是我们如何与我们编码教育以及行业编码实践保持同步。
企业或技术领导者务必确保你的团队了解这些发展以及如何利用这些发展,这一点很重要。低码已经在帮助开发人员提高生产力。人工智能生成代码是一个相对较新的现象,但我们可以预期,人工智能生成代码在未来几年内会变得更加普遍。即使是熟练的开发人员也可以受益于持续的教育和培训计划,达到保持对最新技术的了解的目的。如果现在还没有这样的计划的话,最好制定一个。
资本主义智能