1464 字
7 分钟
正确地将AI用于编程

正确地将AI用于编程#

这篇文章将讲述我个人对 AI 编程的看法,在不同的阶段应该如何正确的使用 AI,以及目前 AI 编码的优劣。

当然这篇文章可以说是没有任何结构可言,完全就是我想到什么写什么,当然这些想法都是我自己的经验总结

AI Agents 能极快的加快我们编码的速度,能够以极快的速度搭建出一个完整的应用,如果完全不考虑 AI 写的代码只看应用能不能运行那这种形式叫 Vibe Coding,如果你尝试过这种模式,你会发现在写小型软件的时候(软件代码的上下文在模型上下文容量之内)写出来的代码尚且简洁可维护,但如果你使用这种模式去写大型软件,你只会得到一堆屎山代码,人类难以维护。所以我们可以总结出一个结论,AI Agents 写出来的代码总是会趋于屎山,当项目代码量越大,结构越复杂,屎山程度越严重。当然这种情况在多人协作开发大型软件项目中也会出现,这是不可避免的,因为代码的行为遵循信息熵,即代码受信息熵的倾向控制,越复杂的项目,维持代码有序的“能量壁垒”就越高,代码倾向于更混乱。但是在个人项目中由于只有你一个人维护这是完全可以避免的。

说了这么多,从产品的角度来说确实是不需要考虑代码写的怎么样,但是这样只会让软件变得难以维护,虽然是ai来维护,但是这样token的消耗量肯定是会比一个清洁简单的代码来的多的,并且软件的性能也会是依托屎,像之前claude用rust完全vibe出来的c编译器对比起我们现在常用的编译器来说性能简直就是不能用。除了AI现代软件也是如此,现代软件比几十年前大了成百上千倍,但核心功能并没有变化。软件之所以变慢、变大,并非因为功能真正需要,而是因为硬件性能的提升掩盖了软件的低效1

从维护和性能角度是这样。那么什么样的代码是好的呢?一句话概括就是简单的代码是好的。当然这个简单有多个方面,如果能使用逻辑简单的代码尽量就使用逻辑简单的代码,应该保持代码可读性,系统简单可扩展等等,当然有很多书和文章都提倡代码简洁,我还没见过提倡让代码变得复杂书或文章。而 AI 并不会考虑这些无论是上下文的原因还是其他原因 AI 只会为了完成任务不择手段的实现新功能或者修bug并没有修到本质,而是打补丁。软件是一个整体,如果你在其他地方保证了某个事情不可能发生,而 AI 并不知道这件事,所以他会写很多错误处理代码,但是这些代码完全不需要,加上这些只会让代码的可读性下降,当然这些代码确实可以保证安全,但是没必要,如果你的代码是完全一致的话(一个人维护)。

说了 AI 这么多坏处说说 AI 的好处吧,AI 的好处有加快效率,减少编码逻辑性bug其他的暂时想不到。

当然在这个新的时代使用AI编程是不可避免的,对于一个中小厂使用 AI 可以快速验证想法,搭建MVP,可以先不考虑 AI 的代码质量,但是对于大厂代码质量是必须的,可以使用AI辅助编程,但是这种模式应该是由程序员指定AI去写某段逻辑,而不是让AI自行新增功能,并且需要对AI的代码进行review,你是高级工程师,你知道怎么正确构建软件,AI 更多是一种辅助,而不是司机。

对于正在学习编程的人来说,你对如果构建一个完整的软件完全不懂,完全Vibe Coding 那么你只会什么都学不到,到最后你只能依赖于AI,也许到最后未来几年没人认真学习如何古法编程,完全相信AI,就像现在我们完全不考虑CPU中的晶体管是如何运行的没人手写汇编,但是这也会回到上面的问题,屎山,你的软件能用,但是不可能成为完美的软件,可以观察到一个现象,越是底层的应用,越是完美的应用,像操作系统,网络服务器,Linux,redis,nginx等等,都更接近于计算机底层,更多使用C/C++这种能直接控制内存的语言写的,这也是大多开源软件项目都讨厌AI污染他们的项目的原因。扯远了,对于一个正在学习编程的人,我的建议是:如果你想成为高级工程师,应该花个2-3年学习古法编程,在这期间你应该手搓过几个项目,当然你可以使用AI辅助你找bug,但是AI写的每一行代码你都需要搞懂,有了AI不代表可以丢弃大脑,你仍然需要搞懂底层原理,各种框架,各种工具,记住一件事AI永远都是辅助,你才是ADC。

References#

Footnotes#

  1. https://people.inf.ethz.ch/wirth/Articles/LeanSoftware.pdf ↩

正确地将AI用于编程
https://blog.cglab.top/posts/wc/use_ai_for_coding_correctly/
作者
Artichoke
发布于
2026-05-29
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 148 天

部分内容可能已过时