想象一下,人工智能在编写代码方面的能力将达到何种水平,其成本甚至可能低于人类的一千分之一,或者更多。这将对软件行业产生怎样的影响呢?
这篇文章是我近期在 CACM 发表的《编程的终结》一文的延伸。在那篇文章中,我探讨了当人工智能取代人类编程时可能发生的情况。而在此文中,我将深入分析 AI 在未来如何极大提升为我们编写软件的能力及其潜在影响。
毫无疑问,未来几年内,生成、调试及重构代码的 AI 将变得极为出色。对此我并不认为存在争议,以下是我支持这一观点的两点理由:(1)在适合的上下文和提示下,CoPilot 生成的新代码已经展现出卓越的水平;(2)要让 CoPilot 的性能提升一个数量级,仅需更多的数据和更大的模型即可。
在我开始频繁使用 CoPilot 之前,我曾认为它只能提供相当于本科生作业水平的简单解决方案。然而,实践证明,CoPilot 更能理解我的意图,令人惊讶。例如,当我需要编写单元测试,或处理数据结构时,CoPilot 能准确生成我想要的代码,实在令人印象深刻。
那么,当 AI 的代码生成能力提升至如今的 100 倍时,我们将面临怎样的局面呢?
在 0.001 秒内将需求文档转化为代码
许多人对 AI 在编写代码、审核代码或修复错误方面的能力表示怀疑,他们认为这些问题相当复杂,而当前的 AI 工具表现不佳,未来也不会有显著的改善。其实,这正是人类在判断问题时常常犯的错误——依赖最近的数据来做出判断。
我猜测,在不久的将来,或许在三年之内,我们将能够指示 AI 从高级自然语言规范中提取信息,比如需求文档、错误报告或 Slack 消息,并生成“出色”的代码。那么,“出色”又该如何定义呢?首先,我们需认真审视人类开发团队所编写的代码质量。我曾在谷歌和苹果等公司工作,发现那里的代码质量并不总是理想。即便在谷歌,代码审查被视为一种信仰,风格指南犹如圣经,每个团队的代码都需经过审查,有时甚至会被其他工程师找出问题——我必须承认,那里同样存在很多劣质代码。
我们应当摒弃这样的想法:人类软件团队只需投入足够的时间和精力,就能编写出正确且高效的代码。事实上,在任何重要的软件项目中情况都并非如此。在现实中,我们对人类编写的软件中的诸多草率和错误习以为常,那么为何对 AI 生成的代码却要设定不同的标准呢?
到 2026 年,我们是否能完全信任 AI,让其在没有任何人类干预的情况下生成代码?或许暂时无法做到,但我们仍然可以让人类对 AI 生成的代码进行审核和迭代(在人工智能的辅助下)。即便 AI 生成的代码比人类写的更难以审核,但相较于依赖速度较慢的人类编写代码,其成本效益和时间效率要高得多。
人工智能的成本优势
那么,人工智能驱动的“软件团队”究竟需要多少成本呢?
我们可以参考目前 GPT-3 davinci 模型的定价——每千个 token 0.02 美元——作为一个保守的标准(这个价格未来肯定会下降)。假设一名普通的人类软件工程师每天能输出大约 100 行有效的新代码或修改。(我没有考虑那些从未进入主分支的废弃或实验代码。)这个数字虽然是虚构的,但即便我偏离 10 倍,甚至 100 倍,依旧能说明我的观点。一般代码行大约包含 10 个 token,因此这意味着每天将产生约 1,000 个 token。
(为进一步说明,我从我们的代码库中提取了一个典型的源文件,包含几百行紧凑的 Python 代码,并使用 OpenAI 的 Codex tokenizer 进行分析,结果显示平均每行产生 9.55 个 token。因此,我认为每行 10 个 token 是合理的估算。)
GPT-3 是按输入和输出的 token 收费,因此为了便于论证,我们假设未来 CoPilot 提供的软件创建代理的输入上下文将是最终代码输出大小的 5 倍。这相当于 5,000 个输入 token 加上前述的 1,000 个输出 token,总计 6,000 个。换句话说,使用 GPT-3 生成与人类工程师一天相同数量的代码,成本仅为 0.12 美元。
一名人类软件工程师的日常成本又是多少呢?假设他们的日常开销与我相似,光是喝的健怡可乐就超出了 12 美分。若保守估计年度总成本为 30 万美元(包括工资、福利、饮料和停车费用),一个自然年大约有 250 个工作日,这样算下来一名普通软件工程师每天的成本大约为 1,200 美元。这意味着,人工智能的成本仅为人类的万分之一,而在输出代码的速度上要快出约 10,000 倍——也就是说,成本效率高达 1 亿倍。这样的情况下,未来我会倾向于选择 AI 来完成工作。(抱歉,前端团队的 Rob,你已经被自动化取代了!)一旦 AI 变得足够优秀,雇佣人类来编写代码就显得极不合理。
编程艺术的未来
即使上述论点夸大了十倍,但我们仍能看出软件工程师正面临灭绝的危机。然而,当计算机软件的艺术与科学不再需要人类参与时,将会发生怎样的变化呢?
任何软件系统的构建都需要在代码的复杂性、通用性、性能和完成时间之间进行权衡。因此,即使我们将所有开发人员解雇,完全由 CoPilot 2030 接手,我们依然需要一种机制,让(或许仍是人类?)的项目经理与基于 AI 的开发团队在产品构建时有效沟通,做出合理的权衡,选择合适的软件解决方案。
未来编程的变革:当 AI 取代人类开发者
等一下……我究竟在表达什么呢?如果编写代码的工作由 AI 承担,那么时间的长短又有什么关系呢?无论 AI 被指令去完成何种任务,结果总是瞬间可得。你可以轻松获得高效且通用的解决方案,这所需的时间与人类手动创建初步原型时所花费的时间几乎没有差别。因此,代码的复杂性似乎已无关紧要,因为它不再需要以往传统意义上的可维护性。如果你在星期二发布的代码在星期三未能正常运行,只需启动 AI,几秒钟内即可生成一千个新版本来解决问题。
关键在于,当人类不再参与代码的编写与维护时,所有围绕人类中心的软件工程理念都将随之消失。作为程序员,我们耗费大量时间所做的许多工作,都是为了使缓慢且容易出错的人类在工作时更加便利:比如编写注释、为未来重构而设计的代码、以及为了可重用性而制定的通用设计等。然而,如果代码主要由机器生成和维护,那么这些“额外”的工作就变得完全多余了。
显然,AI 编程技术要实现这一目标还有很长的路要走,但我认为在未来几年内,AI 生成的代码成为标准并不是一个不切实际的预期。考虑到节省的巨大成本和时间,类似于 Stable Diffusion 对艺术界的冲击,类似的现象很可能很快就会影响软件行业。我们需要认真思考的是,后 AI 时代的软件行业将会呈现何种面貌,以及我们现在能够采取哪些措施以便为此做好充分准备。
原文链接:
https://www.infoq.cn/article/PdeirrcOUj5LVTfA9EBA
Please specify source if reproducedAI 编程革命:成本降至人类程序员的万分之一,速度提升惊人10000倍! | AI工具导航

