你认为像 Cursor 这样的 AI 真的能取代程序员吗?

大家好,我是人月聊IT。今天我想和大家聊聊一个话题,简单回答一些问题,然后再分享我之前对“没有计算机科学背景的人想用好AI编程简直是个梦”的看法,供大家参考。

你认为像 Cursor 这样的 AI 真的能取代程序员吗?

那么,先来看看这些问题吧。

  1. 首先,得好好利用Cursor或者其他AI编程工具。你知道吗?一个优秀的程序员,能干十个人的活儿,但这里面还是得有一个人来操作Cursor,来驱动AI。而这个人可不是随便哪个人都能做的,必须得有扎实的计算机科学基础和一定的编程经验。
  2. 我们现在说的编程主要有两种:一种是Vibe Coding,另一种是基于上下文的Spec Coding。就目前而言,要想让没有多少编程经验的人完全掌控Vibe Coding,几乎是不可行的。毕竟,如果你连基本的提示语和上下文规范都写不出来,那就很难了。
  3. 说到AI编程能否替代程序员,简而言之,AI是可以替代那些水平一般,只会写CRUD的程序员的。实际上,AI的工作效率和质量往往比普通程序员要好,但核心驱动AI编程的那些程序员,还是不会被替代的。
  4. 关于软件开发,整个平台的生命周期其实是从用户需求的提出,到最终交付符合需求的软件的完整过程。这不仅仅是设计和编码的问题。用Cursor等工具的目的,更多是将设计和编码的工作自动化,但与前端沟通的需求梳理,以及后端的系统功能测试,依然需要程序员来完成。我们看到过很多在实践AI编程时的案例,单靠一句话的需求就完成整个项目,基本上都是不切实际的。即使AI帮你完善了需求,结果往往和用户真正需要的还是有很大差距。所以,我一直强调,理解需求和进行规格化是非常重要的工作,而没有编码经验的人往往难以做好这一点。
  5. 最后,能否实现一个完整项目的端到端AI替代,估计还需要三到五年的时间。这需要AI在两个方面能力上进一步增强:第一,要像需求分析师一样,能和用户不断互动来完善需求,这需要极强的协作能力;第二,AI需要能够完成功能后,进行UAT测试,涉及到最终功能界面和模拟人类测试的能力,这块AI目前还做不到。

接下来,我想附上一些我之前的评论和总结。

这篇文章是最近王垠发的《不懂计算机科学的人用好 AI 编程是妄想》的读书笔记。我想根据原文分享一下我自己的看法,希望能给大家一些启发。

现在网络上有很多误导性的说法,比如说AI(LLM)编程有多厉害,一行代码不写就能完成项目。我之前用过ChatGPT、Claude、Copilot,最近又尝试了Cursor,发现没有编程基础的人想用AI成功完成项目,几乎是不可能的。

这话说得没错,我完全同意。现在鼓励零基础学AI编程的人太多,很多自媒体的文章或视频都给人带来很大的误解。大家看看那些演示,都是些什么呢?

比如说“帮我写个贪食蛇游戏”或者“帮我写个俄罗斯方块游戏”。

这时候大家可能觉得AI能一口气写出几千行代码,真是太厉害了。但问题出在哪里呢?这些场景都是有标准解法的通用问题。因为问题足够标准且没有变化,不管AI是记忆还是生成内容,解决起来都比较简单。但一旦涉及到真实的需求场景,问题就复杂了。

我举两个小例子来说明一下。

第一个例子是让AI帮我清理微信桌面版的存储目录中的重复文件。如果我只是简单地提示“帮我清理微信重复文件”,AI能顺利处理吗?通常情况下,AI是无法做到的。你需要指明哪个目录,并清晰地说明判断文件是否重复的规则,只有这样,AI才能写出准确的程序。而经过我这两三年的观察,很多不懂计算机科学或者缺乏理工科思维的人,根本无法把这些看似简单的需求表述清楚。

第二个例子,我让AI写一个爬虫程序,爬取我的知乎专栏文章并将其存储为本地文件。你们可以尝试看看AI是否能很好地完成这个任务。除了需要给出类似反爬虫的提示外,最好还是懂一些HTML基础知识,告诉AI要取哪个DIV或者哪个表格中的数据。一般来说,没有基本编程知识的人几乎无法做到这一点。

你认为像 Cursor 这样的 AI 真的能取代程序员吗?

想想上面的提示,没有基本编程知识的人根本写不出来。你不懂AI,AI也不理解你,结果就是双方反复试验,浪费时间,最后可能还得不到理想的结果。

会编程但不懂真正的计算机科学的人,想要靠AI写出“王垠级别”的代码,那也是痴人说梦。

那么,如何才能让AI写出逻辑严谨、高质量和高韧性的代码呢?其实道理很简单,你需要提供足够精确的提示。所以王垠提到的懂计算机科学和编程,并不是说要精通编程或算法,而是要理解其中的差异。

我的看法是,AI要写出高质量代码,关键在于你需要提供结构化且精确的需求提示。不要让AI去猜测你的意图,也不要让它在多种选择中自我决定。因此,懂计算机科学的同时,还需懂得业务需求。

懂编程到什么程度呢?

很简单,就是你觉得在不编码的情况下,也能给出精准的需求和结构化的业务逻辑描述。如果做不到这一点,就代表你对编程理解不够。那些编程知识若对你输出精确需求没有帮助,那就成了可有可无的内容。

这个月,Cursor帮我生成了超过六万行代码,结果我接受的不到五千行。常常跑偏,很多逻辑重复且不懂得合理抽象,甚至把我手动调整过的正确部分改错,再把我纠正过的地方又改错,生成了一大堆复杂的测试,最终无法理解为什么测试“不通过”……

几天前我创建了一个新项目,花了我20多个小时的“口舌”,最后生成了两万多行代码,复杂到无法修复,我不得不决定从头再来,而它居然还在欢呼“成功了!”并列出一项项的“成果”,对明显的错误视而不见。无数次指出问题后,它却一次次回答“哦,我知道了!”,“这次我找到问题的根源了!”结果全是空话……因为实在没法改正,只能自欺欺人吧?

你说不要定太高的目标,要有策略。我们从最简单的小函数开始,逐步进行,它就能做到吗?我发现它连小块代码都不一定写得好,有些几行的小函数都要我纠正多次才能改对。将来可能它又把它们改错,所以得盯着它,得知道什么代码是对的。

对于这个问题,不能把责任全推给Cursor,Cursor不背这个锅。

我想举个例子,假设我们新入职一个员工,已经有三到五年的编程经验。你觉得他能马上参与到复杂功能的开发中吗?

其实答案大多数时候是否定的。

原因在于,这个员工需要花时间去了解项目的背景、业务流程、团队已有的开发框架和规范,以及团队潜在的约定俗成的知识。只有当这些都熟悉了,才能顺利进入工作状态。

与AI和Cursor的沟通也是一样的道理。如何让AI更了解你,前期需要花费不少时间进行协同沟通,逐步总结出一些共性规范、流程和定义等,把这些预置到AI工具里,让AI越来越懂你,按照你的思路和规则工作。

你认为像 Cursor 这样的 AI 真的能取代程序员吗?

如上图,为了更好地使用AI工具,实际上我们需要提前准备大量的规范模板和提示语。有些可以形成上下文工程的md文件,有些要配置到Cursor的规则里。这才是成功应用AI工具的关键。

我之前提到,AI编程的第一步往往是通过Markdown来结构化文档,但程序员天生不喜欢写文档,总是想到哪里写到哪里,这种思路其实不适合快速转向AI编程。

我们来看下面的截图:

你认为像 Cursor 这样的 AI 真的能取代程序员吗?

举个简单的例子,做一个学生选课系统,开始时不要急着生成代码。先构建一个DesignDoc的子目录,编写文档,至少包括以下几类:

  • 总体系统介绍、技术架构和选型说明
  • 数据库和对象设计
  • UI/UE界面规范
  • 各个功能点设计(拆分为多个md文件)

好了,再回到那两万多行代码的问题,越改越乱的问题。

实际上,这都是上下文长度和AI记忆能力的问题。解决方法有两个:第一,复杂的大项目要拆分成多个小项目和组件,按架构的思路来处理;第二,在沟通几轮后,及时让AI归纳总结之前的输出内容,即使前面的细节丢失,也不影响后续的推理和输出。

所以说,最近很多人不要一味地把问题归咎于AI。其实除了上下文记忆的限制,目前的AI大模型在编程方面并没有明显的缺陷。我们不是在找AI的麻烦,而是得思考怎样调整我们传统的开发模式,寻找一种更有效的与AI协作的方式。

不过,知道什么样的代码是优质的,这可真是个难题。没有深入的研究和丰富的经验,根本无从判断。确实,AI现在成了编程的小助手,而我则成了VP。但是,一个不懂计算机科学的VP带领一群写着乱七八糟代码的程序员,能有什么好结果?看着公司里类似的现象,我心里也明白了。根本不知道团队里的人在干什么,谁说的对,下一步该怎么办。有多少VP是在瞎忙乎,我心里也是清楚的。

所以就算有了AI,依然没用,因为你驾驭不了它。你根本不配做VP。

使用AI编程的时候,最重要的就是你能否有效地掌控它,这一点我完全赞同。

想象一下,你有一个小系统的需求,然后交给开发团队去实现。完成后你其实并不太担心,也不需要去理解他们的设计思路和代码逻辑。因为就算上线后出现问题,你知道团队里的张三会负责修改和维护,你对这个团队本能地信任。即便张三离开了,李四也能接手,继续维护和修改。

这里就引出了一个关键的问题。

假设现在企业要开发一个完整的业务系统,AI编程能根据你的需求完成开发、测试通过并上线。那么问题来了,作为推动AI工作的人,你真的需要完全理解AI输出的代码吗?

如果你不去看这些代码,是否能够完全信任AI生成的代码?这不仅关乎上线后的稳定性,还包括AI在出现问题时是否能继续扩展和智能修复。现在有多少程序员敢把完全不懂的AI代码直接打包上线呢?

这就很容易理解前面提到的计算机科学和编程的关系。首先,你需要能够清晰地表达你的需求;其次,虽然代码不是你写的,但你得能理解它。如果做不到这一点,自己玩玩AI编程、写些小工具还行,但要用AI做个大系统上线,那有几个人敢这么做呢?

或许这个问题将来会有解决办法,但至少现在还不行。

因为绝大多数代码都是普通程序员写的平庸代码,训练数据也是如此,所以AI几乎不可能写出“王垠级别”的代码,这一点大家都能理解。我发现把我写的代码给AI,它确实能进行一些有效的分析和改进,但如果从头开始写,AI真的是很难。每个小函数都得我反复修改好几次,才能达到我想要的简单和易懂。

在我计算机科学的课程里,写出来的代码都是极其精炼的,和普通公司的代码完全不在一个水平上。因此上我课的同学们,基本上没希望靠AI完成练习。因为数据太少,没有足够的训练基础,所以AI恐怕永远无法达到这种精炼程度。当然,毕业后同学们的能力都远超AI,也远超那些普通程序员。

这就是我课程叫“计算机科学”,而不是“编程”的原因。计算机科学家和程序员/软件工程师之间是有很大区别的。AI或许能够替代普通程序员,但永远无法取代计算机科学家。它只能作为计算机科学家的工具。

大家可以思考一个问题。拿我的思维专栏作为例子。

我在思维专栏写了很多关于思维、学习方法、事物认知和问题分析的文章,其他人也写了不少。这些都是AI的训练资料。那么,如果现在所有人都不再写新的思维类文章,让AI来写,你觉得AI能真正推理出新的思维理论和实践文章吗?

答案显然是否定的。

我的理解可以简单总结为,AI擅长重构已知的知识和内容,但无法创造对未知的突破和创新。AI的所有输出都来自于先前的训练数据。就像AI写小说这样的场景,我认为它无法跳出固有的模式,产生新的创意。

因此,在未来的AI时代,整个人类社会和科技的发展,必定需要那些探索前沿知识和进行创新的人。人们往往会分为两类,大多数人将成为应用AI的人,而只有少数人依然具备创新精神、实践和实验的能力,能为AI提供新的知识和数据。否则,AI的发展只会越来越平庸,这就是问题所在。

别误解,我其实觉得AI是很棒的工具。用它的时候,我解决问题的速度明显提高,很多繁琐的事情不再需要我亲自去处理。这也是为什么经历了很多失败后,我仍然选择使用它们。但是你必须明白,AI只是把人的能力提升了而已,如果你的能力是零,无论乘以多少都依然是零。

我完全同意这个观点,再补充一句:AI让强者更强,而让弱者更加平庸。

来源:知乎
原文标题:你觉得现在的 ai(例如 cursor) 可以替代程序员吗? – mnbqwe10 的回答
声明:
文章来自网络收集后经过ai改写发布,如不小心侵犯了您的权益,请联系本站删除,给您带来困扰,深表歉意!

发表评论