当前位置: 首页 > news >正文

引领变革的“Vibe Coding”:AI辅助编程的崛起与挑战

你一定听说过它——它正在风靡全球。这就是“Vibe Coding”!

只需向大语言模型(LLM)发出一个简单提示,即可获得高质量、可用、专业级的代码。我们正站在又一个技术变革的十字路口,“Vibe Coding”正是这次变革的主角。

不过,抛开略带讽刺的语气,“Vibe Coding”真的像宣传的那样神奇吗?我希望,大多数严肃的程序员、数据科学家、AI工程师或相关领域的专业人士,对于这些夸大的AI宣传已经足够警惕,这次也不例外。“Vibe Coding”会成为摧毁程序员和传统编程的又一站吗?它是任何人都能用来开发高质量软件的万能工具吗?还是完全另有其意?

为了找到答案,让我们深入了解“Vibe Coding”——它是什么、与其他AI辅助编程方法有何关联,以及普通人能否仅凭一个提示就获得完整应用程序的可能性。

Feel The Vibe: Why AI-Dependent Programming Isn't The Enemy


什么是“Vibe Coding”?

广义而言,“Vibe Coding”是一种依赖AI的编程技术,用户仅需用简明扼要的描述向专为编写代码微调过的大语言模型(LLM)发出指令,模型便会生成相应的软件。这个术语由Andrej Karpathy于2025年初首次提出,并迅速成为流行语。

接下来,我会结合多方定义,逐步完善对“Vibe Coding”的理解,尤其是为了分辨各类AI驱动编程方式是否本质相同。让我们先来看Karpathy在2025年2月2日X平台上的原始解释:

“我在做一个项目或网页应用,但这并不是真正的编程——我只是看到什么、说什么、运行什么、复制粘贴什么,大多数时候都能用。”

——Andrej Karpathy

Karpathy并未声称这是“真正的编程”(“it's not really coding”),我认为这对定义至关重要,值得保留。

Merriam-Webster(韦氏词典)也已经给出了“Vibe Coding”的定义:

“只需告诉AI程序你的需求,让它为你生成产品……但你通常得接受其中可能存在的bug和故障。”

这里强调了“让AI为你完成”,以及对bug的容忍。

最后,Wikipedia(维基百科)也对“Vibe Coding”做了如下定义:

“据称,Vibe Coding让非程序员甚至非技术人员也可以以编程方式解决问题,‘工程’出自己的软件。”

此外,Simon Willison在接受Ars Technica采访时表示:

“如果你的每一行代码都是LLM写的,但你全部审查、测试并理解了,那在我看来这不是‘Vibe Coding’,而是在把LLM当作打字助手。”

文章补充道:“相比之下,Vibe Coding是指在没有完全理解代码如何工作的情况下就接受了这些代码。”

我很赞同这个观点。

综合来看,“Vibe Coding”具有以下特征:

  • 并不是真正的编程

  • 让非程序员也能参与编程

  • 生成的代码常有bug和错误

  • 用户对代码工作原理没有明确理解

据此,我给出自己的定义:

“Vibe Coding指用户通过提示语言模型生成代码,而无需对编程或生成的代码有深入理解。这使得编程活动对非程序员开放,但Vibe Coding本质上并不是真正的编程,而是一种粗略的模拟。”

——本文作者


AI辅助开发(超越“Vibe Coding”)?

任何AI辅助编程都有两个重要维度。

第一,AI生成代码的工作流如何?是对LLM输出的代码进行严格检查、测试、编辑、更新和重构,还是只要能运行就直接集成到代码库(即“vibe测试”)?

第二,AI编程时的提示内容有何区别?很明显:

  • “写一个完成X功能的程序”

  • “写一个程序,需要做到以下几点……确保以下要求……考虑以下因素……”

此外,AI辅助编程方式多种多样。

AI辅助开发的定义更广泛,涵盖任何使用AI工具的编程方式,包括Vibe Coding,也包括任何对LLM依赖较低的编程任务。

一个更复杂的AI辅助开发流程可能包括:

  1. 手动创建详细的项目规范

  2. 手动或借助语言模型生成项目文档

  3. 基于文档让LLM生成项目框架

  4. 进一步让LLM生成样板代码

  5. 让模型生成测试用例

  6. 让模型根据项目理解生成系统架构图(如Mermaid)

  7. 让模型生成伪代码

  8. 基于上述所有成果,让模型生成具体的代码块或函数

这种方法让人类程序员专注于系统设计、测试等环节,人机合作、迭代开发,效果更佳。每次只引入或修改“功能”而非“系统”,更易发现和修正新出现的错误。

我的经验是,利用LLM辅助编程时,无论依赖程度如何,最适合生成狭窄、定义明确的功能代码,采用增量、迭代式开发。


业内人士的见解

以上是我对Vibe Coding与AI辅助开发的看法。让我们听听行业内专家的声音。

Lavanya Gupta(摩根大通高级AI/ML科学家,卡内基梅隆大学语言技术研究所硕士)表示:

“Vibe Coding本质上是‘AI辅助编程’的更潮流、更口语化的说法,从Github Copilot流行起就已存在。Vibe Coding确实让软件开发更易于大众,将创意快速转化为应用或网站。但对于产生实际商业影响的能力,Vibe Coding仍受限于其生成可靠、健壮、安全软件的能力。成熟的软件开发流程不仅仅是代码生成,还包括安全协议、面向对象原则、数据库管理、缓存、部署管道、可扩展性、延迟-吞吐权衡等。

因此,Vibe Coding更适合做原型开发的起点,而要取代开发者的说法,目前看来还为时过早。”

Ritesh Modi(微软首席AI工程师,畅销科技书作者)认为:

“Vibe Coding有其价值,但要谨慎。你必须清楚自己想要什么,能一步步引导过程。实际上,它常常生成开发者不熟悉的代码,如果直接上线,后期维护将很棘手,技术债务难以预估。测试变得至关重要,必须确保每一行代码都能正常工作。

Vibe Coding更适合作为开发过程中的辅助工具,而非盲目信任的自动化解决方案。它就像一位高效率却对项目历史和架构一无所知的初级开发者。评估AI生成的代码,仍然是当下的挑战。”

Karun Thankachan(沃尔玛高级数据科学家,亚马逊、卡内基梅隆大学校友)表示:

“Pieter Levels的Flight Simulator、Kevin Roose的Lunchbox Buddy、Jacob Anderson的Content Genie——这些成功应用都是非程序员借助Vibe Coding开发的。Vibe Coding能胜任越来越多的编程任务。随着AI在理解遗留代码、系统集成和调试复杂架构方面能力提升,开发生产级解决方案所需的人力将减少,未来编程团队会更小。

但它不会消灭所有编程岗位。资深开发者仍需监督AI生成的解决方案,进行优化和调试。深谙数据结构、算法和系统架构的人才,依然是引领软件开发新时代的关键。”


Vibe Coding的机遇(以及潜在危机)

许多人抱怨“任何人”都能写代码了,认为AI能取代开发者。但事实是,Vibe Coding反而是程序员的盟友。

更现实地说,大多数非程序员Vibe Coder,若不理解代码,几乎无法完全依靠AI写出可用代码。如果Vibe Coding能激发更多人学习编程,这固然很好。此外,在某些特定场景下,非程序员也能用Vibe Coding完成一些小型实用任务,这同样值得肯定。打破壁垒、消除门槛是好事。

但要想仅凭Prompt打造全新复杂系统、不需任何后续打磨和重构,这种需求依然需要专业程序员。

虽然业界有人宣称“90%的代码未来将由AI完成”,但这种说法短期内难以实现。若有公司真的大规模裁撤开发团队,转而让AI写代码,后果将是灾难性的。系统崩溃、漏洞频发,反而为真正能善用AI的程序员创造了新机会。


结语

本文部分内容略带调侃,但我对Vibe Coding并无敌意。切记:拒绝“把门人”文化!但这也要求业界专家和利益相关者更加努力地区分高质量与低质量的代码。

AI辅助编程只会越来越普及。作为一个子集,Vibe Coding有其用武之地,但不会导致程序员大规模失业。还记得曾经说放射科医生会被AI取代吗?

尤其在安全层面,Vibe Coder难以掌控代码细节,早已在社交媒体上引发不少安全事故。这些问题本身就能让程序员在未来很长时间内大有用武之地。

或许,有人会用Vibe Coding开发出自动检测和修复Vibe Coded应用安全漏洞的框架?😳

http://www.xdnf.cn/news/292807.html

相关文章:

  • 某信服EDR3.5.30.ISO安装测试(一)
  • printf的终极调试大法
  • 分析 Docker 磁盘占用
  • FTP/TFTP/SSH/Telnet
  • FastMCP - 快速、Pythonic风格的构建MCP server 和 client
  • [人机交互]交互设计
  • Qwen3的“混合推理”是如何实现的
  • Kotlin-空值和空类型
  • 【AI提示词】SCAMPER法专家
  • 【最新Python包管理工具UV的介绍和安装】
  • SIFT算法详细原理与应用
  • 嵌入式模数转换原理与程序设计
  • 新型深度神经网络架构:ENet模型
  • 《 深入探索移位操作符:从原理到应用》
  • ESP-ADF battery_service组件之voltage_monitor子模块详解
  • 分析rand()和srand()函数的功能
  • 【机器学习-线性回归-5】多元线性回归:概念、原理与实现详解
  • Android控件VideoView用法
  • 工业主义与民主的兴衰:历史逻辑与未来危机
  • 三种石墨烯(Graphene)拉伸模拟方法对比
  • 偷钱包行为检测数据集VOC+YOLO格式922张1类别有增强
  • 密钥管理系统:数据库加密的隐形守护者与安当KSP+TDE创新实践
  • ecat总线6000段定义
  • 关闭ollama开机自启动
  • C语言数据在内存中的存储详解
  • Manus AI: 冲破次元壁,让手写文字跨越语言鸿沟
  • ByteArrayInputStream 类详解
  • 【Hive入门】Hive安全管理与权限控制:用户认证与权限管理深度解析
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的流量变现路径创新研究
  • Webug4.0靶场通关笔记15- 第19关文件上传(畸形文件)