AI 到底能不能替代人类编程
目前,正是 AI 编程的风口。各大公司争相发布相关工具,各种文章满天飞。也有公司,已经在大量使用,并替代了很多程序员。那么,AI 编程真的能在不久的将来,完全替代人类编程吗?下面,从 Web 开发的角度,来谈谈我的看法。
需求的理解
Web 开发的第一件事情,就是要充分理解拿到的需求。产品的需求,本身就不可能做到完美,需要在和程序员的博弈中,不断地打磨。而对于程序员,又需要根据自己的经验,来构思出需求实现的大致细节,以便评估出需求的合理性和潜在问题。这其实是个很吃经验的事情。而目前市面上的 AI,都没有特别擅长处理这些问题。所以,人类暂时略胜一筹。这也决定了,程序员这个职业是不会消失的。当然,是有需求分析能力的程序员。
设计能力
需求确定后,需要做的第二件事情,就是设计整个需求实现的大致结构。有时候,估计还得写不少方法和参数的伪代码。而设计本身,其实并没有标准的解决方案。需求的细节不同,用户量也差异很大,而业务所处的阶段,也千差万别。这些都会导致,最终的方案大相径庭。比如,用户量不大的时候,很多业务,直接访问数据库即可,完全没必要大量使用缓存。方案本身的复杂度和个性化,导致了只有当前阶段合适的方案,而没有标准意义上最好的方案。这些事情,目前的 AI,也很难处理。所以,程序员还是要有专业的设计能力的。
开发效率
接下来就是代码实现阶段了。就开发效率而言,你得一个字一个字敲,它能瞬间生成,怎么比?AI 完胜。当然,首先 AI 得生成我们想要的代码。这取决于所要实现业务的复杂度,和你给出的提示词的准确性。目前的 AI 模型,还是有一定概率,写出不符合要求的逻辑的。当然,在一些简单、重复的需求上,AI 编程已经表现得很优异。而在一些定制问题或复杂问题上,AI 写的代码,有时候反而成了一种累赘。
逻辑准确性
AI 生成的代码,原则上,是不值得信任的。AI 总是在动态的获取经验,而所谓经验,就是大概率挺对,但不保证百分百的准确性。谁家模型,说能保证百分之百准确,要么是它真发现了这个世界的真理;要么就是模型过拟合了。而程序,不同于文生图和信息咨询,是一个要求百分百准确的事情。一个微小的错误,都可能引起灾难的后果。曾经我就经历过,一个标点符号引发的灾难。所以,AI 生成的代码,总是需要有经验的程序员,细致的再看一遍的。这也说明,程序员这个职业不会消失,但需求量估计会减少。
代码质量
代码质量方面,程序员和 AI,其实是个相辅相成的关系。AI 最大的优势,就是能帮我们快速检测出,代码在各方面的潜在问题。这也是我认为,AI 最有发展的一个方向。基于它从大量数据集中获得的经验,可以快速地审查我们编写的代码,发现其中可能存在的 bug、安全风险和性能瓶颈。至于像代码规范、合理注解等,更是不值一提。这明显会让整个行业的代码质量有质的提升。也能在很大程度上,降低程序测试的人员成本和压力。
而 AI 生成代码的质量,很大程度上,取决于所用的数据集。依我看来,数据集大多数来源于开源社区。而随着各大模型公司的流氓行为越来越严重,开源社区的未来堪忧。将来,还能像如今一样,一直贡献高质量的代码吗?而这也决定了,AI 生成的代码,并不可能总是最优的。毕竟,开源社区,即使出名的项目,代码水平也层次不齐。所以,AI 生成的代码,肯定会优于很多一般的程序员,但肯定比不上,真正专业程序员定制出来的代码。
其他
当然,程序员还有其他一些方面优于 AI。比如团队合作能力等,毕竟是个人。而大模型的基因,也决定了使用它,大概率是要一直花钱的。而目前几个寡头的局面也很难改变。期待小模型的成熟和模型微调成本的下降吧。到时候,稍微有点实力的公司,就可以训练出自己的定制模型,而这类模型,其实更加实用。
综合评估
AI,内部人士其实更喜欢叫它“机器学习”。顾名思义,从已有的大量数据中,挖掘出我们需要的经验。无论目前吹得多厉害,目前的 AI,本质上还停留在,通过数学模型,来解决一个特定问题的阶段。暂不具备,类似人类自我思考的能力。虽然,表现的确实是那么的聪明异常。
所以,目前的趋势,还是作为一个划时代的辅助工具来改变编程界。它可以极大地提高编程效率;像曾经框架、类库等的不断发展一样,也会明显地拉低编程的入门难度。甚至让很多初创团队,一个人就可以搞定一切。所以,程序员的需求量也会降低。将来,即使是成熟的团队,也大概率是两三个人的小团队。也因此,更需要真正的高端程序员。他们有着丰富的编程经验,又可以通过 AI,快速的完成,以前重复而有繁琐的工作。
技术升级
所以,不是程序员行业的问题,而是程序员个人能力升级的问题。在现实中,我们不乏有很多程序员,还停留在重复、机械的开发代码的阶段。那怎么做技术升级呢?对比以上谈到的内容,其实主要就是两方面。一是你要以积极、开放的心态来面对 AI,可以逐步尝试起来。二是要提高自己的核心能力。比如需求分析、模型设计、编程思想、团队合作、项目管理等,不能只着眼于纯技术本身。试想想,你整天甩脸子,让老板觉得你很难合作,人家一气之下,直接自己用 AI 编程起来,那你就完了。(开个玩笑)最终,我们还是要选择,是要做一个有思想的程序员;还是要做一个,机械写代码、要被逐步淘汰的码农。
真正的危机
其实,AI 编程影响最大的,是测试人员。代码质量有了更加高效、更加智能的保障,可能就不需要那么多测试人员了。团队留一个喜欢挑毛病、有经验的测试人员,其他点点界面的工作,大可以找一些临时的实习生。
版权声明: 本文为 InfoQ 作者【丛风】的原创文章。
原文链接:【http://xie.infoq.cn/article/57a1bb4c90a89327501166c6d】。未经作者许可,禁止转载。
评论