新智元报道
来源:IEEE
编辑:LRS
今年夏天,人工智能公司 OpenAI 发布了 Codex,只需简单的提示就可以用自然语言自动编写软件代码。
也就是说,你可以作为产品经理,给Codex 提出各种需求,他就会给你生成一份代码。
Codex基于GPT-3 进行训练,而GPT-3 使用了在2019年之前对互联网上几乎所有公开的书面文本进行训练,所以它对于自然语言是有一定理解能力的。
关于Codex,最常见的问题是「人类程序员会被它取代吗?就像其他手工业被消灭掉一样。」
因为各个国家在培训新的软件开发人员上都不遗余力,如果一下子人类程序员就被取代了,那投入的几十亿美元瞬间就成为泡影,所有的努力也都会付之东流。
如果你是一名软件开发人员,或者你已经高价聘请了许多程序员,那你大可以放心。尽管Codex 比人类更强大、高效和专注,但要说取代,可能那一天还远远没有到来。
一个资深程序员分享了一段经历,几年前他与美国一家大型咨询公司的一位高级数据科学家(工资非常高)和软件开发人员一起参与了一个政府数据库项目。他们的任务是了解一个国家机构如何使用其数据库向各组织分配赠款,然后就如何改进数据库向该机构提出建议。
当他第一次开始与开发人员同事合作时,对程序员的工作方式有很多先入为主的想法,例如会想象程序员整天蜷缩在笔记本电脑前敲打代码,或者用Mathematica编写精彩的公式来帮助我们更好地理解客户的数据库。或者在windows上用漂亮的思维方式疯狂地涂鸦,回归分析,以及在屏幕前花费大量时间,编写数千行Python代码。
然而事实与想象截然相反,程序员与客户坐下来面对面交流,花几天时间了解他们的赠款发放流程,然后开始一系列数据约定,还包括与个别工作人员、利益相关者、机构成员等的会晤。
经过几个月的这类工作,他终于坐下来分析该机构的数据,使用R和各种图形库。实际的写代码和分析只花了整整两天的时间。他的分析结果很准确,他的程序运行得很好,客户也非常激动。
所以说实际上编写代码和运行分析只占用了程序员大约1%的时间。剩下的时间用于与客户合作,了解他们的问题,确定要使用的正确软件和数学模型,收集和清理实际数据,并展示结果。在大多数情况下,写代码和数学本身是软件开发过程中很小的、几乎是死记硬背的一部分。
当然1%属于比较极端的例子。根据TechRepublic 的说法,编写实际代码通常只占软件开发人员时间的不到一半,在许多情况下,只占20%。
这意味着,即使像Codex这样的系统工作得很好,它们也将取代典型人类软件开发人员最多一半的工作,而且通常不到四分之一。除非有人训练Codex与客户坐下来,赢得他们的信任,理解他们的问题,并将这些问题分解为可解决的组件,否则Codex 很难威胁到熟练的开发人员。
也就是说,一个非编码人员能够坐下来与Codex合作,编写一份规格表,并制作出一个软件的日子还很遥远。
OpenAI 的研究人员在公布Codex的论文中也承认了这一点。
用他们的话来说就是,工程师不会花一整天的时间写代码,相反,他们会把大部分时间花在诸如与同事讨论、编写设计规范和升级现有软件技术栈之类的任务上。
Codex的创建者认为该系统可以让开发人员更快地编写好代码。如果说与替代程序员这件事有什么不同的话,他们认为自动化与软件开发相关的繁重工作将为更多的人服务。
它也可能创造一个新的专业:提示工程(prompt engineering),这是一个制作文本提示的复杂过程,让Codex等人工智能系统发挥其魔力。
但其他人则不那么肯定。
Wired 杂志的记者Steven Levy认为,Codex可能不会作为一个代码生成工具,而是一个代码辅助生成工具。如果这能让每个开发者的效率大大提高,公司可能会决定,他们可以用更少的开发者。如果一个项目以前可能需要10名开发人员,那么如果这些开发人员得到Codex或类似AI系统的协助,则可能只需要8名开发人员,从而导致两个工作岗位的净损失。
也许有一天这是真的,但那一天不会很快到来。
考虑到2020年全球对开发者的需求增长了25%,尽管出现了流感大流行,但像Codex这样的系统对就业的真正威胁似乎很小,至少目前是这样。如果说有什么区别的话,允许顶级公司用更少的开发人员生存可能会使这些开发人员能够为中端公司或初创公司所用,从而在技术生态系统的各个层面上都能产生更好的软件。
目前,初创公司往往难以吸引有才华的开发人员。如果谷歌和facebook在世界范围内挖走的顶尖开发者更少,那么新兴的创新型公司可能会拥有更多的顶尖人才。
同样重要的是,所有这些都是基于这样一个想法,即Codex或类似它的系统可以像人类软件开发人员一样编写代码。
而目前,它还远远没有那个能力。
OpenAI承认,在发布时,Codex的代码有63%的时间存在错误或根本无法工作。即使在37%的时间里编写完美的代码对机器来说也是一件困难的事。但是,一个非编码人员能够坐下来与Codex合作,编写一份规格表,并完成一个软件工作件的那一天仍然遥不可及。
Github推出的Copilot就是由Codex 提供的技术支持,工作方式类似于代码自动更正,提供代码来完成整个功能,或者作为开发人员自动填充重复代码。
不过在航空业,副驾驶(Copilot)是一名完全合格的飞行员,如果需要,他可以从机长手中接管飞机的控制权。另一方面,自动驾驶仪可以在某些情况下自动驾驶飞机(如直线和水平巡航),但在情况不稳定时(如在恶劣天气着陆时),必须将控制权交给人类飞行员。
GitHub的副驾驶更像是自动驾驶仪,而不是真正的副驾驶。当任务简单且重复时,它可以自己编写代码,但一旦任务变得更复杂,就需要人工干预。
Github在其关于副产品的页面上说:“作为开发人员,你永远是负责人。”
在给定的商业航班上,飞机可能90%的时间处于自动驾驶状态。但至关重要的是人类飞行员总是在监督系统。如果没有他们10%的贡献,飞机就会频繁坠毁。
除非Codex在未来几年内大幅改善,否则人类软件开发人员的工作是安全的。如果你是一名开发人员,复习一下诸如快速工程之类的技能,并申请使用诸如Copilot 和Codex之类的系统,这样你就可以获得使用它们的早期经验。
像Codex这样的系统在与熟练的开发人员较量时可能会失败。
但随着Codex及其同类产品的改进,通过将自身技能与先进人工智能相结合很可能成为一股强大的、也许是不可阻挡的技术力量。
参考资料:
https://spectrum.ieee.org/openai-wont-replace-coders