用代码的方式思考Aishwarya Goel *2026 年 9 月 5 日*
过去几个月,我一直很享受做一些小型编程题:循环、条件判断、伪代码、调试——这些东西,对于那些真正学过编程的人来说,大概很多年前就已经熟练到几乎意识不到它们的存在了。
但我没想到的是,这件事竟然极大地改变了我现在使用编程 Agent 的方式。
现在有一种很流行的观点:LLM 的出现,让学习编程变得没那么重要了。
如果我们所说的“编程”,指的是记住语法,那我觉得这确实是真的。我越来越不需要准确记得某件事在 Python 里到底该怎么写。模型生成代码的能力,已经远远超过了大多数普通人实际会需要达到的水平。
但编程从来就不真正关乎语法。
它真正关乎的是:把一个模糊的想法,变得足够精确,让计算机可以执行。
而以后,我们所有人都会越来越频繁地做这件事。
编程最先学到的东西之一,就是伪代码:在真正写代码之前,先用简单的指令描述应该发生什么。
```text读取邮件判断紧急程度```
而其实,这短短几行背后藏着很多概念。
**循环(loop)** 会训练你发现:很多看起来不同的任务,其实只是同一个任务被重复执行。
条件判断会迫使你定义:究竟在什么情况下,一件事应该发生。
`while` 循环会迫使你回答一个人类尤其不擅长回答的问题:
我们到底在什么时候才算完成?
`if/else` 会让你不得不考虑另一条分支——如果你原本以为会成立的事情并没有成立,那接下来应该怎么办?
而调试,也许教给了人最有价值的一种习惯:
你以为系统正在做的事,和系统实际上正在做的事,是两回事。
最近,我开始在很多地方看到这些概念,而不只是在写代码的时候。
一个有点好笑的副作用是,它甚至改善了我和伴侣之间的沟通。
以前我会说:
“可以从盒子里给我拿块饼干吗?”
他会把饼干递给我,然后把盒子敞着放在那里。
严格来说,他完美地完成了指令。
现在我会说:
“给我拿块饼干,然后把盒子关上。”
非常优秀的程序。
不确定这个例子到底有多相关,也许我只是想找个机会吐槽一下他的行为。
总之,回到计算机。
**比如这样一个提示词:**
研究这个市场,然后找出其中最有意思的公司。
这一句话里,大概藏着十个没有明确说出来的决定。
什么才算“这个市场”?
应该去哪里搜索?
怎样的公司才叫“有意思”?
要不要包括大型公司?
应该找多少家?
什么时候停止搜索?
如果两个信息来源互相矛盾怎么办?
LLM 非常擅长自行填补这些空白,好到我们有时候会忘记:这些空白其实一直都存在。
但每当我们留下一个没有定义的问题,我们实际上就等于把一个决定权交了出去。
AI 编程也是一样。
“帮我做一个页面,精选优质的 GitHub 讨论。”
听起来像一条指令。
其实并不是。
它更像是一个结果描述。
用代码的方式思考,会让你本能地把它改写成更接近这样的东西:
接收一个 GitHub URL。
首先判断它指向的是仓库、Issue,还是 Discussion。
提取这些字段。
如果缺少必要字段,就不要保存。
在向数据库写入任何内容之前,先把解析结果展示给我。
第二个版本更好,并不是因为它用了更多文字。
而是因为它包含了更多结构。
这也让我越来越觉得,“提示词工程(prompt engineering)”可能并不是描述我们真正需要提升的能力的最佳方式。
这个说法听起来像是在学习:怎样找到更好的措辞。
但很多时候,更好的提示词并不是更好的文字表达。
它其实是一个更好的程序,只不过是用自然语言写出来的。
在计算机发展历史的大部分时间里,普通用户并不需要具备这种能力。
软件自带界面。
别人已经提前替你决定好了有哪些可能的操作,并把它们做成按钮、表单、菜单和工作流。
LLM 正在逐渐移除这一层。
我们越来越可以直接告诉计算机我们想要什么:
研究这个。
整理这个。
监控这个。
构建这个。
一直做这件事,直到某些东西发生变化。
自然语言正在成为一种计算接口。
所以我怀疑,计算思维很快会变得对远远更多的人有用——甚至比“学会编程”曾经覆盖的人群还要广。
你不需要成为软件工程师。
你可能也不需要背会 Python。
但理解什么是循环,还是很值得的。
理解什么是条件和分支。
什么是状态。
为什么程序员总是在考虑边界情况。
一旦理解了这些基本结构,你就会开始在日常问题里看见它们的形状。
LLM 正变得越来越擅长替我们写代码。
这也许会让“学习如何写代码”变得没那么必要。
但我认为,这反而让“学习如何像代码一样思考”,变得更加有用。