我超讨厌“氛围编程”这个词。
I so hate the phrase "vibe coding"

原始链接: https://artiss.blog/2025/03/i-so-hate-the-phrase-vibe-coding/

“氛围编程”(Vibe coding),即利用AI生成代码的做法,正成为一种令人担忧的趋势。它本质上是让接受开源代码训练的AI编写程序,而用户无需理解其运作方式或原因。这引发了关于代码质量、安全性及原创性的严重担忧。 作者认为,“氛围编程”降低了编程的艺术性和技巧,生成的代码质量低下,漏洞百出。虽然支持者认为这将程序员的角色转变为调试,但作者反驳道,修复AI生成的代码往往比正确编写代码花费更长时间,这可能导致缺乏经验的个人大量编写低质量代码。 此外,这种做法还利用了开源社区的慷慨,却没有进行适当的署名或补偿。作者主张必须对AI生成的代码进行标记,并制定机制以防止其用于训练大型语言模型(LLM),从而确保编程行业的完整性,并保护原创作者的权利。

Hacker News 的一个帖子讨论了“氛围编程”(vibe coding)这个贬义词,它用来形容使用大型语言模型(LLM)生成代码而不理解代码的行为。许多用户认为这种做法令人尴尬,可能导致代码质量下降,并降低熟练开发人员的价值。批评者担心未来 LLMs 会使用并传播未经审查的 LLM 生成的代码,从而导致“垃圾进,垃圾出”的局面。 一些人则为 AI 编程工具辩护,认为它们可以作为经验丰富开发人员的倍增器,加快原型设计速度并处理明确定义的任务。他们认为这类似于结对编程,高级开发人员指导“初级”的 LLM。另一些人则认为这与“fuckitjs”的演变类似,强调其在快速概念验证 (POC) 或最小可行产品 (MVP) 开发中的作用,但同时也对关键应用程序的“氛围式上线”(vibe push-to-production)表示担忧。 讨论还涉及工业革命的类比,质疑 LLMs 是否真的会产生更优秀的代码,还是仅仅停留在工具的层面。也有人认为这个词具有冒犯性,因为编码正在成为人人可用的技能,但同时也存在管理层为了短期利益而用“氛围程序员”取代称职程序员,从而损害代码库的风险。

原文

“Vibe coding” is one of the latest “in-words” in code development right now. It’s defined as such…

Vibe coding (also written as vibecoding) is a recently-coined term for the practice of writing code, making web pages, or creating apps, by just telling an AI program what you want, and letting it create the product for you.

Merriam-Webster

It’s instructing AI (or, rather, LLMs – which the Wikipedia article on the same subject clarifies) to write code for you.

Why do I hate it so much?

If we were referring to writing a recipe book or creating a novel it doesn’t have its own “hip” phrase to go with it. Many people would simply call it “stealing” (see video game voice-over artists, actors, book authors, etc. for citations).

LLMs don’t miraculously know how to create code – it’s learning from what’s available to it online already. Do you think it’s learnt from closed code such as Microsoft software, or anything from Apple? No. It’s taking advantage of the generosity and sharing spirit of the open-source community.

So, if you “vice code” something for WordPress, how do you think it knows all the tricks of WordPress? All the right functions and hooks to use? The LLM has trawled open source code and documentation to learn it. But without knowing the context and properly understanding it, it’s generating poor quality code too.

And on that we stick a trendy phrase, “vibe coding”. If you have a cleaner for your home, do you refer to that as “Oh yeah, I was vibe cleaning today” – i.e. getting someone else to do the work for you?

I like the second sentence in the Merriam-Webster definition…

In vibe coding the coder does not need to understand how or why the code works, and often will have to accept that a certain number of bugs and glitches will be present.

Translated: the result is likely to be shit, and you probably won’t know how to fix it.

But Wikipedia defines this part a little differently…

The LLM generates software, shifting the programmer’s role from manual coding to guiding, testing, and refining the AI-generated source code.

Wikipedia

So, it’s shit and you’ll spend a long time fixing it.

This also suggests the person doing it is proficient enough to properly test and debug – all the AI is doing is taking away the need to write the code in the first place. If this is the case then I’d suggest this is a false benefit as, based on what I’ve seen, you’d spend as much time, if not more, fixing and debugging your code than if you’d written it correctly in the first place yourself.

But this raises another question. What kind of coder wants to avoid the pesky issue of writing code and concentrate on debugging and testing? Someone who isn’t very good or doesn’t like coding I’d suggest. Is this the right person to be checking over the AI results and then supporting it?

What is vibe coding then? Let me share my own, personal definition…

Getting LLMs, who have learnt from people who have generously shared their code online, to write code for you, often poor quality, with no accountability and often with no understanding from the person doing it, of what could be wrong with it, and hence unsupportable as a result. At best, the requester1 does code but is so uninterested in the art of coding that they’d rather debug poor quality AI results rather than write it themselves.

Is my definition fair? I’d say it’s actually pretty much what Merriam-Webster and Wikipedia are defining it as.

I touched upon something else in my definition too, “the art of coding”. “Code is Poetry” has long been the tagline for WordPress and it’s something I passionately believe in. There is a genuine artistry to good quality code – how it’s structured, the logic of it, etc. You’re not going to see it in a gallery any time soon but another developer will acknowledge and appreciate good code in the way you would a piece of art.

What the LLMs are producing is not art. But it is stealing from it. Which is why I initially compared this to how AI is stealing from authors, performers and, yes, artists. This is no different. And like in those other examples the AI code is usually inferior, so sully the name of the original work that it’s stealing from.

When I looked at a recent example of AI generating code, I noted the following comment from the person who’d done it, talking about WordPress plugin developers…

WordPress is notorious for having inexperienced developers that don’t know a thing or two about security or don’t even bother.

Yet, when I checked a simple plugin generated by the same LLM, it had 13 security vulnerabilities in it – none of which would be accepted by the plugin directory that the same person was berating. Will a world in which inexperienced (or zero-effort) developers use AI to create poor quality code enhance or diminish the work of those who develop themselves and pride themselves on good quality results? I think we know.

Eventually LLMs will get better and, hopefully, they’ll one day create code that’s as good as anything a really good developer can write. But that’s not happening yet and, even in that world, it doesn’t get away from where that learning has come from.

Until then, we need 2 things…

  1. An insistence that all AI generated code is marked as such
  2. A way to prevent our code from being used by LLMs for learning

“Vibe coding”. It’s just a trendy, hip name to hide the reality of what it actually is. And that’s why I hate it.

联系我们 contact @ memedata.com