第1章 当你让 AI 帮你写代码时,你还需要懂算法吗?
一个真实的故事
2024年,某互联网公司的工程师小李接到了一个任务:优化推荐系统的响应时间。系统在高峰期响应变慢,用户投诉增多。
小李打开 Cursor,输入提示词:
"帮我优化这个推荐函数,现在太慢了"
Cursor 很快给出了一个"优化版"。代码看起来更现代了,用了更 Pythonic 的写法,加了一些类型注解。小李运行了测试用例,全部通过,于是提交了代码。
一周后,高峰期来了。系统比以前更慢了。
问题出在哪里?Cursor 给的代码只是"看起来更现代",但算法复杂度从 O(n log n) 变成了 O(n²)。小李没有发现,因为他不知道如何判断一个算法的复杂度。他只知道"代码能跑"。
这个故事不是个案。当 coding agent 成为标配,"能写代码"不再是核心竞争力,"能判断代码对不对"才是。
为什么你还需要学算法
也许你会想:既然 AI 能写代码,为什么我还要学算法?
答案是:你需要学的不是"怎么写",而是"怎么判断"。
判断什么?
判断问题的结构是什么。判断该用什么方法。判断 agent 给出的实现是否正确。判断复杂度是否合理。判断边界情况有没有被遗漏。
这些判断能力,agent 可以辅助你训练和检查,但不能替你承担最终责任。它主要根据你给出的描述工作;如果问题描述错了,它给出的代码再漂亮也可能解决错问题。
这本书要教你的,就是这些判断能力。
这一章会学到什么
这一章要建立的是一种思维方式。
我们会从最基本的问题开始:当你拿到一个任务,不管是自己写还是让 agent 写,你首先要回答什么问题?
然后我们会学习一套系统化的分析方法——六问诊断法。这不是教你写代码,而是教你如何思考一个问题。
我们会学习如何验证一个算法是否正确——用循环不变式证明正确,用反例证明错误。这两件武器在 agent 时代更重要,因为你要检验 agent 给你的代码。
我们会学习复杂度分析——判断一个算法是否满足你的时间和空间约束。agent 给你的代码可能是 O(n²) 的;如果你没有提供数据规模和时间要求,它很可能无法判断这个方案是否够用。
最后,我们会学习建模——把现实问题翻译成算法语言。这通常需要人理解真实目标、隐含约束和取舍,再让 agent 辅助实现或检查。
如何阅读这一章
这一章的内容不需要你有任何编程基础。如果你已经熟悉算法,可以快速浏览,重点关注"agent 时代"的视角。
每个小节后面都有练习。这些练习不是让你"实现一个算法",而是让你"检验一个实现"、"分析一个问题"、"做出一个判断"。这才是 agent 时代你需要的能力。
让我们开始吧。
本章各节: