
Zig 有什么用Vitaly Bragilevsky那么 Zig 现在的定位是什么它解决了什么问题Andrew Kelley当你想完全掌控计算机时就会用到 Zig。你不希望浪费任何一点性能追求极致的运行速度和内存利用率。最重要的是你想为用户打造最出色的体验。在启动 Zig 项目之前我为自己设定了一个哲学绝不在用户体验上妥协。我不会因为使用了 Go 或 JavaScript 就说“由于语言限制软件只能做到这种程度”。如果需要我会改变整个工具链甚至自己造一个从而让计算机发挥出它本应具备的能力为用户提供最好的体验。Vitaly Bragilevsky目前 Zig 有哪些实际应用Andrew Kelley首先想到的是 Ghosty这是一个由 Mitchell Hashimoto 开发的现代化终端模拟器完全由 Zig 编写代码质量非常高。还有 TigerBeetle这是一个分布式的金融事务数据库。他们通过批处理操作实现了在这个领域罕见的高效率。相比其他使用 PostgreSQL 或通用关系型数据库的方案TigerBeetle 快了上千倍。它非常注重预分配资源一旦运行起来就绝不会发生动态内存分配失败这保证了其响应延迟非常稳定且可预测。此外还有 Bun这是一个高性能的 JavaScript 运行时。虽然它使用了 JavaScript Core 和大量的 C 库但所有的胶水代码都是由 Zig 编写的。这个项目最近刚被 Anthropic 收购。Vitaly Bragilevsky我还听说 Uber 也在使用 ZigAndrew Kelley是的Uber 正在使用 Zig 的工具链。他们使用 zig cc 来为 ARM64 架构交叉编译他们的 Go 代码。Go 语言虽然自带交叉编译但一旦代码中涉及到 C 语言部分Go 就无能为力了。在这种情况下你可以直接把 Zig 当作 C 编译器来配合 Go 使用从而实现无缝的交叉编译。Vitaly Bragilevsky顺便问一下为什么叫 ZigAndrew Kelley当时我想要一个简短的单词随后就在 Google 里面搜索“Zig 编程语言”时是没有任何结果的。我写了一个简单的 Python 脚本来打印一些随机单词当 Zig 出现时它一下子吸引了我。发布十年一直缺席的 Zig 1.0 版本Vitaly BragilevskyZig 已经位列开发者最喜爱的语言前五名了但为什么诞生 10 年了还没有发布 1.0 版本阻碍是什么Andrew Kelley1.0 对不同项目意味着不同的标准。Go 在发布 1.0 后很长时间没有触动语言核心。Rust 1.0 发布较早但他们有“版本Editions”机制。对于 Zig 来说1.0 意味着一个向后兼容的承诺代表语言已经稳定未来不会破坏现有代码。Zig 软件基金会ZSF不是一家初创公司我们没有投资压力没有人在背后催促我们我们也没有退出计划。我们是一家 501(c)(3) 非营利组织。我们不需要追求“快鱼吃慢鱼”或者急于变现我们的目标是打磨一个伟大的项目并长期维护。我们有时间去稳步改进而不必被迫接受那些为了赶进度而产生的错误决策。当我们发布 1.0 时它将是一个真正不妥协的匠心之作。Vitaly Bragilevsky软件开发中有一个概念叫“更糟就是更好”Worse is Better即追求快速上线再修复PHP 和 Go 都是这么成功的而你却反其道而行之为什么Andrew Kelley我对“Worse is Better”这个说法有点反感因为在语言逻辑上这个观点根本说不通。我认为更准确的说法是“以简胜繁Doing more with less”。我们依然想提供强大的功能但我们追求的是复杂性与效用之间的平衡点。例如在 Zig 的工具链中通过一个简单的参数就能让编译器针对完全不同的操作系统和架构进行编译这种高度的简洁带来了巨大的效用。Vitaly Bragilevsky你认为缺少 1.0 版本会影响公司的采用吗Andrew Kelley我知道 1.0 的发布肯定会带来用户和企业采用率的激增。但我看重的是长远未来我希望 Zig 成为未来五十年的通用语言。我们是一家精简、高效的小型组织我们不急于求成。Zig 编程语言的生存之道Vitaly Bragilevsky聊聊基金会2024 年你们的收入是 67 万美元主要的资助者是谁Andrew Kelley如果你看我们的财务报告会发现我们的收入来源非常多元。很大一部分赞助来自个人捐赠者此外还有各种各样的公司。我对此非常自豪因为没有任何一个单一实体可以对我们说“你必须按我说的做否则我就撤资。”如果是那样我们会直接拒绝并告诉他们没有这笔钱我们依然能生存。这种健康的边界感让我们保持独立。Vitaly Bragilevsky赞助商能影响 Zig 的开发吗Andrew Kelley他们对开发的影响力和普通人是一样的。他们可以参与 Bug 追踪提交 Pull Request 或者在开发频道交流。大家在公平的基础上通过技术实力对话没有所谓的“高优先级秘密通道”。Vitaly Bragilevsky你的年薪是 15.4 万美元这仅相当于一个高级工程师的水平。作为整个语言生态的奠基人你觉得这个薪资合理吗Andrew Kelley这是由 Zig 软件基金会的董事会在第一次会议上决定的。当时参考了纽约市高级软件工程师的中位薪资水平。坦白说我感觉自己已经是中产阶级上层了我能买得起房付得起生活费这让我已经很知足。对我来说拥有一个精简高效、不被资本裹挟的非营利组织所带来的“自主权”比更多的金钱要珍贵得多。它让我们更有韧性甚至在去年整个科技行业大裁员的背景下我们还能给外包开发者涨薪。这种独立性让我们有底气说“1.0 还没准备好再等等”。Vitaly Bragilevsky如果有大公司愿意出 1 亿美元买下 Zig 呢Andrew Kelley1 亿美元确实很多毕竟我们每年的总收入还不到 100 万美元所以我当然会拿。但我不会接受任何导致团队盲目扩张的条件我不想管理 100 人。目前我们只有一个员工就是我再加上 5 名全职外包。去年我们收入的 91% 都直接发给了这些开发者。我目前的管理上限大概是 10 个人再多我就没动力也没精力了。如果真的收到了这笔钱我会把它存进银行确保项目在未来 100 年都不需要再融资但我依然会保持小规模开发。Vitaly Bragilevsky你在 2022 年离开了 Reddit 和 Twitter为什么Andrew Kelley我觉得在这些网站上发帖正变得像以前在 Slashdot 或 Digg 上一样毫无意义。我们是软件工程师希望尽可能减少所谓的“市场营销”。社交媒体上充斥着杠精和受算法控制的内容。相比之下我们现在更愿意把精力投入到 Zig Day 这种线下活动和社区建设上这比在社交媒体上浪费时间更有价值。Vitaly Bragilevsky2025 年末你把 Zig 的主仓库从 GitHub 迁移到了 Codeberg原因是什么Andrew KelleyGitHub 对我们来说已经不好用了我们的持续集成CI运行经常报错或停止工作。Codeberg 是一个总部位于德国的非营利、社区驱动的平台。作为一个程序员我发现使用非营利组织的服务比使用大公司的服务要稳定得多。大公司总是在追求下一个季度的利润而非营利组织的目标就是维持服务。这种稳定性正是我想要的。Vitaly Bragilevsky即使因此丢失了 GitHub 上的赞助商也无所谓吗Andrew Kelley这是一个艰难的抉择因为涉及资金风险。但我们的首要任务是写软件如果 GitHub 的 CI 坏了我们就必须找个能用的地方。事实证明我们的支持者非常宽容且理解。Vitaly Bragilevsky你们也在脱离 LLVMAndrew Kelley是的。我常拿 arcade 游戏《Killer Queen》举例开发者用了 Unity 引擎但由于引擎底层哪怕只有微小的变化都会彻底改变职业选手的操作手感甚至修个 Bug 都会引起社区抗议。核心产品如果依赖外部工具是非常危险的。对 Zig 来说LLVM 曾经像自行车的辅助轮。现在我写代码已经十年了对编译器开发的了解远超当年我可以把辅助轮拆掉了。通过拥有自己的 x86 后端我们实现了增量编译即使是百万行级别的代码库重新编译也只需要 50 毫秒或更短。这是 LLVM 永远无法做到的。Zig 严格禁止 AI 渗透Vitaly BragilevskyZig 为什么有着极其严格的“反 AI 政策”Andrew Kelley首先AI 生成的代码贡献基本上都是垃圾。它们不仅没有价值甚至有负价值因为它们耗费了我们核心团队极其有限的 Code Review 时间。我们现在积压了超过 200 个 PR 等待审核如果有人发一个他们自己都不知道在写什么的 AI 代码我们在评审几次后发现真相那完全是在浪费生命。更重要的一点是开源贡献的核心意义在于“导师制”Mentorship。我们希望通过 Code Review 让贡献者成长最终成为核心团队成员或更优秀的系统程序员。而发送 AI 生成代码的人并不学习任何东西这完全背离了我们作为教育项目的初衷。我们宁愿要一个笨拙但愿意学习的人也不要一个只会投喂 AI 的搬运工。Vitaly Bragilevsky但 Zig 代码库使用的是 MIT 协议这意味着任何人都可以用你的代码去训练 AI这和你禁止 AI 贡献是否矛盾Andrew Kelley这不矛盾。我坚信 MIT 许可证那种“不附加任何条件”的精神。如果有人想用 Zig 训练 AI请便。这反而说明 Zig 是有价值的。虽然我不喜欢这些大公司的某些做法但这不影响我开源。我只是不允许这种低质量、不负责任的产出反过来污染我们的项目。Vitaly Bragilevsky有一种说法是 LLM 很难理解 Zig因为它的语法比较独特Andrew Kelley我没怎么试过但我听说效果还可以。Mitchell Hashimoto 就在 Ghosty 项目中大量使用 AI 辅助。但我的标准是不妥协的完美而不是“它好像能动了”。Vitaly Bragilevsky你在 Mastodon 上说“Vibe Coding”很无聊像看餐馆评论而不是看大厨做菜。你对“生成式 AI 编程”怎么看Andrew Kelley有些博客吹嘘用 AI 几分钟写个 App那真的很没启发性。我对软件的追求是“极致的完美”而不是“居然没出 Bug”这种低水准的惊喜。我希望看到的是一个人为了解决一个难题去学习、去挣扎、去突破那种人与计算机产生的共鸣是 AI 给不了的。Vitaly Bragilevsky你对编程的未来感到悲观吗Andrew Kelley完全不会。人类永远不会停止编写代码因为编程本身就很有趣。我最喜欢的 App 往往都是别人在业余时间纯粹为了爱好而开发的。商业公司的软件总是在试图卖给你东西或者通过算法控制你而爱好者开发的软件会尊重你让你做计算机的主人。这种关系永远不会消失。Vitaly Bragilevsky你最钦佩的三个软件项目是什么Andrew Kelley第一是 Linux很难想象没有它的世界会多么糟糕。第二是 Blender它作为一个开源项目能和那些财大气粗的商业软件同台竞技并胜出简直太伟大了。第三是 VLC它的组织架构和长期稳定性非常值得学习我有幸在大学时期还去巴黎参加过他们的活动。Vitaly BragilevskyZig 决定脱离 LLVM 自研后端这听起来很大胆。Andrew KelleyLLVM 就像自行车的辅助轮。我已经研究编译器十年了现在是时候摘掉它了。拥有自己的后端让我们实现了“增量编译”Incremental Compilation即使是百万行级别的代码库修改后的重新编译也能缩短到 50 毫秒以内。这是 LLVM 永远无法做到的。C 语言会被取代吗Vitaly BragilevskyZig 常被视为 C 的替代者。你觉得 C 真的能被取代吗Andrew Kelley想要取代 C你必须在 C 最擅长的领域击败它。Zig 没有放弃 C 所提供的任何底层能力同时改进了它的弱点。在 Zig 里你可以完成 C 能做的所有事情——从系统内核、嵌入式到 WebAssembly而且 Zig 做得更好。它减少了“搬起石头砸脚”的机会代码更易于调试。例如在 C 语言中如果你遇到段错误程序通常会瞬间退出什么都不告诉你。但在 Zig 中你会得到一个完整的调用栈追踪告诉你错误发生的具体行数。Vitaly Bragilevsky那 Zig 和 Rust 的核心区别是什么Andrew Kelley最核心的区别是类型系统。Zig 比 Rust 简单得多因为它没有那种描述“什么类型可以传给什么函数”的元语言。此外是内存管理。Rust 倾向于 RAII 和所有权模型这在逻辑上更接近面向对象而 Zig 选择将分配器Allocator显式化。在 Zig 中你会思考“我希望 CPU 做什么”然后写出对应的代码这是一种更底层的思维方式。Vitaly Bragilevsky你认为 Zig 的“杀手锏”是什么Andrew Kelley是工具链。Zig 没有任何系统依赖你在任何电脑上运行 zig build它就一定能工作。我们把编译器、链接器和构建系统统一在了一个工具里。Vitaly Bragilevsky有人抱怨 Zig 对“未使用的变量”报错太严格了为什么不把它做成警告Andrew Kelley这能捕捉大量 Bug。虽然初学者会觉得烦但一旦你开始重构大规模代码你就会感激这个设计。而且现在的编辑器如 ZLS都能自动帮你处理这些标记所以这不再是负担而是生产力。对开发者的建议以及未来畅想Vitaly Bragilevsky初学者应该如何学习 ZigAndrew Kelley强烈推荐 Ziglings。这是一个非常棒的项目你通过修复一个个故意出错的代码片段来学习语言特性。如果你想了解计算机底层是如何工作的学 Zig 会让你受益匪浅因为你在学习计算机的规则而不仅仅是某种语言的规则。Vitaly Bragilevsky你是 Zig 的 BDFL终身仁慈独裁者这种模式有什么优劣Andrew Kelley层级控制比委员会制度更简单、更高效。委员会倾向于妥协而妥协往往会导致平庸的产品。独裁者模式能保持愿景的一致性。当然我也在思考长期的可持续性毕竟我不能永远干下去。Vitaly Bragilevsky你的个人开发配置是怎样的Andrew Kelley: 我的配置非常简单且传统终端加 Vim。因为我经常对语言进行破坏性的重大改动所以我需要一个足够稳健、不依赖复杂语言服务器的工具。Vim 非常可靠即使我改了语法我依然能编辑代码。当然我要感谢 ZLSZig 语言服务器团队他们为社区提供了极佳的 IDE 支持。Vitaly Bragilevsky作为一名开发者或领导者你经历过职业倦怠吗Andrew Kelley: 我认为职业倦怠发生在当你付出了巨大努力却看不到回报的时候。我很幸运我热爱我的工作。每天醒来想到能改进 Zig我都感到兴奋。即使有时候某些底层改动需要耗费半年时间去重写标准库过程非常枯燥且辛苦但当我最终发布版本看到用户满意的反馈时那种成就感会驱散所有的疲惫。Vitaly Bragilevsky除了编程你还有什么爱好Andrew Kelley我以前是个“码农宅男”甚至在 OkCupid 工作期间还要利用周末加班搞 Zig。现在 Zig 成了全职工作我终于有了业余时间。我跑了一场马拉松在 21 英里处被一个 70 岁的大爷“超车”我当时想“天哪他是怎么做到的”这给了我很大的动力以后我想尝试全程跑完。另外我正在学习日语因为我非常喜欢日本动画也很享受这种学习新语言挑战自我的过程。我每天会花一个小时学习我的日语老师 Yuko 对我帮助很大。Vitaly Bragilevsky你认为 Zig 最终的成功是什么样子的Andrew Kelley: 我认为有两个层面的答案。从某种意义上说我们已经成功了。我们实现了财务独立拥有开心的用户群体并保持着稳定的发布节奏这种状态是可持续的。从另一个层面来说我希望看到 Zig 的采用率能达到 Go 或 Rust 的水平。我希望计算机是为人类服务的而 Zig 就是我送给世界的礼物希望能让人们在与计算机相处时感受到这种尊重和掌控感。当我们最终发布 1.0 时那将是一场不留遗憾的精彩演出。Vitaly Bragilevsky最后如果回到 2015 年你还会开始 Zig 这个项目吗Andrew Kelley绝对会。辞掉工作全职开发 Zig 的那一天是我人生中最棒的一天。我终于可以做自己的老板这种成就感和独立性让我感到无比幸福。我不仅是在写代码我是在为社会做贡献。我现在非常快乐。