近日,前哈佛大学计算机科学教授、谷歌工程主管 Matt Welsh 在美国计算机协会(ACM)的一个虚拟会议上断言:“生成式 AI 将在 3 年内终结编程。”Welsh 的断言是来自他体验了ChatGPT和GitHub Copilot在编程方面的能力后,有感而发的。

我非常认同他的断言,我也认为在国内的开发者群体中,这种终结是必然会发生的。但我并不认同的是,他对“3年内”这个时间的判断,这个时间可能会稍微偏激了一些。观察近期国产AI辅助编程工具CodeGeeX,也就是Welsh提到的Github Copilot的平替产品,从功能到模型层面,每周都有非常快速的产品迭代发布。可见程序员群体对CodeGeeX这个Copilot平替产品的认知度和好感,都在快速提升。

最重要的是CodeGeeX作为Copilot的平替产品,完全免费,开源开放给所有开发者使用。

CodeGeeX插件拥有代码生成功能:可以根据自然语言注释描述的功能,自动生成代码。也可以根据已有的代码自动生成后续代码,补全当前行或生成后续若干行,帮助你提高编程效率。

CodeGeeX代码翻译功能:支持多种编程语言之间互译,准确率高。目前代码翻译功能支持八种最流行的编程语言: Python、Go、Java、JavaScript、C++、C#、PHP、TypeScript等;

CodeGeeX代码解释功能:可以一键为你的代码逐行添加注释;

Welsh 的发言中认为,正是由于 ChatGPT 、Copilot以及CodeGeeX这些技术的出现,编程正处于从人类工作转变为机器人工作的转折点。在他看来,程序员需要演变成 AI 程序的“老师”——或者产品经理,或者代码评审人员(其实就是白盒静态测试人员)。他认为这两个人类角色相对来说不那么受机器人的影响。“不要指望你的程序员职业生涯会一直持续下去,因为机器正在取代这个角色。”Welsh 说道。

据悉,Welsh 曾在谷歌和苹果公司担任高级工程职位,他曾在 2023 年 1 月出版的《ACM 通讯》杂志上就这一话题写过一篇文章:编程的终结:经典计算机科学的末日即将来临。也希望Welsh可以体验一下国产AI辅助编程工具CodeGeeX,给出中肯的评价和宝贵的意见。

下面是附上 Matt Welsh 在ACM 上发言的文字总结(摘要),阅读之前可以在你的插件中,率先安装体验CodeGeeX,提升装备实力!
目前CodeGeeX支持在VS Code和Jetbrains IDEs的插件市场直接下载使用。

    1. 写代码是脏活,让 AI 来做吧!

随着 GitHub Copilot、ChatGPT 等 AI 产品持续火爆,AI 在编程方面展现了极强的能力。在一项新的研究课题中,ChatGPT 尝试查找示例代码中的 bug 并给出修复建议,其表现远超现有程序,成功修复了 40 个 bug 中的 31 个(来自伦敦大学学院和德国美因茨大学的研究报告)

拥有如此强大的编程能力,AI 真的会取代程序员?Welsh 断言,生成式 AI 将在 3 年内终结编程。

在 Welsh 看来,“写代码是脏活”——所以就让机器人来做吧。“用你的时间做点别的事情。对于每个人来说,写电脑程序并不是最好的利用时间的方式。”

Welsh 表示,Copilot 是一款不可思议的产品。“在我敲键盘时,Copilot 经常能够很好地帮我完成我的想法——它能读出我的想法,比我想象的要多得多。Copilot 极大地提高了工作效率,因为它让我避免了很多上下文切换。”

Welsh 称现在的 Copilot“只是一个开始”,只有两样东西会阻止 Copilot 变得更好:更多的数据和更多的计算。由于这两个东西都很充足,所以他认为“在未来的一两年或三年内,Copilot 没有理由无法会实现这样的目标:即你在源文件的顶部输入几行代码,它会把剩下的内容写出来。”

Welsh 认为“计算机科学注定要失败。”他说:“我认为这个领域将发生根本性的变化。计算机科学作为一门学科,你认为它的意义何在?它一直都是关于如何将想法转化为程序。”

他认为,在过去的 60 多年里,计算机编程在不断发展,试图让人类更容易理解代码。他将 1957 年的 Fortran 与 1964 年的 Basic 和 2010 年的 Rust 做了对比,他表示,就易用性而言,这三个编程语言之间真的没有太大区别。

Welsh 表示,“现今人们开发的程序和以前一样复杂,一样难以维护,一样难以理解,一样充满了 bug。” 但是 GitHub Copilot 让 Welsh 从根本上重新思考计算机科学的意义。“Copilot 从根本上改变了我们写代码的方式,至少从我个人的经验来看,它是一种显著而深刻的加快开发速度的方式。”

  1. 未来的软件开发团队是什么样子的?
    Welsh 还对未来的软件开发团队做了一些有趣的预测。基本上,当程序员开始被淘汰时,他认为只有两个角色可以保留:产品经理和代码评审人员。

在 Welsh 看来,产品经理的角色不会有太大变化。“人类产品经理仍然能够写出告诉软件应该做哪些事情的描述——也就是产品需求文档(PRD)。这是产品经理已经在做的事情,对吧?”
不同的是,在不久的将来,我们不再需要把 PRD 交给工程团队,然后等上六周左右,等他们把需求实现完毕,Welsh 说:“你只需要把 PRD 交给 AI,AI 在几秒钟内就可以吐出代码。”

当然,生成式 AI 在早期阶段有一个缺点,即它们的输出不一定是正确的。因此,Welsh 看到了人类代码评审人员(静态测试人员)能够在这方面起到的作用。

“我们怎么知道代码是否有效?我们怎么知道它是否足够好?我们怎么知道它是对的?当然,我们需要进行彻底的测试,测试是非常非常重要的,这是不会消失的。所有 CI/CD 相关的东西,以及我们在过去几十年里积累的一切,在这里仍然是有用的。”

他认为,具有编程能力的人类将承担“评审和阅读 AI 生成的代码,并确保它们能够正常运行以及做正确的事情”的任务。

至于程序员,以及那些即将加入这一领域的人,他们将需要成为 AI 的老师,而不是程序员本身。Welsh 说:“这是关于如何教会 AI 写代码,而不是自己写。”
未来已来。

附文内容来自摆渡@HMC Lab编译
附文原文作者:Richard MacManus

本文由博客一文多发平台 OpenWrite 发布!