编程的未来 - 还有未来么?

作者 | 邹欣
缘起
《 新程序员 》执行总编唐门教主上个月某天深夜写了一篇博客 --《编程的未来》( https://blog.csdn.NET/tangxiaoyin/article/detAIls/130651527) , 要我谈谈感想 。这也是最近软件工程师们聊得比较多的问题 , 上周 , 在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候(https://devpress.csdn.net/shanghai) , 大家也稍微谈了一下这个话题 , 但是谈得不透 。我想在本文整理一下我的思路 。

编程的未来 - 还有未来么?

文章插图
软件行业有多少部分会被取代
AI 编程的能力边界
首先 , 从去年开始的 AI 辅助编程浪潮中 , 很多人提到 , 从具体的函数实现来看 , 目前 AI 代码生成有很多做得不好的地方 , 或者有很多 bug 。
我认为不必纠结这些 bug , 它们一定会不断地被解决 , 这是一个时间问题 , 也许是半年 , 也许是一周 。但在编程方面 , 它有一个能力边界 , 这个边界未必能很快跨越 。
慕测平台的一篇高质量文章总结了 AI 辅助编程目前的能力边界 , 我总结如下:
? 生成的代码长度有限制 。很多情况下 , AI 不能输出完整的代码 , 还需要程序员来拼接代码 , 而他们要非常懂这些程序才能拼接成功 。
//问程序员:你参加过的最复杂的项目 , 总代码量有多少?有超过一千行代码么?
【编程的未来 - 还有未来么?】? 不能有效处理超长程序、开发环境的配置、多线程编程、已有程序的 bug 修复等问题 。
//问程序员:你修复过的最复杂的 bug 是什么?
? 泛化能力有限 。如果是一个人类程序员 , 他在一个算法测试平台通过了很多编程练习 , 那么他在另一个不同的编程平台也应该能应对自如 。但是 , 目前的 ChatGPT 还不能融会贯通 , 举一反三 。
//问程序员:你能举一反三么?
? ChatGPT 处理复杂编程中抽象的 “类” 和 “依赖关系” 的能力还比较弱 。
//问程序员:你在这方面能力如何?你写的最复杂的 OO 设计有多少父类子类?
? Fred Brooks Jr. 在著名的 “没有银弹” 论断中提出 , 软件开发中的关键任务就是理解并处理反映软件构成的复杂概念, 目前 AI辅助编程也并没有在这个方面取得突破 。
//问程序员:你构建过多么复杂的软件 , 这个软件运行了几年 , 这几年中你是如何维护这个软件的?
? ChatGPT 等编程辅助工具缺乏创造性编程的能力 。
//问程序员:你曾经创造性地解决过什么问题?
? ChatGPT 等工具的能力 , 取决于提问者的能力 。
//问程序员:你的提问能力如何?
如果 AI 都做不到上面这些 , 那我们的程序员有多少能做到的呢?(



    推荐阅读