【导读】靠 AI 简单加持的集成开发环境(IDE),真的满足你了吗?本文长度 13,000+ 字,作者将从 IDE 设计者和资深程序员的角度出发,深度剖析程序员心中对 IDE 的真正需求,给出 AI 时代下衡量 IDE 优劣的重要标准。
本文整理自字节跳动豆包MarsCode团队技术专家天猪在 2024 全球软件研发技术大会中的演讲,同时收录于《新程序员 008》。《新程序员 008》聚焦于大模型对软件开发的全面支撑,囊括 Daniel Jackson 和 Daniel Povey 等研发专家的真知灼见与“AGI 技术 50 人”栏目的深度访谈内容,欢迎大家点击订阅年卡。
作者 | 天猪
责编 | 王启隆
出品 | 《新程序员》编辑部
我已经从业很多年了,当时可能还没有前端这个岗位。
高二那年,中国刚兴起互联网,网吧每小时要收 12 块钱。我开始学习编写 HTML + JS + CSS 甚至 Flash,从北邮毕业后,先在小公司待了很多年,接着加入了 UC。随着 UC 被阿里收购,我在阿里游戏负责前端团队,搞前端工程化。几年后,为了去看看国内前端的圣地,就应玉伯邀请,转岗去了蚂蚁的体验技术部,主要深耕在 Node.js 基础设施领域。这么多年里也一直在社区参与开源项目,EggJS 和 CNPM 就是我核心参与的 2 个开源项目,欢迎通过 GitHub(@atian25)跟我交流。
加入字节跳动之后,我一直在继续做基础设施建设。入职后,我发现一件很有趣的事:在字节内部有非常大比例的正式员工在使用自研的云端 IDE(集成开发环境),而在其他大厂更多是外包同学在用。这可能是因为字节有很多 monorepo(单一仓库)模式,大库的本地运行极为耗时,又譬如我们的员工遍布全球各地,需要随时随地可以进行编码,种种因素促使云端 IDE 在字节跳动内部的使用需求持续高涨。
2022 年,ChatGPT 横空出世,引爆整个人工智能行业,AI 的能力以超越人类想象的速度进化。如果用第一性原理来看大语言模型,本质上大语言模型的唯一工作就是预测下一个 token,相比起复杂的自然语言,编程语言是更加简洁、严谨、可预测的。我们已经看到了大语言模型在自然语言预测上令人震惊的效果,因此有理由相信,大语言模型在编程语言预测上也具有非常大的潜力。
在过去的这些年,我所在的部门一直从事开发者工具相关工作,我们的产品服务了字节内部成千上万的工程师,在字节内部有 70% 的工程师在使用豆包代码助手的内部版本来提升他们的开发效率,大语言模型的出现,让我们看到了新的生产力提升开发者效率和体验的可能性,也让我们有机会能够在 AI 时代更好地服务所有开发者,我们非常兴奋能够参与到这一旅程之中。
大概在去年年底时,我与团队开始参与到豆包MarsCode的开发。这个产品目前提供了两种形态:一是许多人熟悉的本地编程助手插件,二是云端的 AI IDE。其中我们的 AI IDE 涉猎到整个链路,包括 IDE UI(用户界面)、IDE Server (服务)、工作区容器、场景化服务等很多能力,而我主要负责工作区和场景化。
豆包MarsCode这个产品和字节跳动的理念其实是一致的:“激发创造,丰富生活”。我们期望用 AI 来激发程序员,包括广大的“泛程序员”群体,让用户使用我们的产品实现过去 10 倍的生产力,成为超级程序员。我们坚信,AI 在编程领域的潜力远未被充分挖掘,当前的 AI 辅助编程仅是冰山一角,未来将朝着结对编程乃至 AI 驱动编程的方向迈进。
我们希望打造一款世界级的产品,拥有世界级的体验,也希望有越来越多认同这个趋势的同道者一起前行,也许是那个愿意『较真』,为 IDE 的颜值能折腾字体和配色一两周的你,也许是那个勇于挑战 K8s 和云服务极限,『抬高技术天花板』的你,期望能加入我们一起探索未来。
AI IDE 演进史
作为一名资深程序员,我每天仍需要写非常多的代码,所以我想从自己的视角观察 IDE 的演化历史,并扪心自问:我们需要怎么样的一款 IDE?
在计算机编程的历史长河中,最初的程序员甚至需要通过打孔机 + 编织机来输入指令,这一过程孕育了编程一词,因为程序真的是“编”出来的。随后,我们进入了文本编辑器时代,Vim、UltraEdit 等轻量级工具与 Eclipse、JetBrains 等 IDE 的重功能分化,形成了编程工具的早期格局。
进入 21 世纪的前十年,纯文本处理的文本编辑器与 IDE 之间的界限开始模糊,代码编辑器时代悄然来临。Sublime 的出现堪称转折点,它不仅解决了处理大型文件时的性能瓶颈,还引入了快捷操作、命令面板等现代 IDE 常见的功能,极大地提升了开发效率。与此同时,Atom 作为 GitHub 当时的孵化产品之一,凭借其强大的插件生态和高度定制化能力迅速走红,尽管性能问题一直为人所诟病。
紧接着,微软推出了 VSCode,这中间有一段传奇的故事:Atom 和 VSCode 在技术上的底层框架 Electron 是由中国开发者赵成(GitHub @zcbenz)开发的。虽是“同根生”,但 VSCode 相比 Atom 采取了不同的策略,它在初期非常克制,专注于性能等用户体验,譬如很多面板当时都是不支持定制的。VSCode 在生态和体验找到平衡点,最终迅速成为最受欢迎的代码编辑器之一,击败了 Atom。
随后,AI 技术开始渗透至编程领域。前文已经提到,大模型的本质是对下一字符的预测,而这一能力不仅适用于自然语言的翻译(如今 ChatGPT 已经能解决很多翻译需求了),同样适用于编程语言的解析与生成。对程序员而言,编程语言(如 Java、JavaScript)本质上也是一种语言,AI 能够理解和生成这些语言,为编程带来了新的可能性。
随着 AI 技术的普及,各类 AI 驱动的 IDE 产品如雨后春笋般涌现。GitHub Codespaces 和 Replit 等产品也纷纷开始积极拥抱 AI 辅助编程,前者凭借微软的深厚底蕴赢得了广泛认可,后者则快速转型,成为前端页面预览与分享领域的佼佼者,用户基数庞大。此外,还有 Cursor 这样的代码编辑器以其在 AI 领域的深入探索,吸引了众多技术爱好者的青睐。同样,我们豆包MarsCode应运而生,想一起去探索这项技术的极限。
这引出了下一个问题:我们程序员需要的 IDE 有哪些要素?
从我的视角出发,理想的 IDE 应具备以下核心要素:
卓越的开发体验:我用简单的几个字来诠释我眼中的“开发体验”:颜值即正义。在程序员眼中,IDE 的美观度和交互体验其实至关重要,第一印象往往决定了后续的使用意愿。
随时随地开发:在当今时代,能否实现随时随地开发成为衡量 IDE 优劣的另一重要标准。是否必须依赖本地电脑进行开发?是否在学习一门新语言时需要重新配置环境?甚至外出时带个配备妙控键盘的 iPad Pro 应急编程一下?这些场景下的开发体验同样重要。因此,理想的 IDE 应具备跨终端与跨场景的兼容性,实现即开即用,随时可投入开发状态。未来,我们期待更加颠覆性的人机交互体验,IDE 的形态是否会迎来根本性的变革,这一点令人充满期待。
AI 原生价值:AI 技术的原生集成对于下一代 IDE 至关重要。随着 AI 技术的普及,每位程序员仿佛拥有了一位高潜力的实习生,能够协助完成诸多任务。AI 技术对编程领域的影响主要体现在两个方面:一是提高研发效率,加速编码进程;二是辅助决策,提供高质量的问答服务。当前,我们正处于 AI 辅助编程的阶段,那未来是否会迈入 AI 驱动编程的新时代?对此,我满怀期待,积极参与其中,见证这一进程的推进。
AI 辅助编程
接下来,我们将聚焦于核心话题——AI 辅助编程。
如图 1 所示,这份开发者社区调研结果揭示了程序员对于 AI 的具体需求。实质上,我们归纳出了代码生成、补全、自然语言转代码、初始代码生成、单元测试生成以及代码解释等方面的需求。特别是在接手新库或模块时,理解其内部逻辑变得尤为重要