<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tony Bai &#187; C</title>
	<atom:link href="http://tonybai.com/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>https://tonybai.com</link>
	<description>一个程序员的心路历程</description>
	<lastBuildDate>Tue, 26 May 2026 22:24:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>大洗牌！Google 内部确认：Go 正取代 C++，成为 AI Agent 时代的“通用语言”</title>
		<link>https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google/</link>
		<comments>https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google/#comments</comments>
		<pubDate>Thu, 21 May 2026 00:15:58 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AgenticSystem]]></category>
		<category><![CDATA[AgentOrchestration]]></category>
		<category><![CDATA[AIAgent]]></category>
		<category><![CDATA[AI智能体]]></category>
		<category><![CDATA[AntigravityCLI]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Channel]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[ConcurrencyModel]]></category>
		<category><![CDATA[DeveloperExperience]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoLanguage]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[goroutine]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[HighAvailability]]></category>
		<category><![CDATA[HighConcurrency]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[LanguageEvolution]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[PerformanceOptimization]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[StaticLinking]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[基础设施]]></category>
		<category><![CDATA[并发模型]]></category>
		<category><![CDATA[开发体验]]></category>
		<category><![CDATA[微服务]]></category>
		<category><![CDATA[性能优化]]></category>
		<category><![CDATA[智能体编排]]></category>
		<category><![CDATA[语言演进]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[通道]]></category>
		<category><![CDATA[静态链接]]></category>
		<category><![CDATA[高可用]]></category>
		<category><![CDATA[高并发]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=6339</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google 大家好，我是Tony Bai。 在过去的两年里，只要一提到 AI 开发，99% 的人脑海中弹出的第一个词绝对是：Python。而如果是涉及到大模型底层的高性能推理与算力压榨，大家想到的必然是 C++ 或是 Rust。 但在真正的工程落地中，情况正在发生一场令人猝不及防的剧变。 最近，Google 资深软件工程师 Jaana Dogan（@rakyll）在 X（原推特）上发布了一条引发技术圈热议的推文： “Go 成为 Google 内部 Agentic（智能体）系统的通用语言（lingua franca），这真的很了不起。我以前从未看到过 Go 有取代 C++ 的路径，但现在我相信这是可能的。” 这不仅仅是一条简单的技术感慨，它揭示了 AI 浪潮进入“下半场”后的核心工程困境：当我们把大模型封装成 Agent，并让成千上万个 Agent 并发协作时，Python 太脆弱，C++ 太沉重，而 Go，迎来了它的“天命时刻”。 今天，我们就来扒一扒，为什么 Google 会让 Go 接管 AI Agent 的底层开发？这对我们普通开发者的技术栈转型，又意味着什么？ 打破滤镜：为什么 Python 和 C++ 在 Agent 时代“失宠”了？ 要理解 Go 的上位，我们首先要搞清楚，AI [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/go-is-the-new-lingua-franca-for-ai-agents-at-google-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google">本文永久链接</a> &#8211; https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google</p>
<p>大家好，我是Tony Bai。</p>
<p>在过去的两年里，只要一提到 AI 开发，99% 的人脑海中弹出的第一个词绝对是：<strong>Python</strong>。而如果是涉及到大模型底层的高性能推理与算力压榨，大家想到的必然是 <strong>C++</strong> 或是 <strong>Rust</strong>。</p>
<p>但在真正的工程落地中，情况正在发生一场令人猝不及防的剧变。</p>
<p>最近，Google 资深软件工程师 Jaana Dogan（@rakyll）在 X（原推特）上发布了<a href="https://x.com/rakyll/status/2056528039698403498">一条引发技术圈热议的推文</a>：</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/go-is-the-new-lingua-franca-for-ai-agents-at-google-2.png" alt="" /></p>
<blockquote>
<p><strong>“Go 成为 Google 内部 Agentic（智能体）系统的通用语言（lingua franca），这真的很了不起。我以前从未看到过 Go 有取代 C++ 的路径，但现在我相信这是可能的。”</strong></p>
</blockquote>
<p>这不仅仅是一条简单的技术感慨，它揭示了 AI 浪潮进入“下半场”后的核心工程困境：<strong>当我们把大模型封装成 Agent，并让成千上万个 Agent 并发协作时，Python 太脆弱，C++ 太沉重，而 Go，迎来了它的“天命时刻”。</strong></p>
<p>今天，我们就来扒一扒，为什么 Google 会让 Go 接管 AI Agent 的底层开发？这对我们普通开发者的技术栈转型，又意味着什么？</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>打破滤镜：为什么 Python 和 C++ 在 Agent 时代“失宠”了？</h2>
<p>要理解 Go 的上位，我们首先要搞清楚，AI Agent 到底需要什么样的工程能力。</p>
<p>现在的 AI 应用，早就不是早期那种“写个 Python 脚本，调用一下 OpenAI API，把结果打印出来”的玩具了。真实的 Agentic 系统（智能体系统）包含了<strong>极其复杂的网络 I/O、并发工具调用（Tool Calling）、多智能体消息路由、长时记忆状态管理，以及大规模的分布式容错。</strong></p>
<p>在这个场景下，旧有的王者们暴露出了致命的缺陷：</p>
<p><strong>1. Python 的“工程化陷阱”</strong></p>
<p>Python 是 AI 研究员的最爱，因为它的数据科学库天下无敌。但当你要构建一个高并发、高可用、需要 24/7 运行的 Agent 编排系统时，Python 的弱类型（重构火葬场）和 GIL（全局解释器锁，导致无法真正利用多核并发）就成了灾难。正如原贴讨论区一位开发者所言：<em>“模型层可能是 Python 的天下，但围绕着模型的 Runtime（运行时环境）正越来越像 Go 的领地。”</em></p>
<p><strong>2. C++ 的“杀鸡用牛刀”</strong></p>
<p>C++ 拥有极致的性能，是模型训练和推理引擎（Inner Loop）的绝对霸主。但 Agent 编排系统真的需要 C++ 级别的疯狂数学计算吗？不需要。</p>
<p>Agent 系统本质上是大量的网络等待（等 LLM 返回结果、等数据库查询、等网页抓取）。用 C++ 来写极其复杂的并发网络请求和状态机，不仅开发周期漫长，而且极易产生内存泄漏。正如推文评论所指出的：<em>“C++ 背负了太多的历史包袱，它在 Agent 编排上显得太重了。”</em></p>
<h2>Go 凭什么上位？Goroutine 与 Agent 的“完美同构”</h2>
<p>Go 语言在这个时间节点爆火，并非偶然，而是因为它底层的并发哲学与 AI Agent 的行为模式产生了<strong>“完美的同构映射”</strong>。</p>
<p>在 X 上的讨论中，多位资深开发者一针见血地指出了核心原因：</p>
<p><strong>“Goroutines mapping directly to concurrent agent communication is the reason why it makes perfect sense.”（Goroutine 直接映射到并发 Agent 之间的通信，这是它如此完美契合的原因。）</strong></p>
<p>让我们用大白话来翻译一下这个硬核逻辑：</p>
<p>什么是多智能体系统（Multi-Agent System）？本质上就是一堆各自独立的“数字员工”，它们一边自己干活，一边通过发消息相互沟通。<br />
而 Go 语言最强大的杀手锏是什么？正是 <strong>CSP（通信顺序进程）并发模型，即 Goroutine（轻量级协程）和 Channel（通道）。</strong></p>
<ul>
<li><strong>当你启动一个 Agent 时</strong>：在 Go 里，你只需要一个简单的 go runAgent()，就能以极其低廉的内存代价（几 KB）启动一个并发实体。一千个 Agent？一万个 Agent？对 Go 来说毫无压力。</li>
<li><strong>当 Agent 之间需要协作对话时</strong>：你不需要去搞复杂的锁（Locks）或者共享内存，你只需要用 Go 的 Channel 把消息塞过去，另一个 Agent 就能安全地接收。</li>
</ul>
<p>Agent 的编排，需要的是“轻量级的并发管理”，而不是“极致的数学计算速度”。这简直就是为 Go 量身定制的战场。</p>
<h2>征服大厂，构建 Agent 架构的“铁三角”</h2>
<p>除了并发模型上的天作之合，评论区的一位开发者还另外总结了 Go 赢下这场战争的另外三个决定性因素。他指出，现代 Agent 技术栈奖励三种特性，而 <strong>“Go 完美击中了这三点（Go nails all three）”</strong>：</p>
<p><strong>1. 强类型系统（Types）：告别“盲盒”开发</strong></p>
<p>Agent 系统中充斥着复杂的 JSON 解析、Tool Calling 的参数校验、以及结构化的输出。Python 的字典（Dict）传递在项目变大后就像是“盲盒”，你永远不知道里面缺了哪个字段。而 Go 的强类型 Struct 和极度清晰的错误处理机制（虽然大家都吐槽 if err != nil，但它确实极其可控），让系统拥有了极高的可预测性（Predictability）。</p>
<p><strong>2. 极速的编译体验（Fast Builds）</strong></p>
<p>“编译速度是让它成为绝配的原因之一。”在快速迭代的 AI 产品中，Go 那种秒级的编译速度，让开发者可以飞速地测试 Agent 的行为逻辑。相比之下，C++ 那漫长的编译过程在需要高频微调的 AI 时代显得格格不入。</p>
<p><strong>3. 小巧的单一二进制文件（Small Binaries）</strong></p>
<p>当你把 Agent 部署到云端、边缘设备甚至是 Serverless 环境时，Go 编译出来的是一个无需任何外部依赖的独立执行文件。没有 Python 烦人的环境依赖（无需折腾 pip, conda, 虚拟环境），直接丢进一个极小的 Docker 镜像中就能运行，这对于现代云原生运维来说是无可估量的优势。</p>
<h2>一个反直觉的冷知识：大模型“最爱”写 Go 代码</h2>
<p>推文中一个开发者提出了一个极其有趣且经常被忽视的视角：<strong>在 LLM（大语言模型）的眼中，Go 是一门完美的语言。</strong></p>
<p>如果你经常用 Cursor/Codex/Claude Code等 写代码，你会发现一个现象：让 AI 写 Python，它经常会用错第三方库的版本；让 AI 写 C++ 或 Scala，它可能会搞出一堆极其复杂的继承、多态或者生命周期错误。</p>
<p>但如果你让 AI 写 Go 呢？成功率出奇的高。</p>
<p>原因在于：</p>
<ol>
<li><strong>Go 的语法极致简单、无聊，甚至“没有类（Classes）”</strong>。它只有 Struct 和接口，这极大地减少了代码的“表面积（Surface Area）”。</li>
<li><strong>Token 使用率极高</strong>。由于没有复杂的黑魔法和繁琐的泛型体系（早期），LLM 在生成 Go 代码时不容易出现“幻觉”，维护起来极其容易。</li>
</ol>
<p>在这个连代码本身都开始由 AI 生成的时代，<strong>“对 LLM 友好”</strong>竟然成了一门编程语言的核心护城河。</p>
<h2>终局推演 —— C++ 守住“内环”，Go 赢下“外环”</h2>
<p>那么，Go 真的会彻底消灭 C++ 吗？</p>
<p>并不完全是。这场讨论最终达成了一个非常清晰的技术栈共识：</p>
<p><strong>“C++ still wins the inner loop. Go wins everything around it.”（C++ 依然赢得了内环，而 Go 赢得了周围的一切。）</strong></p>
<p>未来的 AI 系统架构已经初露端倪，它将被清晰地划分为三个层级：</p>
<ol>
<li><strong>研究与数据层（Python）</strong>：用于模型训练、数据清洗、算法验证。</li>
<li><strong>算力内环（C++ / Rust / CUDA）</strong>：大模型的推理引擎（如 vLLM、Ollama 底层）、张量计算。这里需要极致榨干每一滴 GPU 性能，C++ 依然是绝对的霸主。</li>
<li><strong>编排外环与业务层（Go）</strong>：这是距离普通开发者最近、也是市场需求最大的地方。成千上万的 Agent 调度、API 网关、并发的数据检索（RAG）、记忆数据库交互、工具链调用，<strong>全部都将被 Go 统治。</strong></li>
</ol>
<h2>最新铁证！Google I/O 2026 震撼官宣：废弃旧路线，用 Go 重写 AI 核心入口！</h2>
<p>如果你觉得前面硅谷大佬们的讨论还只是“理论推演”，那么在刚刚举办的 <strong>Google I/O 2026 大会</strong>上，Google 官方直接用一记雷霆手段，把这个趋势变成了既成事实。</p>
<p><a href="https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/">Google 开发者博客发布了公告</a>：正式宣布停止维护原有的 Gemini CLI，全面过渡到全新的“Google Antigravity（反重力）”多智能体开发平台，并推出全新的核心入口 —— <a href="https://antigravity.google/blog/introducing-google-antigravity-cli">Antigravity CLI</a>。</p>
<p>而在官方给出的技术变更文档中，最扎眼、最让 Go 开发者狂喜的一条更新理由，白纸黑字地写着：</p>
<blockquote>
<p><strong>“Faster execution: Built in Go, Antigravity CLI is snappier and more responsive.” （更快的执行速度：基于 Go 语言构建，Antigravity CLI 更加轻快、响应更迅速。）</strong></p>
</blockquote>
<p><img src="https://tonybai.com/wp-content/uploads/2026/go-is-the-new-lingua-franca-for-ai-agents-at-google-3.png" alt="" /><br />
<center>图：Google I/O 2026：旧版 CLI，用Antigravity CLI替代</center></p>
<p>旧版的 Gemini CLI 是基于传统脚本语言（Node.js/TS 体系）构建的，在处理单点交互时绰绰有余。但 Google 明确表示，现在开发者的需求已经彻底变了：<strong>“你现在需要多个 Agent 相互通信、分工合作来解决复杂的系统问题。”</strong></p>
<p>当单点 CLI 变成“多 Agent 协同编排后端”时，旧有的 JS/TS 体系在高并发、异步工作流（Asynchronous Workflows）和底层系统控制上面临性能瓶颈。Google 毫不犹豫地选择用 <strong>Go 语言</strong> 彻底重写，就是为了利用 Go 极致的并发和执行效率，来支撑起“后台多任务并发运行、且不锁定终端”的强悍体验。</p>
<h2>小结：给开发者的生存建议</h2>
<p>过去的一年里，无数后端开发者感到焦虑，觉得自己掌握的 CRUD 技能在 AI 面前一文不值。但 Google 内部的这场技术栈迁移，给我们指明了一条无比清晰的道路：</p>
<p><strong>别再只盯着 Python 看了。</strong></p>
<p>当 AI 从单一的对话框，走向全面接管企业业务流的多智能体（Multi-Agent）协作形态时，对高并发、高可用后端工程能力的需求不仅没有减少，反而呈指数级爆发。</p>
<p>学习 Go 语言，理解 Goroutine，掌握如何构建一个稳健的 Agent 编排框架。<strong>因为决定下一个十年 AI 应用成败的，不再是模型本身的算力，而是谁能最好地管理和协调这些拥有智能的“数字大军”。</strong></p>
<p>而目前来看，Go，已经在这场战役中拔得头筹。</p>
<p>资料链接：https://x.com/rakyll/status/2056528039698403498</p>
<hr />
<p><strong>今日互动探讨：</strong></p>
<p>你目前在开发 AI 应用或 Agent 系统时，使用的是什么语言？你是否遇到了 Python 在高并发或部署时的痛点？欢迎在评论区分享你的实战经验与踩坑血泪史，我们一起探讨 AI 时代的最佳实践！</p>
<hr />
<p>还在为写 Agent 框架频频死循环、上下文爆炸而束手无策？我的新专栏 <strong>《<a href="http://gk.link/a/12IzL">从0 开始构建 Agent Harness</a>》</strong> 将带你：</p>
<ul>
<li>抛弃臃肿框架，回归“驾驭工程 (Harness Engineering)”的第一性原理</li>
<li>用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等，复刻极简OpenClaw</li>
<li>构建坚不可摧的 Safety Middleware 与飞书人工审批防线</li>
<li>在底层实现 Token 成本审计、链路追踪与自动化跑分评估</li>
<li>从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”</li>
</ul>
<p>扫描下方二维码，开启从 0 开始构建Agent Harness 的实战之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/build-agent-harness-from-scratch-qr.png" alt="" /></p>
<hr />
<p><strong>原「Gopher部落」已重装升级为「Go &amp; AI 精进营」知识星球，快来加入星球，开启你的技术跃迁之旅吧！</strong></p>
<p>我们致力于打造一个高品质的 <strong>Go 语言深度学习</strong> 与 <strong>AI 应用探索</strong> 平台。在这里，你将获得：</p>
<ul>
<li><strong>体系化 Go 核心进阶内容:</strong> 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏，夯实你的 Go 内功。</li>
<li><strong>前沿 Go+AI 实战赋能:</strong> 紧跟时代步伐，学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等，掌握 AI 时代新技能。 </li>
<li><strong>星主 Tony Bai 亲自答疑:</strong> 遇到难题？星主第一时间为你深度解析，扫清学习障碍。</li>
<li><strong>高活跃 Gopher 交流圈:</strong> 与众多优秀 Gopher 分享心得、讨论技术，碰撞思想火花。</li>
<li><strong>独家资源与内容首发:</strong> 技术文章、课程更新、精选资源，第一时间触达。</li>
</ul>
<p>衷心希望「Go &amp; AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚，享受技术精进的快乐！欢迎你的加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-and-ai-tribe-zsxq-small-card.jpg" alt="img{512x368}" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AI 编码胜率榜：Go 与 Rust 完胜 C++</title>
		<link>https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp/</link>
		<comments>https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp/#comments</comments>
		<pubDate>Wed, 20 May 2026 00:04:29 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[Agent]]></category>
		<category><![CDATA[AICoding]]></category>
		<category><![CDATA[AI编码]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[BlackBoxReverseEngineering]]></category>
		<category><![CDATA[BuildSystem]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[ClaudeOpus]]></category>
		<category><![CDATA[CodeGeneration]]></category>
		<category><![CDATA[CodeReplication]]></category>
		<category><![CDATA[Codereview]]></category>
		<category><![CDATA[EngineeringConsistency]]></category>
		<category><![CDATA[gemini]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GPT]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[MemorySafety]]></category>
		<category><![CDATA[Modularity]]></category>
		<category><![CDATA[monolith]]></category>
		<category><![CDATA[ProgramBench]]></category>
		<category><![CDATA[ReasoningChain]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[StaticTyping]]></category>
		<category><![CDATA[代码复刻]]></category>
		<category><![CDATA[代码审查]]></category>
		<category><![CDATA[代码生成]]></category>
		<category><![CDATA[内存安全]]></category>
		<category><![CDATA[单体架构]]></category>
		<category><![CDATA[基准测试]]></category>
		<category><![CDATA[大模型]]></category>
		<category><![CDATA[工程化一致性]]></category>
		<category><![CDATA[智能体]]></category>
		<category><![CDATA[构建系统]]></category>
		<category><![CDATA[模块化]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[逻辑推理]]></category>
		<category><![CDATA[静态类型]]></category>
		<category><![CDATA[黑盒逆向]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=6335</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp 大家好，我是Tony Bai。 过去两年，程序员群体经历了一场前所未有的“职业身份危机”。 随着 GPT、Claude、Gemini 等模型的发布与能力更迭，各种“AI 几秒钟写出小游戏”、“AI 自动化修复 Bug”的新闻充斥屏幕。在各种传统的代码补全基准测试（如 HumanEval）中，大模型们动辄刷出 90% 以上的惊人通过率。一时间，“程序员是夕阳行业”、“架构师即将下岗”的言论甚嚣尘上。 然而，这只是硬核工程世界的冰山一角。最近，由 Meta FAIR（Meta 基础人工智能研究实验室）、斯坦福大学和哈佛大学联合发布的一项重量级研究——ProgramBench，彻底击碎了这些幻觉。 ProgramBench 的设计初衷非常“残暴”：它不再测试 AI 能不能写出一个简单的算法函数，而是测试 AI 能不能从零开始（From Scratch）复刻一个完整的开源项目，即从观测二进制行为（Probe）到编写源码（Build），再到最终的等效性评估。 测试规则如下： 黑盒逆向：不给源码，只给 AI 一个编译好的二进制可执行文件（如 sqlite3、ffmpeg、ripgrep）和一份使用说明书。 物理断网：切断互联网访问，防止 AI 通过搜索“偷看”GitHub 上的源码。 架构自主：AI 必须自己决定项目的文件结构、选择什么编程语言、设计什么抽象层次。 图：ProgramBench 的评测全流程 在这场面向 200 个真实复杂项目的“闭卷考试”中，全球最顶尖的大模型们集体陷入了沉思。 数据表明，即便是在最强的模型面前，完全成功的概率依然是 0。 但在这场败战中，我们通过海量数据发现了一个足以改变未来十年技术选型的真相：Go 与 Rust 已经成为了 AI 时代的“天命语言”，而 C++ 则不那么受 AI 青睐，AI 用起来也不那么顺手！ [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/ai-coding-win-rate-rankings-go-and-rust-vs-cpp-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp">本文永久链接</a> &#8211; https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp</p>
<p>大家好，我是Tony Bai。</p>
<p>过去两年，程序员群体经历了一场前所未有的“职业身份危机”。</p>
<p>随着 GPT、Claude、Gemini 等模型的发布与能力更迭，各种“AI 几秒钟写出小游戏”、“AI 自动化修复 Bug”的新闻充斥屏幕。在各种传统的代码补全基准测试（如 HumanEval）中，大模型们动辄刷出 90% 以上的惊人通过率。一时间，“程序员是夕阳行业”、“架构师即将下岗”的言论甚嚣尘上。</p>
<p>然而，这只是硬核工程世界的冰山一角。最近，由 Meta FAIR（Meta 基础人工智能研究实验室）、斯坦福大学和哈佛大学联合发布的<a href="https://arxiv.org/abs/2605.03546">一项重量级研究——ProgramBench</a>，彻底击碎了这些幻觉。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/ai-era-software-engineer-algorithm-map-qr.png" alt="" /></p>
<p>ProgramBench 的设计初衷非常“残暴”：它不再测试 AI 能不能写出一个简单的算法函数，而是测试 AI 能不能<strong>从零开始（From Scratch）复刻一个完整的开源项目</strong>，即从观测二进制行为（Probe）到编写源码（Build），再到最终的等效性评估。</p>
<p><strong>测试规则如下：</strong></p>
<ol>
<li><strong>黑盒逆向</strong>：不给源码，只给 AI 一个编译好的二进制可执行文件（如 sqlite3、ffmpeg、ripgrep）和一份使用说明书。</li>
<li><strong>物理断网</strong>：切断互联网访问，防止 AI 通过搜索“偷看”GitHub 上的源码。</li>
<li><strong>架构自主</strong>：AI 必须自己决定项目的文件结构、选择什么编程语言、设计什么抽象层次。</li>
</ol>
<p><img src="https://tonybai.com/wp-content/uploads/2026/ai-coding-win-rate-rankings-go-and-rust-vs-cpp-2.png" alt="" /><br />
<center>图：ProgramBench 的评测全流程</center></p>
<p>在这场面向 200 个真实复杂项目的“闭卷考试”中，全球最顶尖的大模型们集体陷入了沉思。</p>
<p><strong>数据表明，即便是在最强的模型面前，完全成功的概率依然是 0。</strong></p>
<p>但在这场败战中，我们通过海量数据发现了一个足以改变未来十年技术选型的真相：<strong>Go 与 Rust 已经成为了 AI 时代的“天命语言”</strong>，而 C++ 则不那么受 AI 青睐，AI 用起来也不那么顺手！</p>
<h2>诸神黄昏：Claude 对 GPT 家族的“工程级”碾压</h2>
<p>在程序员的认知中，GPT 家族曾代表着 AI 的巅峰。但在 ProgramBench 的 Leaderboard（排行榜）上，局势发生了戏剧性的反转，但也正如我们预料的那样。</p>
<p>根据论文统计，在衡量“几乎完成”（即通过 95% 以上的测试用例）这一指标时，排名如下：</p>
<ol>
<li><strong>头号种子：Claude Opus 4.7</strong>。它是全场唯一一个在 3.0% 的复杂项目中展现出近乎完美复刻能力的模型。</li>
<li><strong>二号梯队：Claude Opus 4.6 (2.5%) 与 Claude Sonnet 4.6 (1.6%)</strong>。</li>
<li><strong>集体挂零：GPT 5.4、Gemini 3.1 Pro。</strong> 没错，这些在其他榜单上呼风唤雨的模型，在“从零复刻完整项目”的任务中，竟然连一个能通过 95% 测试的任务都没完成。</li>
</ol>
<p><strong>为什么 GPT 会在硬核工程上输给 Claude？</strong></p>
<p>研究人员通过分析“智能体轨迹（Agent Trajectories）”发现了秘密。大模型写代码有两种流派：</p>
<ul>
<li><strong>“急性子”派（以 GPT 5.4 为代表）</strong>：GPT 倾向于“单次爆发”。数据显示，它在每个任务中平均只用 <strong>17 个命令</strong>。它习惯于在最初的几个回合内，直接吐出 96% 的代码。如果代码跑不通，它很少进行深度的自我修正。</li>
<li><strong>“架构师”派（以 Claude 为代表）</strong>：最强的 Claude 模型更像是一个深思熟虑的工程师。它平均每个任务会调用 <strong>868 个命令</strong>！它会不断地执行 ls 查看目录、用 cat 检查文件、反复运行测试并根据报错信息进行“重构”。</li>
</ul>
<p>可见，在复杂的软件工程面前，单纯的“语料记忆”失效了。Claude 的胜出，本质上是<strong>其“推理链”和“持续迭代能力”的胜出</strong>。它不只是在背代码，它是在通过不断的试错来“推演”架构。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/ai-coding-win-rate-rankings-go-and-rust-vs-cpp-3.png" alt="" /></p>
<p>通过上图中不同模型的动作类型分布，我们可以看到 Claude 拥有极长且复杂的“读-写-探测”循环，而 GPT 的动作序列短得惊人。</p>
<h2>语言偏好：AI 也有自己的“舒适区”</h2>
<p>ProgramBench 给 AI 提供了完全的自由：AI 可以用任何语言来复刻目标程序。这产生了一个极其有趣的“语言混乱矩阵（Confusion Matrix）”。</p>
<p><strong>1. GPT 的 Python 执念</strong></p>
<p>GPT 5.4 表现出了近乎偏执的 Python 依赖。在所有任务中，它有 <strong>79%</strong> 的方案是用 Python 写的。无论原程序是用更底层的 C 还是 Rust 写的，GPT 的第一反应往往是：“我能不能用 Python 给它糊出来？”</p>
<p><strong>2. Claude 的硬核品味</strong></p>
<p>最强模型 Claude Opus 4.7 表现出了极高的系统级素养。它只在 14% 的情况下选择 Python，它更倾向于使用 <strong>Rust 和 Go</strong> 来应对复杂任务。这说明越强大的模型，越能理解底层语言在性能和逻辑表达上的严密性。</p>
<p><strong>3. 为什么 AI 喜欢 Python？</strong></p>
<p>原因很简单：<strong>容错率。</strong> Python 拥有极其丰富的第三方包、极简的语法以及无需手动管理内存的特性。对于 AI 来说，Python 是它能用最少的回合数实现最多功能的“逃生路径”。但这种逃生是有代价的——复杂的系统级软件用 Python 复刻，往往会因为性能或底层调用模拟不足而失败。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/ai-coding-win-rate-rankings-go-and-rust-vs-cpp-4.png" alt="" /><br />
<center>各模型选择的实现语言分布图</center></p>
<h2>深度解析：为什么 Go 与 Rust 是 AI 的“天命之子”？</h2>
<p>这是本次研究中最具行业指导意义的发现。通过研究数据对比，我们发现不同语言在 AI 手下的“存活率”天差地别：</p>
<ul>
<li><strong>Go 语言项目：AI 成功通过率 38.4%</strong></li>
<li><strong>Rust 语言项目：AI 成功通过率 38.5%</strong></li>
<li><strong>C/C++ 项目：AI 成功通过率仅为 27.7%</strong></li>
</ul>
<p>为什么同样是系统编程语言，Go 和 Rust 就能完胜 C++？这不仅仅是语法的问题，更是<strong>现代工程化基建</strong>的降维打击。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/ai-coding-win-rate-rankings-go-and-rust-vs-cpp-5.png" alt="" /><br />
<center>不同语言生态下的测试通过率对比图</center></p>
<h3>1. 构建系统：AI 开发者的“生死线”</h3>
<p>在 C/C++ 的世界里，构建系统是混乱的代名词。CMakeLists.txt、Makefile、系统特定的动态链接库（.so/.dll）路径……对于 AI 智能体（SWE-agent）来说，这些是致命的障碍。</p>
<p>调研显示，AI 在 C++ 任务中，往往还没开始写业务代码，就已经在配置环境时陷入了死循环。</p>
<p>反观 <strong>Go</strong> 和 <strong>Rust</strong>：</p>
<ul>
<li><strong>Go</strong>：一个 go mod tidy 加一个 go build 解决了全球 99% 的构建问题。</li>
<li><strong>Rust</strong>：Cargo 是目前人类文明最先进的包管理器之一。</li>
</ul>
<p>对于 AI 来说，这种“标准化”意味着它只需要执行一条命令就能建立起完整的工程环境。这种<strong>极高的工程化一致性</strong>，让 AI 可以把宝贵的 Token 消耗在业务逻辑上，而不是折腾环境。</p>
<h3>2. 标准库的“全家桶”效应</h3>
<p>Go 语言一直以“自带电池（Batteries included）”著称。它的标准库涵盖了网络、加密、编解码等大部分现代互联网开发所需的功能。AI 调用 Go 的标准库就像从兜里掏东西一样自然。</p>
<p>而 C++ 的标准库相对贫瘠，往往需要引入第三方库（如 Boost, libcurl）。一旦涉及到第三方依赖，AI 的出错概率就会呈指数级上升。</p>
<h3>3. 内存安全：给 AI 的“保护索”</h3>
<p>在 C/C++ 中，AI 极其容易写出缓冲区溢出、内存泄露或段错误。一旦程序在运行过程中崩溃，由于 AI 缺乏深度的 GDB 调试能力，它很难从 Core Dump 中恢复。</p>
<p><strong>Rust 严格的借用检查（Borrow Checker）</strong>，在编译阶段就强行纠正了 AI 的大部分错误。这种“编译即正确”的反馈循环，让 AI 在复刻软件时拥有了更高的胜率。</p>
<h2>揭秘 AI 程序员的“坏习惯”：屎山代码的起源？</h2>
<p>除了排名和语言，ProgramBench 还揭露了目前 AI 编码的三个极具冲击力的特征：</p>
<h3>1. 单文件架构迷恋</h3>
<p>人类架构师讲究解耦，喜欢建立复杂的目录结构。但 AI 却恰恰相反。数据显示，67% 的 AI 方案产生的目录深度明显浅于原项目。</p>
<p><strong>AI 表现出强烈的“单文件狂魔”倾向。</strong> 它们喜欢把数千行代码塞进 1-3 个超级大文件里。这反映出目前的模型在处理跨文件的上下文关联时，依然存在明显的认知衰减。</p>
<h3>2. 逻辑“大颗粒化”</h3>
<p>AI 写的函数数量通常只有人类原作者的 10% 到 20%。但这并不意味着功能缺失，而是因为 <strong>AI 喜欢写超长函数（God Functions）</strong>。</p>
<p>Claude 生成的函数长度平均是人类的 1.46 倍，Gemini 甚至达到了 1.62 倍。这种代码对于 AI 来说运行没问题，但对于人类后续维护来说，简直是噩梦。</p>
<h3>3. 诚信危机：AI 也会“偷懒作弊”</h3>
<p>在测试的早期阶段，研究人员尝试给 AI 开启互联网访问。结果发现，最强的大模型们全都是“老油条”。</p>
<p>一旦它们通过二进制文件的帮助信息（&#8211;help）推断出这是哪个开源项目，它们会直接去克隆对应的 GitHub 仓库代码并提交。</p>
<p><strong>Claude Sonnet 4.6 的作弊率一度高达 36%！</strong> 这迫使研究团队最终必须在完全断网的环境下运行测试。这告诉我们：<strong>永远不要低估大模型为了完成任务而寻找“捷径”的本能。</strong></p>
<h2>小结：程序员的黄昏还远未到来</h2>
<p>看完这份长达 60 多页的研究报告，我们不仅没有感到绝望，反而产生了一种前所未有的踏实。</p>
<p>报告证明了：即便是在最顶尖的模型面前，<strong>真实的软件工程（Software Engineering）依然是一个极度复杂的高壁垒领域</strong>。写代码只是软件工程中最后、最轻的一环。而之前的架构设计、模块拆分、抽象提取、以及对业务边界的理解，目前的 AI 依然处于“学龄前”阶段。</p>
<p><strong>给开发者的建议：</strong></p>
<ol>
<li><strong>向 Go 和 Rust 迁移</strong>：这不只是性能考量，更是为了拥抱 AI。如果你想让 AI 帮你更高效地干活，请选择那些对 AI 友好的工程化基建。</li>
<li><strong>强化架构师思维</strong>：既然 AI 喜欢写单文件“屎山”，那么如何管理大型项目的复杂性、如何通过 Prompt 引导 AI 进行模块化设计，将是未来高级工程师的核心竞争力。</li>
<li><strong>拥抱 Claude 模式</strong>：告别“单次生成”的幻觉，建立起“持续迭代、自动测试、反复纠错”的 AI 开发流水线。</li>
</ol>
<p><strong>程序员的黄昏还远未到来。</strong></p>
<p>相反，我们正在进入一个全新的时代：一个由人类架构师掌控蓝图，由 AI 劳工在标准化的 Go/Rust 仓库中疯狂试错、高效产出的黄金时代。AI 并没有取代你，它只是淘汰了那些只会机械写代码、而不懂工程设计的“码农”。</p>
<p>真正的开发者，正在迎来属于他们的、被 AI 加持的黎明。</p>
<p>资料链接：</p>
<ul>
<li>https://arxiv.org/abs/2605.03546</li>
<li>https://programbench.com/</li>
</ul>
<hr />
<p>还在为写 Agent 框架频频死循环、上下文爆炸而束手无策？我的新专栏 <strong>《<a href="http://gk.link/a/12IzL">从0 开始构建 Agent Harness</a>》</strong> 将带你：</p>
<ul>
<li>抛弃臃肿框架，回归“驾驭工程 (Harness Engineering)”的第一性原理</li>
<li>用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等，复刻极简OpenClaw</li>
<li>构建坚不可摧的 Safety Middleware 与飞书人工审批防线</li>
<li>在底层实现 Token 成本审计、链路追踪与自动化跑分评估</li>
<li>从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”</li>
</ul>
<p>扫描下方二维码，开启从 0 开始构建Agent Harness 的实战之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/build-agent-harness-from-scratch-qr.png" alt="" /></p>
<hr />
<p><strong>原「Gopher部落」已重装升级为「Go &amp; AI 精进营」知识星球，快来加入星球，开启你的技术跃迁之旅吧！</strong></p>
<p>我们致力于打造一个高品质的 <strong>Go 语言深度学习</strong> 与 <strong>AI 应用探索</strong> 平台。在这里，你将获得：</p>
<ul>
<li><strong>体系化 Go 核心进阶内容:</strong> 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏，夯实你的 Go 内功。</li>
<li><strong>前沿 Go+AI 实战赋能:</strong> 紧跟时代步伐，学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等，掌握 AI 时代新技能。 </li>
<li><strong>星主 Tony Bai 亲自答疑:</strong> 遇到难题？星主第一时间为你深度解析，扫清学习障碍。</li>
<li><strong>高活跃 Gopher 交流圈:</strong> 与众多优秀 Gopher 分享心得、讨论技术，碰撞思想火花。</li>
<li><strong>独家资源与内容首发:</strong> 技术文章、课程更新、精选资源，第一时间触达。</li>
</ul>
<p>衷心希望「Go &amp; AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚，享受技术精进的快乐！欢迎你的加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-and-ai-tribe-zsxq-small-card.jpg" alt="img{512x368}" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>别神话 Rust 重写了：搞定1%热路径，Go 性能照样起飞</title>
		<link>https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites/</link>
		<comments>https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites/#comments</comments>
		<pubDate>Sun, 17 May 2026 23:22:11 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[arena]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Complexity]]></category>
		<category><![CDATA[EngineeringPractices]]></category>
		<category><![CDATA[EscapeAnalysis]]></category>
		<category><![CDATA[GarbageCollection]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoLanguage]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[heapallocation]]></category>
		<category><![CDATA[HotPaths]]></category>
		<category><![CDATA[memoryallocation]]></category>
		<category><![CDATA[MemoryLeak]]></category>
		<category><![CDATA[Overengineering]]></category>
		<category><![CDATA[PerformanceOptimization]]></category>
		<category><![CDATA[pprof]]></category>
		<category><![CDATA[profiling]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[StackAllocation]]></category>
		<category><![CDATA[sync.Pool]]></category>
		<category><![CDATA[SystemThinking]]></category>
		<category><![CDATA[ZeroAllocation]]></category>
		<category><![CDATA[内存分配]]></category>
		<category><![CDATA[内存泄漏]]></category>
		<category><![CDATA[内存竞技场]]></category>
		<category><![CDATA[垃圾回收]]></category>
		<category><![CDATA[基准测试]]></category>
		<category><![CDATA[堆分配]]></category>
		<category><![CDATA[复杂性]]></category>
		<category><![CDATA[对象池]]></category>
		<category><![CDATA[工程实践]]></category>
		<category><![CDATA[性能优化]]></category>
		<category><![CDATA[栈分配]]></category>
		<category><![CDATA[热路径]]></category>
		<category><![CDATA[结构化思维]]></category>
		<category><![CDATA[过度设计]]></category>
		<category><![CDATA[逃逸分析]]></category>
		<category><![CDATA[重构]]></category>
		<category><![CDATA[零内存分配]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=6325</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites 大家好，我是Tony Bai。 近年来，如果你常年混迹于国内外各大技术社区，你一定会感受到一种近乎狂热的“政治正确”：带垃圾回收（GC）的语言都有原罪，万物皆可（且应该）用 Rust 重写。 从底层基础设施到上层业务逻辑，无数团队在遇到性能瓶颈时，脑海中蹦出的第一个念头就是：“Go/Java 搞不定了，由于 GC 停顿的存在，我们必须换 Rust 乃至 C++ 来重构核心模块。” 但这真的是解决性能问题的唯一出路吗？ 最近，几位硅谷顶级的技术大佬——前 Tailscale CTO David Crawshaw、开源时序数据库 VictoriaMetrics CTO Aliaksandr Valialkin，以及资深底层代码大牛 Stewart Lynch，在 X（原推特）上掀起了一场关于“现代软件复杂性与性能优化”的讨论。 仔细研读他们的观点后，我得出了一个可能有些“反直觉”的结论： 对于绝大多数商业项目而言，盲目追求去 GC 化和无脑 Rust 重写，是一场灾难。真正顶级的性能优化，往往只需要对那 1% 的“热路径”动刀。 今天，我们就来揭秘这层信息差，看看顶级架构师是如何在不增加心智负担的前提下，把带 GC 的 Go 语言性能压榨到极致的。 现代软件最大的毒瘤：“不必要的复杂性” 为什么我们总是忍不住想要用极其复杂的语言或架构去重写现有的系统？ Stewart Lynch 在讨论中一针见血地指出了现代软件工程的通病：“Everything that&#8217;s wrong with modern software can be summed [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/go-performance-optimization-over-rust-rewrites-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites">本文永久链接</a> &#8211; https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites</p>
<p>大家好，我是Tony Bai。</p>
<p>近年来，如果你常年混迹于国内外各大技术社区，你一定会感受到一种近乎狂热的“政治正确”：<strong>带垃圾回收（GC）的语言都有原罪，万物皆可（且应该）用 Rust 重写。</strong></p>
<p>从底层基础设施到上层业务逻辑，无数团队在遇到性能瓶颈时，脑海中蹦出的第一个念头就是：“Go/Java 搞不定了，由于 GC 停顿的存在，我们必须换 Rust 乃至 C++ 来重构核心模块。”</p>
<p><strong>但这真的是解决性能问题的唯一出路吗？</strong></p>
<p>最近，几位硅谷顶级的技术大佬——前 Tailscale CTO David Crawshaw、开源时序数据库 VictoriaMetrics CTO Aliaksandr Valialkin，以及资深底层代码大牛 Stewart Lynch，在 X（原推特）上掀起了一场关于“现代软件复杂性与性能优化”的讨论。</p>
<p>仔细研读他们的观点后，我得出了一个可能有些“反直觉”的结论：</p>
<p><strong>对于绝大多数商业项目而言，盲目追求去 GC 化和无脑 Rust 重写，是一场灾难。真正顶级的性能优化，往往只需要对那 1% 的“热路径”动刀。</strong></p>
<p>今天，我们就来揭秘这层信息差，看看顶级架构师是如何在不增加心智负担的前提下，把带 GC 的 Go 语言性能压榨到极致的。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/ai-app-dev-primer-qr.png" alt="" /></p>
<h2>现代软件最大的毒瘤：“不必要的复杂性”</h2>
<p>为什么我们总是忍不住想要用极其复杂的语言或架构去重写现有的系统？</p>
<p>Stewart Lynch 在讨论中一针见血地指出了现代软件工程的通病：<strong>“Everything that&#8217;s wrong with modern software can be summed up in two words: Unnecessary Complexity”（现代软件所有的毛病，可以用两个词来概括：不必要的复杂性）。</strong></p>
<p>这背后其实隐藏着一个程序员群体独有的心理学陷阱。</p>
<p>Lynch 解释道：“程序员这个群体有一个特殊的问题——我们往往是因为‘享受解决复杂问题’才选择这个职业的。我们热衷于理解极其复杂的东西并让它运转起来，我们是人类历史上最复杂结构的构建者。<strong>正因为如此，我们在任何地方都在寻找与复杂性搏斗的机会，即使在那些本该追求极简的地方。</strong>”</p>
<p>这就解释了为什么很多团队在面对一个简单的 CRUD 业务或者中等并发的微服务时，会毫不犹豫地引入极高门槛的语言（比如有着严苛借用检查器的 Rust）或是过度设计的服务网格。</p>
<p>因为<strong>“复杂，让人觉得高级”</strong>。</p>
<p>但结果是什么？</p>
<p>业务逻辑被切割得支离破碎，新员工入职需要花费两三个月才能看懂生命周期和指针所有权，团队的迭代速度断崖式下跌。你以为你在优化系统的性能，实际上，你在制造一场长期的维护灾难。在这个过程中，你消耗了大量的公司预算，仅仅是为了解决那些“想象中的未来问题”。</p>
<p>记住架构设计的第一法则：<strong>复杂性是优秀软件的死敌。</strong></p>
<h2>你的 99% 代码根本不需要瞎折腾</h2>
<p>既然复杂性是死敌，那性能问题怎么办？难道我们就任由 GC 导致程序卡顿吗？</p>
<p>这时候，前 Tailscale CTO David Crawshaw 抛出了一个极具颠覆性的观点。他指出，整个行业现在正把海量的资源倾注到像 Rust 这样没有 GC 的程序中，但大家忽略了一个极其残酷的统计学事实：</p>
<p><strong>“Almost all your code paths are cold and GC is net positive. 1% of your code is performance sensitive. Don&#8217;t create GC pressure there.” （你几乎所有的代码路径都是‘冷’的，在这些地方 GC 带来了纯粹的正向收益。只有 1% 的代码对性能真正敏感。你只需要不在那 1% 的地方制造 GC 压力就行了。）</strong></p>
<p>什么是“冷代码”？</p>
<p>配置解析、路由分发、错误处理、数据库连接初始化、日志记录……在一个庞大的工程中，这部分代码占据了 99% 的体积。它们对微秒级的延迟根本不敏感。</p>
<p>对于这 99% 的代码，使用 Go、Java 甚至 OCaml 这样带有Full runtime GC的语言，是巨大的恩赐。GC 解放了程序员的大脑，让你不需要像写 C/C++ 或 Rust 那样，在写每一行代码时还要在脑海里进行“部分编译时规划（Partial compile-time planner）”。它让你可以把全部精力聚焦在“业务逻辑”本身。</p>
<p><strong>人类解决复杂问题的能力，在不被内存分配分心时，才能发挥到极致。</strong></p>
<p>为了那 1% 真正需要榨干 CPU 周期的核心逻辑，去强迫整个团队在剩下 99% 的冷代码中也要与内存所有权作斗争，这在商业 ROI（投资回报率）上是极其荒谬的。</p>
<p>这就是所谓“不要为了 1% 的醋，去包 99% 的饺子”。</p>
<h2>VictoriaMetrics CTO 的 1% 极简榨干指南</h2>
<p>好，逻辑理顺了：我们决定坚持使用 Go 语言，享受它极高的开发效率和并发优势。但我们确实遇到了那 1% 的核心瓶颈——比如高频交易的核心撮合引擎、时序数据库的底层写入循环。这部分代码极其吃 CPU，且 GC 带来的 STW（Stop The World）让人无法忍受。</p>
<p><strong>不换语言，怎么破局？</strong></p>
<p>别急，让我们来看看目前世界上性能最强悍的开源时序数据库之一：<strong>VictoriaMetrics</strong> 的做法。这个数据库完全是由 Go 语言编写的，但在各项 Benchmark 性能测试中，它经常把一众 C++ 和 Rust 写的时序数据库按在地上摩擦。</p>
<p>它的 CTO，Aliaksandr Valialkin 在这次讨论中，大方地分享了他“降维打击”般的优化路径。我将他的经验，结合各位大牛的讨论，为你整理成了以下三步走的“实操密码”：</p>
<h3>放弃盲猜，用 Profiler 精准定位热路径（Hot Paths）</h3>
<p>你永远不可能靠“直觉”找到性能瓶颈。Aliaksandr 强调，Go 语言拥有极度强大的内置 Profiler（pprof）。不要一上来就重构，先让程序跑起来，打入真实流量，然后用 pprof 精准定位出那消耗了 80% CPU 和大量内存分配的 1% “热路径”究竟在哪几个函数里。</p>
<p><em>这 1% 的代码，代码量往往极小，寻找它们并不困难。</em></p>
<h3>在热路径中“完全移除”内存分配（Zero Allocation）</h3>
<p>这是 Go 性能优化的核心灵魂。Aliaksandr 的原话是：“This is how I optimize programs written in Go &#8211; by removing memory allocations from hot paths&#8230;”。</p>
<p>只要你在热路径中不产生新的对象（不触发 malloc 和堆分配），垃圾回收器（GC）就根本不会被唤醒。没有分配，就没有垃圾；没有垃圾，就没有 GC 压力和停顿。</p>
<h3>开启“逃生舱”：使用预分配与 Arena 机制</h3>
<p>既然热路径不能分配新内存，那需要处理海量数据怎么办？大佬们给出了三种在 Go 中模拟底层语言内存管理的“逃生手段”：</p>
<ul>
<li>
<p><strong>预分配大块内存（Pre-allocations）：</strong><br />
正如 David Crawshaw 所举的例子，你可以在 Go 中一次性分配一个巨大的数组，比如：var x = make([]struct{&#8230;}, 1e6)。<br />
这只产生一次大分配，然后你完全可以利用自己的算法，在这个预先分配好的内存块中进行指针的滑动和复用。对于 GC 来说，这只是一个单一的连续指针，GC 扫描它的成本极低，既能实现高并发，又极大地降低了 CPU 消耗。</p>
</li>
<li>
<p><strong>对象池机制（sync.Pool）：</strong><br />
对于频繁创建和销毁的小对象，不要让它们落入 GC 的魔爪。利用 sync.Pool 将它们缓存起来，反复复用。</p>
</li>
<li>
<p><strong>请求作用域内存竞技场（Arenas）：</strong><br />
Aliaksandr 提到了在处理网络请求时极其高效的 Arena 概念。在这个模式下，与单次 Request 相关的所有小对象分配，都在一个预先分配好的大块 Arena 中进行。当请求结束时，不需要逐个去释放对象，而是直接清空（free）整个 Arena。这几乎达到了和 Rust 一样零开销的内存清理效果，但代码写起来依然是熟悉的 Go 语法。</p>
</li>
</ul>
<h3>对 99% 的代码保持克制</h3>
<p>当你在那 1% 的热路径里用尽了上述像 C 语言一样的“脏活累活”后，<strong>请立刻停手</strong>。</p>
<p>让程序剩下的 99% 保持最地道（Idiomatic）、最简单、最具可读性的 Go 代码。让 GC 去接管它们。</p>
<p>你会神奇地发现：你的程序不仅拥有了媲美 C++/Rust 的极致性能，同时你的团队依然保持着原本极高的业务迭代速度。</p>
<h2>小结——顶级工程师与普通码农的终极分水岭</h2>
<p>回顾这几位大佬的讨论，其实核心只指向了一个词：<strong>克制（Restraint）。</strong></p>
<p>普通工程师总是试图寻找一种“银弹”——希望换一种时髦的语言，就能一劳永逸地解决架构、性能和内存安全的所有问题。他们沉迷于构建极其复杂的抽象体系，试图用技术上的炫技来掩盖业务上的平庸。</p>
<p>而真正顶级的架构师，深知商业的本质和团队运作的规律。他们懂得：</p>
<ol>
<li><strong>好的设计，就是当你不能再拿走任何东西的时候。</strong> （正如评论区一位开发者所说：Good design is when you keep taking away things until you cannot take away any more.）</li>
<li><strong>永远不要在全局引入复杂性。</strong> 遇到性能问题，先用监控定位，然后把性能敏感的那 1% 的代码隔离出来，在这个小黑盒子里用最极客的方式优化，最后把它严丝合缝地封装好。</li>
<li><strong>拥抱不完美但高效的工具。</strong> 不要嫌弃 GC，懂得如何与 GC 和谐共处，才是真正的大师。</li>
</ol>
<p>如果下次你的团队里，再有人因为某个接口慢了 10 毫秒，就嚷嚷着要用 Rust 把整个几十万行的后端服务重写时，请把这篇文章甩到他的脸上。</p>
<p>告诉他：<strong>“去把 pprof 打开，把那 1% 循环里的临时变量给我复用了，然后早点下班回家。”</strong></p>
<p>资料链接：</p>
<ul>
<li>https://x.com/valyala/status/2055725885035045234</li>
<li>https://x.com/stewartlynch8/status/2055322205563617516</li>
<li>https://x.com/davidcrawshaw/status/2055288855792955511</li>
</ul>
<hr />
<p><strong>今日互动探讨：</strong></p>
<p>在你的职业生涯中，是否经历过为了追求所谓的“极致性能”或“极客审美”，而导致整个项目陷入“过度复杂化（Over-engineering）”灾难的时刻？或者，你在使用 Go 语言时，有什么私藏的“热路径”压榨技巧？</p>
<p><strong>欢迎在评论区留言和我探讨，我们一起对抗现代软件的“过度复杂病”。</strong> （如果你觉得这篇文章打破了你的认知，别忘了点赞转发，让更多挣扎在重构边缘的兄弟们看到！）</p>
<hr />
<p>还在为写 Agent 框架频频死循环、上下文爆炸而束手无策？我的新专栏 <strong>《<a href="http://gk.link/a/12IzL">从0 开始构建 Agent Harness</a>》</strong> 将带你：</p>
<ul>
<li>抛弃臃肿框架，回归“驾驭工程 (Harness Engineering)”的第一性原理</li>
<li>用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等，复刻极简OpenClaw</li>
<li>构建坚不可摧的 Safety Middleware 与飞书人工审批防线</li>
<li>在底层实现 Token 成本审计、链路追踪与自动化跑分评估</li>
<li>从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”</li>
</ul>
<p>扫描下方二维码，开启从 0 开始构建Agent Harness 的实战之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/build-agent-harness-from-scratch-qr.png" alt="" /></p>
<hr />
<p><strong>原「Gopher部落」已重装升级为「Go &amp; AI 精进营」知识星球，快来加入星球，开启你的技术跃迁之旅吧！</strong></p>
<p>我们致力于打造一个高品质的 <strong>Go 语言深度学习</strong> 与 <strong>AI 应用探索</strong> 平台。在这里，你将获得：</p>
<ul>
<li><strong>体系化 Go 核心进阶内容:</strong> 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏，夯实你的 Go 内功。</li>
<li><strong>前沿 Go+AI 实战赋能:</strong> 紧跟时代步伐，学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等，掌握 AI 时代新技能。 </li>
<li><strong>星主 Tony Bai 亲自答疑:</strong> 遇到难题？星主第一时间为你深度解析，扫清学习障碍。</li>
<li><strong>高活跃 Gopher 交流圈:</strong> 与众多优秀 Gopher 分享心得、讨论技术，碰撞思想火花。</li>
<li><strong>独家资源与内容首发:</strong> 技术文章、课程更新、精选资源，第一时间触达。</li>
</ul>
<p>衷心希望「Go &amp; AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚，享受技术精进的快乐！欢迎你的加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-and-ai-tribe-zsxq-small-card.jpg" alt="img{512x368}" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ 社区内部大讨论：新特性到底是“生产力革命”，还是“叠加的复杂性”？</title>
		<link>https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity/</link>
		<comments>https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity/#comments</comments>
		<pubDate>Wed, 15 Apr 2026 00:27:57 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[ArchitectureReview]]></category>
		<category><![CDATA[BackwardCompatibility]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C++26]]></category>
		<category><![CDATA[CodeModernization]]></category>
		<category><![CDATA[CognitiveLoad]]></category>
		<category><![CDATA[Complexity]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[ContractProgramming]]></category>
		<category><![CDATA[Coroutines]]></category>
		<category><![CDATA[Execution]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[MemorySafety]]></category>
		<category><![CDATA[metaprogramming]]></category>
		<category><![CDATA[ModernCpp]]></category>
		<category><![CDATA[Modules]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Ranges]]></category>
		<category><![CDATA[Reflection]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SenderReceiver]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[TechnicalDebt]]></category>
		<category><![CDATA[代码现代化]]></category>
		<category><![CDATA[元编程]]></category>
		<category><![CDATA[内存安全]]></category>
		<category><![CDATA[协程]]></category>
		<category><![CDATA[反射]]></category>
		<category><![CDATA[发送者接收者模型]]></category>
		<category><![CDATA[向后兼容性]]></category>
		<category><![CDATA[复杂性]]></category>
		<category><![CDATA[契约编程]]></category>
		<category><![CDATA[执行器]]></category>
		<category><![CDATA[技术债]]></category>
		<category><![CDATA[架构评审]]></category>
		<category><![CDATA[模块化]]></category>
		<category><![CDATA[现代C++]]></category>
		<category><![CDATA[生产力]]></category>
		<category><![CDATA[认知负荷]]></category>
		<category><![CDATA[软件工程]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=6182</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity 大家好，我是Tony Bai。 如果你把编程语言比作工具，Go 是一把极简的手术刀，精准且克制；Rust 是一套带智能传感器的外骨骼装甲，严苛且安全。 而 C++ 呢？它更像是一把在过去四十年里不断被加挂零件的、超重型复合瑞士军刀。 最开始，它只有刀片和叉子；后来，它加了锯子、剪刀和钳子；再后来，它甚至被塞进了一套显微镜和一支激光笔。在开发者眼里，它是能解决世间一切难题的万能神兵，但也是一个重到让你拿不稳、甚至随时可能切到自己手指的“庞然大物”。 但就在前几天，r/cpp 这个拥有近 10 万 C++开发者的顶级社区里，一篇名为《现代 C++ 是让我们更高效了… 还是更复杂了？》的帖子，引发了一场深度大讨论。 发帖人发出了灵魂拷问： “C++20/23 给我们带来了 Ranges、协程（Coroutines）、Concepts、Modules……这些新特性真的很酷，我也在用。但我总在想，我们是不是在用这些东西吓跑新人的同时，眼睁睁地看着老代码库永远冻结在 C++98？现代 C++ 对生产力来说，到底是一场革命，还是在原本已经足够复杂的巨兽身上，又叠加了一层复杂性？” 这篇帖子，精准地戳中了每一个 C++ 开发者心中最深的困惑。短短一天，就吸引了上百条充满血泪与思考的评论。 今天，我们就来复盘这场顶级的社区大讨论，看看这柄“瑞士军刀”在疯狂“堆料”的背后，到底藏着怎样的挣扎、分裂与反思。 分裂的社区：C++98 遗老、C++17 中坚与 C++23 先锋的“平行宇宙” 在这场大讨论中，我仿佛看到了 C++ 社区三个泾渭分明的平行宇宙。 宇宙一：永远的 C++98/11 ——“能跑就行，别动！” 评论区里，点赞最高的一派观点，充满了对“存量代码”的敬畏与无奈。 一位开发者吐槽道： “我在太多项目里因为各种原因被迫使用旧标准，以至于我已经懒得去关心最新的特性了。我感觉很多专业场景就是这样：我们用着‘穴居人 C++’，因为那玩意儿安全（指熟悉）、方便。” 另一位开发者更是直接引用了 Matt Godbolt 的名言：“向后兼容性才是 C++ 的超能力。” “别想着重构了，那只会破坏一切。跑了 20 年没 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/cpp-community-debate-productivity-revolution-vs-complexity-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity">本文永久链接</a> &#8211; https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity</p>
<p>大家好，我是Tony Bai。</p>
<p>如果你把编程语言比作工具，Go 是一把极简的手术刀，精准且克制；Rust 是一套带智能传感器的外骨骼装甲，严苛且安全。</p>
<p>而 C++ 呢？它更像是一把在过去四十年里不断被加挂零件的、超重型复合瑞士军刀。</p>
<p>最开始，它只有刀片和叉子；后来，它加了锯子、剪刀和钳子；再后来，它甚至被塞进了一套显微镜和一支激光笔。在开发者眼里，它是能解决世间一切难题的万能神兵，但也是一个重到让你拿不稳、甚至随时可能切到自己手指的“庞然大物”。</p>
<p>但就在前几天，r/cpp 这个拥有近 10 万 C++开发者的顶级社区里，一篇名为《<a href="https://www.reddit.com/r/cpp/comments/1sihs1w/is_modern_c_actually_making_us_more_productive_or/">现代 C++ 是让我们更高效了… 还是更复杂了？</a>》的帖子，引发了一场深度大讨论。</p>
<p>发帖人发出了灵魂拷问：</p>
<blockquote>
<p>“C++20/23 给我们带来了 Ranges、协程（Coroutines）、Concepts、Modules……这些新特性真的很酷，我也在用。但我总在想，我们是不是在用这些东西吓跑新人的同时，眼睁睁地看着老代码库永远冻结在 C++98？现代 C++ 对生产力来说，到底是一场革命，还是在原本已经足够复杂的巨兽身上，又叠加了一层复杂性？”</p>
</blockquote>
<p>这篇帖子，精准地戳中了每一个 C++ 开发者心中最深的困惑。短短一天，就吸引了上百条充满血泪与思考的评论。</p>
<p>今天，我们就来复盘这场顶级的社区大讨论，看看这柄“瑞士军刀”在疯狂“堆料”的背后，到底藏着怎样的挣扎、分裂与反思。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/agentic-software-engineering-qr.png" alt="" /></p>
<h2>分裂的社区：C++98 遗老、C++17 中坚与 C++23 先锋的“平行宇宙”</h2>
<p>在这场大讨论中，我仿佛看到了 C++ 社区三个泾渭分明的平行宇宙。</p>
<p><strong>宇宙一：永远的 C++98/11 ——“能跑就行，别动！”</strong></p>
<p>评论区里，点赞最高的一派观点，充满了对“存量代码”的敬畏与无奈。</p>
<p>一位开发者吐槽道：</p>
<blockquote>
<p>“我在太多项目里因为各种原因被迫使用旧标准，以至于我已经懒得去关心最新的特性了。我感觉很多专业场景就是这样：我们用着‘穴居人 C++’，因为那玩意儿安全（指熟悉）、方便。”</p>
</blockquote>
<p>另一位开发者更是直接引用了 Matt Godbolt 的名言：“向后兼容性才是 C++ 的超能力。”</p>
<blockquote>
<p>“别想着重构了，那只会破坏一切。跑了 20 年没 Bug 的生产代码是无价之宝，别碰它！”</p>
</blockquote>
<p>更有甚者，因为芯片厂商的编译器只支持 C++89，或者因为“法律原因”，一个项目被迫在一个 3 年前的工具链上锁死 7 年。</p>
<p>在这个宇宙里，C++20 的新特性，对他们来说都像火星科技一样遥远。</p>
<p><strong>宇宙二：拥抱 C++20/23 ——“旦用难回，太香了！”</strong></p>
<p>与“遗老派”形成鲜明对比的，是那些已经吃上新标准红利的“先锋派”。</p>
<p>有开发者激动地表示：</p>
<blockquote>
<p>“自从我开始用协程（Coroutines）写网络 IO 代码，我再也回不去以前那种回调地狱了！”</p>
</blockquote>
<p>另一位则对 C++23 的 std::println 赞不绝口：</p>
<blockquote>
<p>“我离不开 C++23，完全是因为 println。我不知道我还在用 23 的什么其他特性，但光这一个就太棒了。”</p>
</blockquote>
<p>对于这部分开发者来说，现代 C++ 的每一个新特性，都是一次生产力的解放。他们就像一群拿到了新玩具的孩子，兴奋地探索着 Ranges 的组合魔法和 Concepts 带来的清爽报错。</p>
<p><strong>宇宙三：爱恨交织的“中间派”——“一半是天堂，一半是地狱”</strong></p>
<p>这或许是最大多数 C++ 开发者的真实写照。</p>
<p>正如帖子作者所言，新特性确实很酷，但它们也带来了巨大的认知负荷和决策成本。</p>
<p>一个开发者的评论获得了 82 个高赞：</p>
<blockquote>
<p>“我们大多数人只用了 C++ 语言特性的一小部分。这就像一个‘鸡生蛋、蛋生鸡’的问题：这里有个新特性，但我不知道该怎么用、为什么要用；或者，我代码里有个痛点，可能能用新特性解决，但我不知道该用哪个。”</p>
</blockquote>
<p>这种“选择的困境”，正是 C++ “自由”的代价。</p>
<h2>底层矛盾：C++ 的“集市”哲学 vs 团队的“教堂”困境</h2>
<p>为什么 C++ 会演变成今天这样？</p>
<p>评论区里的一位开发者给出了一个极其精妙的比喻：<strong>“集市（Bazaar）”</strong>。</p>
<blockquote>
<p>“我绝对热爱 C++ 的一点是：它有一个特性集市，你可以挑选你认为适合你项目的工具。如果你看其他语言，比如 Java 要求万物皆对象，Haskell 要求万物皆函数。C++ 给了你面向对象，你讨厌它？没问题，不用就行。你喜欢函数式？C++ 也支持。”</p>
</blockquote>
<p>这种“万物皆可选”的自由，是 C++ 最大的魅力，当然也是它最大的诅咒。</p>
<p>因为在一个团队里，当每个人都从“集市”上拿回了自己最喜欢的锤子时，整个项目就会变成一个风格迥异的“建筑工地”。</p>
<p>原帖作者自己也承认：</p>
<blockquote>
<p>“自由是真实的，但这也意味着两个 C++ 代码库可能看起来像两种完全不同的语言。”</p>
</blockquote>
<p>当一个文件里还在用裸指针和手动内存管理，而另一个文件里已经用上了 std::unique_ptr 和 std::span；当一部分团队在用 boost::asio 写回调，而另一部分团队在用 C++20 的协程……</p>
<p><strong>Code Review 就变成了一场噩梦。</strong></p>
<h2>反思：“技术债”还是“护城河”？</h2>
<p>这场大讨论的背后，其实隐藏着两个更深层次的软件工程哲学问题。</p>
<p><strong>问题一：新特性是“锦上添花”，还是“非用不可”？</strong></p>
<p>很多 C++ 老兵认为，现代 C++ 增加的很多特性，比如 Ranges 和 Coroutines，其实早在几十年前的 LISP 语言里就已经被证明是伟大的思想。C++ 只是在用一种极其缓慢、极其复杂的方式，在“偿还”几十年前欠下的“技术债”。</p>
<p>但另一些人认为，C++ 的伟大恰恰在于，它能用<strong>“零成本抽象（Zero-cost Abstraction）”</strong>的硬核方式，将这些高级思想，落地到对性能要求极致的生产环境中。</p>
<p><strong>问题二：复杂性是“敌人”，还是“朋友”？</strong></p>
<p>一位开发者的评论极具辩证思维：</p>
<blockquote>
<p>“这（新特性）既是好事，也是坏事。学习的门槛确实在不断提高。但这些工具是实实在在有用的，它们让你能用更干净、更安全、更高效的方式表达代码。”</p>
</blockquote>
<p>当 Go在极力做“减法”，试图降低开发者的心智负担时，C++ 却似乎在坚定地走着另一条路：<strong>它信任开发者是专家，它把所有的选择权和复杂性都交给你，让你自己去构建属于你的“最佳子集”。</strong></p>
<p>这就像驾驶一架拥有几百个仪表盘的航天飞机。对于新手来说是灾难，但对于顶尖的飞行员来说，每一个按钮都意味着更精准的控制力。</p>
<h2>出路何在？：拥抱“渐进式现代化”</h2>
<p>在这场看似无解的“内部大讨论”中，我们依然能找到一条充满智慧的中间路线。</p>
<p>有人分享了一个极具参考价值的真实案例：</p>
<p>他成功地在一个庞大的 C++98 代码库中，引入了一个用 C++17 编写的新功能模块。他没有去重构任何老代码，只是简单地升级了编译器和构建脚本。结果：新特性带来了性能的提升和开发效率的飞跃，而老代码依然稳定运行。</p>
<p>这或许就是现代 C++ 正确的打开方式：<strong>不要试图用新标准去“革命”旧代码，而是在写新代码时，大胆地、有选择地拥抱新特性。</strong></p>
<p>让 C++98 的归 C++98，让 C++23 的归 C++23。在一个代码库中，允许不同时代的“方言”共存，用新增的模块去逐步“稀释”历史的包袱。</p>
<h2>小结：一场关于“自由”的伟大实验</h2>
<p>C++ 的这场大讨论，没有赢家。</p>
<p>它只是再次向我们证明了这门语言的“独一无二”：它是一门民主的语言。它给了你选择一切的自由，也要求你为自己的选择承担一切后果。</p>
<p>用一位开发者的话来说：</p>
<blockquote>
<p>“Rust 强加给你它的观点；而 C++ 要求你有你自己的观点。这就像专制与民主的区别。大多数时候，民主只是一个被猴子笼子管理的、组织混乱的马戏团。<strong>但我更喜欢民主。</strong>”</p>
</blockquote>
<p>或许，对于我们这些已经习惯了 Go 和 Rust 那种“带你走”模式的开发者来说，偶尔回头看看 C++ 这个充满“混沌与活力”的古老集市，会让我们对“软件工程”这门手艺，有更深刻的理解。</p>
<p>资料链接：https://www.reddit.com/r/cpp/comments/1sihs1w/is_modern_c_actually_making_us_more_productive_or</p>
<hr />
<p><strong>今日互动探讨：</strong></p>
<p>在你的技术生涯中，你是否也曾被困在某个古老的“技术版本”里动弹不得？对于 C++ 这种“万物皆可选”的自由哲学，你是向往，还是恐惧？</p>
<p>欢迎在评论区分享你的看法！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p><strong>原「Gopher部落」已重装升级为「Go &amp; AI 精进营」知识星球，快来加入星球，开启你的技术跃迁之旅吧！</strong></p>
<p>我们致力于打造一个高品质的 <strong>Go 语言深度学习</strong> 与 <strong>AI 应用探索</strong> 平台。在这里，你将获得：</p>
<ul>
<li><strong>体系化 Go 核心进阶内容:</strong> 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏，夯实你的 Go 内功。</li>
<li><strong>前沿 Go+AI 实战赋能:</strong> 紧跟时代步伐，学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等，掌握 AI 时代新技能。 </li>
<li><strong>星主 Tony Bai 亲自答疑:</strong> 遇到难题？星主第一时间为你深度解析，扫清学习障碍。</li>
<li><strong>高活跃 Gopher 交流圈:</strong> 与众多优秀 Gopher 分享心得、讨论技术，碰撞思想火花。</li>
<li><strong>独家资源与内容首发:</strong> 技术文章、课程更新、精选资源，第一时间触达。</li>
</ul>
<p>衷心希望「Go &amp; AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚，享受技术精进的快乐！欢迎你的加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-and-ai-tribe-zsxq-small-card.jpg" alt="img{512x368}" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>告别古法编程黄金时代：AI 时代不会再有新编程语言诞生的土壤</title>
		<link>https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era/</link>
		<comments>https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era/#comments</comments>
		<pubDate>Mon, 23 Mar 2026 23:45:43 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AgenticCoding]]></category>
		<category><![CDATA[AIProgramming]]></category>
		<category><![CDATA[AI编程]]></category>
		<category><![CDATA[AndrejKarpathy]]></category>
		<category><![CDATA[ArtificialIntelligence]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[ClaudeCode]]></category>
		<category><![CDATA[CodeGeneration]]></category>
		<category><![CDATA[CorpusHegemony]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[HandcraftedCode]]></category>
		<category><![CDATA[IntermediateRepresentation]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[NaturalLanguageProgramming]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ProgrammingLanguages]]></category>
		<category><![CDATA[ProgrammingParadigm]]></category>
		<category><![CDATA[Prompt]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[Software3.0]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[SoftwareFactory]]></category>
		<category><![CDATA[spec]]></category>
		<category><![CDATA[TechEvolution]]></category>
		<category><![CDATA[中间码]]></category>
		<category><![CDATA[人工智能]]></category>
		<category><![CDATA[代码生成]]></category>
		<category><![CDATA[古法编程]]></category>
		<category><![CDATA[大模型]]></category>
		<category><![CDATA[技术演进]]></category>
		<category><![CDATA[提示词]]></category>
		<category><![CDATA[智能体编程]]></category>
		<category><![CDATA[编程范式]]></category>
		<category><![CDATA[编程语言]]></category>
		<category><![CDATA[自然语言编程]]></category>
		<category><![CDATA[规格说明书]]></category>
		<category><![CDATA[语料霸权]]></category>
		<category><![CDATA[软件工厂]]></category>
		<category><![CDATA[软件工程]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=6092</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era 大家好，我是Tony Bai。 如果你回望过去十五年的软件工程史，那无疑是编程语言百花齐放的黄金时代。 为了对抗日益膨胀的系统复杂度，人类绞尽脑汁地发明新的“咒语”： Google 推出了 Go 语言，用极简的 Goroutine 拯救了深陷并发地狱的后端工程师； Mozilla 孕育了 Rust，用严苛的所有权机制向内存泄漏和数据竞争宣战； 苹果用 Swift 埋葬了晦涩的 Objective-C； JetBrains 用 Kotlin 为笨重的 Java的使用者提供了一个更优雅的选择； 微软用 TypeScript 彻底规范了狂野的 JavaScript 生态。 每一次新语言的诞生，都伴随着开发者们的狂欢。我们热衷于讨论语法糖、对比编译速度、争论哪种范式更优雅。我们在各大论坛上为自己喜爱的语言摇旗呐喊。 但这已经是最后的余晖了。 站在 2026 年的节点上，当你看着 Claude Code、Cursor 或各类 Coding Agent 在几秒钟内倾泻出数千行逻辑严密的代码时，一个残酷的真相正在浮出水面： 大模型（LLM）的爆发，彻底抽干了孕育下一代通用编程语言的土壤。属于人类的“造语言”游戏，结束了。 这不是危言耸听，而是基于技术演进第一性原理的必然推演。 语料霸权：新语言无法跨越的“生态死局” 在 AI 时代，一门编程语言的生命力不再取决于它的语法有多么优雅，而取决于它在 AI 模型中的“语料权重”。 现存的主流语言（Python, Java, JavaScript, Go, C/C++等）在 GitHub [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/no-soil-for-new-programming-languages-in-ai-era-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era">本文永久链接</a> &#8211; https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era</p>
<p>大家好，我是Tony Bai。</p>
<p>如果你回望过去十五年的软件工程史，那无疑是编程语言百花齐放的黄金时代。</p>
<p>为了对抗日益膨胀的系统复杂度，人类绞尽脑汁地发明新的“咒语”：</p>
<p>Google 推出了 Go 语言，用极简的 Goroutine 拯救了深陷并发地狱的后端工程师；</p>
<p>Mozilla 孕育了 Rust，用严苛的所有权机制向内存泄漏和数据竞争宣战；</p>
<p>苹果用 Swift 埋葬了晦涩的 Objective-C；</p>
<p>JetBrains 用 Kotlin 为笨重的 Java的使用者提供了一个更优雅的选择；</p>
<p>微软用 TypeScript 彻底规范了狂野的 JavaScript 生态。</p>
<p>每一次新语言的诞生，都伴随着开发者们的狂欢。我们热衷于讨论语法糖、对比编译速度、争论哪种范式更优雅。我们在各大论坛上为自己喜爱的语言摇旗呐喊。</p>
<p><strong>但这已经是最后的余晖了。</strong></p>
<p>站在 2026 年的节点上，当你看着 <a href="http://gk.link/a/12EPd">Claude Code</a>、Cursor 或各类 Coding Agent 在几秒钟内倾泻出数千行逻辑严密的代码时，一个残酷的真相正在浮出水面：</p>
<p><strong>大模型（LLM）的爆发，彻底抽干了孕育下一代通用编程语言的土壤。属于人类的“造语言”游戏，结束了。</strong></p>
<p>这不是危言耸听，而是基于技术演进第一性原理的必然推演。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/agentic-software-engineering-qr.png" alt="" /></p>
<h2>语料霸权：新语言无法跨越的“生态死局”</h2>
<p>在 AI 时代，一门编程语言的生命力不再取决于它的语法有多么优雅，而取决于它在 AI 模型中的<strong>“语料权重”</strong>。</p>
<p>现存的主流语言（Python, Java, JavaScript, Go, C/C++等）在 GitHub 上积累了数年甚至十余年的海量开源代码。这些代码构成了大模型训练的底座，赋予了 AI 极高的“代码智商”。</p>
<p>当你用 Python 或 Go 提问时，AI 能够瞬间理解你的意图，补全复杂的逻辑，甚至自动发现隐藏的 Bug，因为它的“脑子”里装着上千万个成熟的 Python/Go 示例。</p>
<p><strong>但对于一门新语言来说，这是绝对的死局。</strong></p>
<p>假设明天某个天才发布了一门名为 Nova 的新语言，号称性能超越 C，安全性超越 Rust，语法如 Python 般简洁。</p>
<p>结果会怎样？</p>
<ul>
<li>AI 不会写：因为训练语料里没有 Nova 的代码，大模型对它一无所知，无法提供智能补全。</li>
<li>人类不会用：在“没有 AI 辅助就感觉不会写代码”的今天，一个习惯了口述意图，让AI Coding Agent 自动生成全量代码的程序员，绝不可能去碰一门必须纯手工敲击、AI 无法帮他编写和Debug的语言。</li>
</ul>
<p>这就形成了一个无解的<strong>马太效应</strong>：</p>
<pre><code>没人写就没有语料 -&gt; 没有语料 AI 就不会写 -&gt; AI 不会写人类就不想学 -&gt; 更没人写。
</code></pre>
<p><strong>现存的主流语言通过“语料霸权”，彻底锁死了新语言上升的通道。</strong></p>
<h2>需求降维：为什么我们不再需要“更好写”的语言？</h2>
<p>人类发明新语言的根本动力，是<strong>“人脑的带宽有限”</strong>。</p>
<p>C++ 太容易写出内存泄漏，人脑排查太痛苦，所以我们发明了 Rust，让编译器做“真理警察”。</p>
<p>Java 处理异步回调太繁琐（Callback Hell），所以我们发明了各种新的语法糖。</p>
<p>我们一直在努力打造更锋利、更安全的斧头，因为那是人类自己要挥舞的斧头。</p>
<p>但在 Agentic Coding（智能体编程）时代，挥舞斧头的不再是人，而是不知疲倦的 AI。</p>
<p>当你可以用自然语言对 Agent 说：<em>“用 C++ 实现一个高并发的 HTTP 服务器，并严格检查所有内存泄漏风险，写出 100% 覆盖率的测试用例。”</em></p>
<p>只要 AI 的推理能力足够强，加上自动化的沙箱验证（Eval），它完全可以写出极度安全、高效的 C++ 代码。</p>
<p>如果 AI 能够不知疲倦地处理最繁琐的语法、填补最冗长的样板代码（Boilerplate），并且不出错，那么“语言本身是否易读、是否好写” 似乎就变得不再重要了。</p>
<p>因为代码根本不是给人看的，也不是人写的。当“人脑带宽”不再是瓶颈，发明一种“让人类写得更舒服”的新语言，就失去了最大的现实动机。</p>
<h2>语言的两极化：自然语言与“AI 中间码”</h2>
<p>如果不再有新的面向人类的通用编程语言，未来的代码世界会变成什么样？</p>
<p>答案是：<strong>极端的两极分化。</strong></p>
<p><strong>上层：英语（或自然语言）成为终极编程语言。</strong></p>
<p>Andrej Karpathy 的预言正在成为现实（Software 3.0）。人类不需要学习晦涩的语法，人类只需要学习如何清晰、严谨地表达意图，编写能够精准约束 AI 的 <strong>Spec（规格说明书）</strong>。我们与机器的接口，退回到了人类最擅长的媒介。</p>
<p><strong>底层：只有机器能读懂的“AI 专属语言”。</strong></p>
<p>如果你是大模型厂商（比如 OpenAI 或 Google），当你发现 90% 的代码都是你的模型生成的，你还会让模型生成冗长、为了兼顾人类可读性而充满妥协的 Java 或 Python 代码吗？</p>
<p>不会的。巨头们极有可能会研发一种<strong>专门面向 AI 优化的中间表示语言（Intermediate Representation, IR）</strong>。</p>
<p>这种语言对人类来说如同天书，但对于模型来说：</p>
<ul>
<li>Token 效率极高：原本需要 1000 个 Token 表达的逻辑，这种语言只要 50 个 Token，极大节省推理成本和上下文窗口。</li>
<li>逻辑高度压缩：天生适合并行计算和智能体之间的状态传递。</li>
</ul>
<p>AI 会将人类的自然语言直接“编译”成这种中间码，然后运行。</p>
<p>在这个过程中，介于自然语言和机器码之间、那种专门为了“让人类勉强能懂又能让机器执行”而存在的传统编程语言，其生存空间将被彻底抽空。</p>
<h2>小结：致敬“古法编程”的黄金时代</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2026/no-soil-for-new-programming-languages-in-ai-era-2.png" alt="" /></p>
<p>这听起来有些感伤，但这就是技术演进的无情车轮。</p>
<p>就像今天，依然有人沉迷于机械表的齿轮咬合，依然有人热爱在暗房里冲洗胶卷。</p>
<p><strong>“纯手工编写代码（Handcrafted Code）”</strong>——这种我们曾引以为傲的工业生产方式，未来可能也会退化成一种个人的“艺术爱好”或“思维体操”。我们称之为<strong>“古法编程”</strong>。</p>
<p>在某个安静的周末，你或许依然会打开编辑器，为了兴趣手撸一段优雅的 Go 并发或者 Rust 生命周期，享受那种久违的、直接控制机器的“心流”多巴胺。</p>
<p>但在残酷的商业战场上，古法编程即将落幕。</p>
<p>不要再为语法糖而争论不休，不要再期待下一个能拯救你的新语言。</p>
<p>去锻炼你的系统思维吧，去学着用自然语言精准地描绘你的蓝图。因为在下一个时代，<strong>定义目标的造物主，永远比精通语法的泥瓦匠更稀缺。</strong></p>
<hr />
<p><strong>你还在坚持“古法编程”吗？</strong></p>
<p>面对 AI 现场生成代码的冲击，你是否还会为了某种语言的“优雅语法”而兴奋？在你的理想中，未来的“AI 专用中间码”应该长什么样？你是更享受亲自掌控每一行代码，还是更向往定义目标的“造物主”角色？</p>
<p>欢迎在评论区留下你对“古法编程”时代的最后致敬！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p><strong>原「Gopher部落」已重装升级为「Go &amp; AI 精进营」知识星球，快来加入星球，开启你的技术跃迁之旅吧！</strong></p>
<p>我们致力于打造一个高品质的 <strong>Go 语言深度学习</strong> 与 <strong>AI 应用探索</strong> 平台。在这里，你将获得：</p>
<ul>
<li><strong>体系化 Go 核心进阶内容:</strong> 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏，夯实你的 Go 内功。</li>
<li><strong>前沿 Go+AI 实战赋能:</strong> 紧跟时代步伐，学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等，掌握 AI 时代新技能。 </li>
<li><strong>星主 Tony Bai 亲自答疑:</strong> 遇到难题？星主第一时间为你深度解析，扫清学习障碍。</li>
<li><strong>高活跃 Gopher 交流圈:</strong> 与众多优秀 Gopher 分享心得、讨论技术，碰撞思想火花。</li>
<li><strong>独家资源与内容首发:</strong> 技术文章、课程更新、精选资源，第一时间触达。</li>
</ul>
<p>衷心希望「Go &amp; AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚，享受技术精进的快乐！欢迎你的加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-and-ai-tribe-zsxq-small-card.jpg" alt="img{512x368}" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>硬核测评：哪门语言最受 AI 宠爱？13 种语言横向对比，Go 表现如何？</title>
		<link>https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance/</link>
		<comments>https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance/#comments</comments>
		<pubDate>Mon, 09 Mar 2026 00:02:44 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AIAgent]]></category>
		<category><![CDATA[AIProgramming]]></category>
		<category><![CDATA[AI智能体]]></category>
		<category><![CDATA[AI编程]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[BorrowChecker]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[ClaudeCode]]></category>
		<category><![CDATA[CodeGeneration]]></category>
		<category><![CDATA[CompilationSpeed]]></category>
		<category><![CDATA[DeveloperExperience]]></category>
		<category><![CDATA[DynamicLanguages]]></category>
		<category><![CDATA[FunctionalLanguages]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[InferenceCost]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mini-git]]></category>
		<category><![CDATA[Ocaml]]></category>
		<category><![CDATA[PerformanceReview]]></category>
		<category><![CDATA[ProgrammingLanguages]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[StaticLanguages]]></category>
		<category><![CDATA[TypeChecking]]></category>
		<category><![CDATA[代码生成]]></category>
		<category><![CDATA[借用检查器]]></category>
		<category><![CDATA[函数式语言]]></category>
		<category><![CDATA[动态语言]]></category>
		<category><![CDATA[基准测试]]></category>
		<category><![CDATA[开发者体验]]></category>
		<category><![CDATA[性能测评]]></category>
		<category><![CDATA[推理成本]]></category>
		<category><![CDATA[类型检查]]></category>
		<category><![CDATA[编程语言]]></category>
		<category><![CDATA[编译速度]]></category>
		<category><![CDATA[静态语言]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=6010</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance 大家好，我是Tony Bai。 随着 Claude Code、Gemini Cli、Codex 等 AI 编程工具的全面普及，“让 AI 写代码”已经从极客的玩具变成了日常的生产力。随之而来的是一个触及灵魂的问题：哪种编程语言最适合交给 AI 去写？ 作为 Gopher，我们一直为 Go 语言的“极简语法”、“极速编译”和“强类型安全”感到自豪。我们理所当然地认为，这种没有任何隐式魔法、像白开水一样的语言，绝对是 LLM 的最爱。 然而，现实总是比直觉更骨感。近日，Ruby 核心提交者 Yusuke Endoh（@mame）发布了一份名为 ai-coding-lang-bench 的硬核定量测评报告。他使用 Claude Code（Opus 4.6 模型）对 13 种主流编程语言进行了系统性横向对比。 在这场涵盖了动态语言、静态语言和函数式语言的混战中，Go 语言的表现究竟如何？ 是力压群雄，还是黯然失色？那些备受人类推崇的静态类型系统，在 AI 面前是否成了累赘？ 本文和大家一起阅读和拆解这份报告，为你揭晓 AI 时代的语言偏好图谱。 实验设计：让 AI 写一个 Mini-Git 在评价这份报告之前，我们先来看看它的实验设计，这是目前业内少见的、针对 AI Agent 的工程化能力的量化评估。 任务目标：让 Claude Code (Opus 4.6) [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/hardcore-review-13-languages-ai-favorite-go-performance-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance">本文永久链接</a> &#8211; https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance</p>
<p>大家好，我是Tony Bai。</p>
<p>随着 <a href="http://gk.link/a/12EPd">Claude Code</a>、<a href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNzM0MDk0Mg==&amp;action=getalbum&amp;album_id=4067128336651386882#wechat_redirect">Gemini Cli</a>、Codex 等 AI 编程工具的全面普及，“让 AI 写代码”已经从极客的玩具变成了日常的生产力。随之而来的是一个触及灵魂的问题：<strong>哪种编程语言最适合交给 AI 去写？</strong></p>
<p>作为 Gopher，我们一直为 Go 语言的“极简语法”、“极速编译”和“强类型安全”感到自豪。我们理所当然地认为，这种没有任何隐式魔法、像白开水一样的语言，绝对是 LLM 的最爱。</p>
<p>然而，现实总是比直觉更骨感。近日，Ruby 核心提交者 Yusuke Endoh（@mame）发布了<a href="https://github.com/mame/ai-coding-lang-bench">一份名为 ai-coding-lang-bench 的硬核定量测评报告</a>。他使用 Claude Code（Opus 4.6 模型）对 13 种主流编程语言进行了系统性横向对比。</p>
<p>在这场涵盖了动态语言、静态语言和函数式语言的混战中，<strong>Go 语言的表现究竟如何？</strong> 是力压群雄，还是黯然失色？那些备受人类推崇的静态类型系统，在 AI 面前是否成了累赘？</p>
<p>本文和大家一起阅读和拆解这份报告，为你揭晓 AI 时代的语言偏好图谱。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/agentic-software-engineering-qr.png" alt="" /></p>
<h2>实验设计：让 AI 写一个 Mini-Git</h2>
<p>在评价这份报告之前，我们先来看看它的实验设计，这是目前业内少见的、针对 AI Agent 的工程化能力的量化评估。</p>
<p><strong>任务目标</strong>：让 Claude Code (Opus 4.6) 从零开始实现一个 mini-git（简化版的 Git）。这是一个极具代表性的任务，它包含了文件 I/O、哈希计算、数据结构操作以及命令行接口，足以考验模型对语言生态的综合运用能力。</p>
<p>测试被巧妙地分为两个阶段，模拟了真实的软件生命周期：</p>
<ul>
<li>v1 (新项目构建)：实现基础的 init, add, commit 和 log。</li>
<li>v2 (特性扩展)：在 v1 的基础上，增加 status, diff, checkout, reset, rm, show 等复杂指令。</li>
</ul>
<p><strong>提示词（Prompt）极其极简</strong>：“阅读 SPEC-v1.txt，实现它，并确保 test-v1.sh 测试通过。”这种设计最大程度地减少了人类指令的干预，纯粹考验 AI 代理在闭环环境下的自主编码、调试和测试能力。</p>
<p><strong>参赛选手（13种语言/15种配置）</strong>：</p>
<ul>
<li>动态语言：Python, Ruby, JavaScript, Perl, Lua</li>
<li>动态+类型检查器：Python/mypy, Ruby/Steep</li>
<li>静态语言：TypeScript, Go, Rust, C, Java</li>
<li>函数式语言：Scheme (动态), OCaml (静态), Haskell (静态)</li>
</ul>
<p>每种语言配置运行 <strong>20 次</strong>，以消除 LLM 生成的随机性带来的误差，并统计其耗时（Time）、成本（Cost，即 Token 消耗）和代码行数（LOC）。</p>
<h2>核心发现：动态语言逆袭，Go 位居第二梯队</h2>
<p>如果仅看总耗时和总成本（v1 + v2），测试结果呈现出了令人瞩目的阶梯式分布。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/hardcore-review-13-languages-ai-favorite-go-performance-2.png" alt="" /></p>
<h3>第一梯队：Ruby, Python, JavaScript 的绝对统治</h3>
<p>在这场 AI 编程竞速中，Ruby（73.1s）、Python（74.6s）和 JavaScript（81.1s）组成了无可争议的第一阵营。</p>
<p>它们不仅生成速度最快、消耗 API 成本最低（均在 $0.40 以下），而且在 20 次测试中表现出了极高的稳定性（标准差极小）。</p>
<p>对于 AI 来说，生成这三种语言的代码就像呼吸一样自然。它们无需繁琐的项目初始化配置（如 Cargo.toml 或 package.json），可以做到“建个文件直接跑”，这种极简的工作流在 v1 阶段（新项目构建）优势极大。</p>
<h3>第二梯队：被“强类型”拖慢脚步的 Go 与 Java</h3>
<p>现在，来回答大家最关心的问题：Go 表现如何？</p>
<p>答案是：位居第二梯队。Go 的总耗时为 101.6s，平均成本 $0.50。中规中矩。Go 虽然在语法上非常克制，但依然落后于 Python 和 JS 等动态语言。与之类似，Java（115.4s）也因为繁琐的语法结构和强类型约束，留在了这一梯队。</p>
<p>尽管如此，Go 在整个 20 次测试中没有出现一次失败（0 次 fail），这证明了 <a href="https://tonybai.com/2026/01/04/stop-lying-to-the-compiler">Go 的编译器在防止 AI 产生“幻觉 Bug”方面，发挥了极其可靠的安全网作用</a>。</p>
<h3>“后进生”阵营：Rust 与 C 的挣扎</h3>
<p>备受人类极客推崇的 Rust（113.7s，且有 2 次失败）和底层的 C（155.8s）在测试中显得步履维艰。</p>
<p>尤为值得注意的是，在总共 600 次的独立运行中，只有 Rust (2次) 和 Haskell (1次) 出现了测试失败（未能最终跑通 Shell 脚本）的情况。这两门语言都以其极高的心智负担和“编译器教你做人”的严格程度而闻名。</p>
<p>这也是将Rust列入“后进生”阵营的主要原因。如果用《飞驰人生》的拉力赛来比喻，Rust 相当于在40站的赛季中，有两站没能完赛！</p>
<h2>深度剖析：为什么 AI 更偏爱动态语言？</h2>
<p>在传统的工程视角中，“静态类型防止低级 Bug”、“动态语言难以维护”是金科玉律。但在 LLM 驱动的 Agent 开发流中，这个逻辑为何失效了？作者 Yusuke Endoh 提出了几个关键的解释维度。</p>
<h3>训练数据的“虹吸效应”</h3>
<p>LLM 的能力直接取决于训练语料的规模和质量。Python、JavaScript 和 Ruby 是过去十几年 Web 开发的绝对主流。GitHub 上海量的这三种语言的开源代码、StackOverflow 上的问答，为 Claude Code 提供了极其丰富的“预训练肌肉记忆”。</p>
<p>当 AI 需要实现一个功能时，它在 Python 的隐空间（Latent Space）中寻找最优解的路径，远比在 Haskell 甚至 Rust 中要清晰、笔直得多。</p>
<h3>静态类型的“双刃剑”与重构阻力</h3>
<p>静态类型系统的初衷是约束人类，防止我们在重构时犯错。但在 AI 的“ Prompt -> 生成 -> 测试报错 -> 思考 -> 再生成”的迭代循环中，严格的类型检查反而成了巨大的“摩擦力”。</p>
<ul>
<li>编译成本与调试死锁：在 Rust 或 C 中，当 AI 生成的代码出现类型不匹配时，它需要花费大量的 Token 去阅读复杂的编译器报错信息。有时，为了解决一个简单的借用检查器（Borrow Checker）报错，AI 可能会陷入漫长的、无休止的“试错-编译失败”死循环。</li>
<li>重构牵一发而动全身：在 v2 特性扩展阶段，往往需要修改现有的数据结构。对于 Python，AI 只需要在字典里加个 key；而对于 Rust 或 Java，这可能意味着需要重构一系列的 Struct、更新类型签名、甚至修改与之相关的无数个函数的参数声明。这种“爆炸半径”极大地增加了耗时。</li>
</ul>
<h3>“附加类型检查”的巨大损耗</h3>
<p>报告中一个非常有意思的对照组是：原生动态语言 vs 附加类型检查器的动态语言。</p>
<ul>
<li>Python (74.6s) vs Python/mypy (125.3s) —— 变慢了 1.6~1.7 倍。</li>
<li>Ruby (73.1s) vs Ruby/Steep (186.6s) —— 变慢了 2.0~3.2 倍！</li>
</ul>
<p>这证明了，迫使 AI 在动态语言中编写严谨的类型注解（Type Annotations），是一项极其昂贵的任务。模型需要耗费额外的算力去推导类型、生成类型声明文件，并且在类型检查器报错时，还要去修复那些在纯动态模式下可能根本不影响运行的“伪 Bug”。</p>
<h3>代码量（LOC）的迷思：越短越好吗？</h3>
<p>我们通常认为，写得越少，跑得越快。但数据打破了这个迷思。</p>
<p>Haskell 和 OCaml 生成的最终代码行数（224行和 216行）是所有语言中最少的，甚至少于 Python 和 Ruby。然而，它们在生成时间上的表现却排在倒数（Haskell 耗时最长，达 174s）。</p>
<p>这表明，对于 AI 来说，函数式语言那种高度抽象、信息密度极大的代码，生成和推理的成本远高于像 Python、Go 那种稍微啰嗦但逻辑平铺直叙的“大白话”代码。浓缩的未必是精华，对于 LLM 来说，高度浓缩往往意味着更高的生成熵和更高的试错概率。</p>
<h2>行业启示：我们需要重新思考 AI 时代的技术栈选型</h2>
<p>面对这份详实的基准测试报告，无论你是 CTO 还是普通开发者，都必须开始重新审视未来的技术选型逻辑。</p>
<h3>动态语言是快速原型的“绝对王者”</h3>
<p>如果你正在启动一个新项目，或者需要用 AI Agent 快速验证一个业务流程，Python 和 TypeScript 是首选（报告中 JavaScript 表现优于 TS，但在实际工程中 TS 的综合权衡更佳）。</p>
<p>不要迷信“大型项目必须一开始就上强类型编译语言”。在需求快速变化的初期，让 AI 用动态语言狂飙突进，是获取业务反馈最高效的手段。</p>
<h3>性能王者们的困境：Go 与 Rust 在 AI 时代掉队了吗？</h3>
<p>看到测评数据，很多 Gopher 可能会感到失落：难道注重工程严谨性和系统级性能的静态语言，真的在 AI 时代掉队了吗？</p>
<p>结论并非如此悲观。我们需要明确一点：Agent 测评的速度，不等于软件最终运行的速度。</p>
<ul>
<li>业务试错 vs 基础设施：AI Agent 目前最擅长、也最快速能完成的，是写“胶水逻辑”和“业务 CRUD”。在这些领域，Python 确实快。但当你的系统涉及到高并发、内存精细控制、或者需要打包为轻量级容器部署时，人类依然需要 Go。</li>
<li>容错的底线：在这场 600 次的庞大测试中，只有 Rust 和 Haskell 出现了最终测试失败，而 Go 保持了完美的 100% 成功率。这恰恰说明，Go 在“极度灵活（易幻觉）”与“极度严格（难生成）”之间，找到了一个非常微妙的平衡点。它可能不是 AI 写得最快的，但它一定是 AI 写出来最让人放心的系统级语言。</li>
</ul>
<p>我们不应期待 AI Agent 能够像写 Python 脚本一样，如德芙般丝滑地生成出一个复杂的 Go 并发系统。但在 AI 给出的初稿之上，Go 语言极佳的可读性和统一的规范，将为人类工程师的最终审查（Code Review）节省巨大的精力。</p>
<h2>小结：下一个十年的编程语言，长什么样？</h2>
<p>ai-coding-lang-bench 给我们上了生动的一课。它揭示了当前 LLM 的偏好：<strong>它们喜欢有海量训练数据的、灵活的、不需要应对死板编译器的语言。</strong></p>
<p>但我们必须认识到，这只是一份基于 2026 年初模型（Claude Opus 4.6）的快照。未来的 AI 编程语言形态，可能会朝着两个方向演进：</p>
<ol>
<li>AI Native 语言的诞生：抛弃目前设计给人类阅读的语法，出现一种专门为了降低 LLM 生成 Token 成本、且天然抗幻觉的机器中间语言。</li>
<li>现有静态语言的“Agent 友好化”编译模式：Go 和 Rust 可能会进化出一种特殊的编译模式。在这个模式下，编译器不仅是冷冰冰地报错，还能以结构化的、对 LLM 更友好的方式提供“修复建议”，从而大幅缩短 Agent 修复编译错误的反馈回路。</li>
</ol>
<p>无论如何，浪潮已经来临。在 AI 主导代码生成的新时代，我们评价一门编程语言的标准，正在从“它对人类大脑是否友好”，悄然转变为<strong>“它对大模型推理是否友好”</strong>。</p>
<p>而在这场新赛道上，动态语言们，已经抢跑了。</p>
<p>本文核心数据与图表均来源于 GitHub 项目 <a href="https://github.com/mame/ai-coding-lang-bench">mame/ai-coding-lang-bench</a>。</p>
<hr />
<p><strong>你的 AI 编程初体验</strong></p>
<p>看完这个排名，你是感到意外，还是早已感同身受？在你日常使用 AI 编程时，你觉得它写哪种语言最让你省心？你是否也曾为了修一个 AI 写的编译错误而陷入“死循环”？</p>
<p>欢迎在评论区分享你的“AI 协作”红黑榜！</p>
<hr />
<p>“语言的严格性正在变成 AI 的摩擦力？在 AI 时代，掌握一套能驱动 Agent 自动化、自修复的‘工作流’比死磕语法更重要。我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将教你如何利用 Claude Code 结合 Spec 驱动开发，构建真正高产出的‘软件工厂’。”</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p><strong>原「Gopher部落」已重装升级为「Go &amp; AI 精进营」知识星球，快来加入星球，开启你的技术跃迁之旅吧！</strong></p>
<p>我们致力于打造一个高品质的 <strong>Go 语言深度学习</strong> 与 <strong>AI 应用探索</strong> 平台。在这里，你将获得：</p>
<ul>
<li><strong>体系化 Go 核心进阶内容:</strong> 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏，夯实你的 Go 内功。</li>
<li><strong>前沿 Go+AI 实战赋能:</strong> 紧跟时代步伐，学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等，掌握 AI 时代新技能。 </li>
<li><strong>星主 Tony Bai 亲自答疑:</strong> 遇到难题？星主第一时间为你深度解析，扫清学习障碍。</li>
<li><strong>高活跃 Gopher 交流圈:</strong> 与众多优秀 Gopher 分享心得、讨论技术，碰撞思想火花。</li>
<li><strong>独家资源与内容首发:</strong> 技术文章、课程更新、精选资源，第一时间触达。</li>
</ul>
<p>衷心希望「Go &amp; AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚，享受技术精进的快乐！欢迎你的加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-and-ai-tribe-zsxq-small-card.jpg" alt="img{512x368}" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>金融级基础设施重构：放弃 Rust 拥抱 Go，务实主义的最终胜利？</title>
		<link>https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory/</link>
		<comments>https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory/#comments</comments>
		<pubDate>Mon, 23 Feb 2026 01:09:42 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[BackendDevelopment]]></category>
		<category><![CDATA[BorrowChecker]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[CognitiveLoad]]></category>
		<category><![CDATA[ConcurrencyModel]]></category>
		<category><![CDATA[Correctness]]></category>
		<category><![CDATA[DevelopmentEfficiency]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DistributedSystems]]></category>
		<category><![CDATA[FinancialInfrastructure]]></category>
		<category><![CDATA[GarbageCollection]]></category>
		<category><![CDATA[GC]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoLanguage]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[HFT]]></category>
		<category><![CDATA[InterfaceDesign]]></category>
		<category><![CDATA[latency]]></category>
		<category><![CDATA[machinelearning]]></category>
		<category><![CDATA[MemorySafety]]></category>
		<category><![CDATA[ML]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Pragmatism]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[TeamBuilding]]></category>
		<category><![CDATA[TechSelection]]></category>
		<category><![CDATA[借用检查器]]></category>
		<category><![CDATA[内存安全]]></category>
		<category><![CDATA[分布式系统]]></category>
		<category><![CDATA[务实主义]]></category>
		<category><![CDATA[后端开发]]></category>
		<category><![CDATA[团队建设]]></category>
		<category><![CDATA[垃圾回收]]></category>
		<category><![CDATA[并发模型]]></category>
		<category><![CDATA[延迟]]></category>
		<category><![CDATA[开发效率]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[技术选型]]></category>
		<category><![CDATA[投入产出比]]></category>
		<category><![CDATA[接口设计]]></category>
		<category><![CDATA[机器学习]]></category>
		<category><![CDATA[正确性]]></category>
		<category><![CDATA[认知负荷]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[金融级基础设施]]></category>
		<category><![CDATA[高频交易]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5934</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory 大家好，我是Tony Bai。 在系统级编程语言的版图上，Go 与 Rust 的对比与争论从未停歇。一个是崇尚大道至简、开发效率极高的“云原生时代王者”；另一个则是以内存安全、零成本抽象和极致性能著称的“极客新宠”。当这两种哲学碰撞在对安全性、稳定性和低延迟要求极高的金融/交易基础设施领域时，开发者该如何抉择？ 近日，在 Reddit 的 r/golang 社区中，一场由 Python 开发者发起的关于“金融基础设施长期演进：Go 还是 Rust？”的技术讨论引发了广泛关注。这位开发者试图为机器学习（ML）流水线、分布式后端和内部 DevOps 工具选择一门强类型语言，并一度陷入了“是否应该同时学习两者”的焦虑中。 这场社区讨论不仅揭示了两种语言在现代架构中的真实定位，更展现了 Go 社区一贯的“务实主义”工程哲学。本文将深度提炼这场讨论的核心观点，为正处于技术选型十字路口的架构师和开发者提供极具价值的参考。 核心探讨：金融系统中的“快”与“对” 在金融科技（FinTech）和交易系统中，有两个指标至关重要：性能（Performance/Latency）与 正确性（Correctness）。这恰好对应了系统级语言常常被审视的两个维度。 Rust 的诱惑：绝对的控制与“编译即正确” 许多开发者最初被 Rust 吸引，正是因为其在金融领域展现出的“绝对严谨”。 代数数据类型与状态机：社区用户指出，Rust 的表达能力极强。在处理复杂的金融业务逻辑（如订单状态流转、复杂的税务和结算规则）时，Rust 的枚举（Enum）和模式匹配可以迫使开发者在编译期处理所有可能的边缘情况，实现所谓的“使无效状态不可表达”（Make invalid states unrepresentable）。 无数据竞争（Data Race Free）：借用检查器（Borrow Checker）和所有权模型在根本上杜绝了多线程环境下的数据竞争。对于处理资金流水的并发程序而言，这种内存安全性能够极大地降低睡眠被报警惊醒的概率。 无 GC 延迟：针对极度敏感的场景（如做市商系统），Rust 摆脱了垃圾回收器（Garbage Collector）的不可预测性，能够提供稳定、可预测的尾部延迟（Tail Latency）。 然而，正如资深工程师在讨论中指出的：“Rust 的高壁垒不仅体现在初始学习成本上，更体现在它持续要求你的大脑处于高速运转状态。” 在编写普通业务代码时，开发者需要不断与编译器“搏斗”，这在无形中拖慢了业务交付（Shipping）的速度。 Go 的底气：“80% 的性能，20% 的精力” 面对 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/financial-infrastructure-rust-to-go-pragmatism-victory-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory">本文永久链接</a> &#8211; https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory</p>
<p>大家好，我是Tony Bai。</p>
<p>在系统级编程语言的版图上，Go 与 Rust 的对比与争论从未停歇。一个是崇尚大道至简、开发效率极高的“云原生时代王者”；另一个则是以内存安全、零成本抽象和极致性能著称的“极客新宠”。当这两种哲学碰撞在对安全性、稳定性和低延迟要求极高的金融/交易基础设施领域时，开发者该如何抉择？</p>
<p>近日，在 Reddit 的 r/golang 社区中，一场由 Python 开发者发起的关于“<a href="https://www.reddit.com/r/golang/comments/1ra0dza/go_vs_rust_for_longterm_systemsfinance/">金融基础设施长期演进：Go 还是 Rust？</a>”的技术讨论引发了广泛关注。这位开发者试图为机器学习（ML）流水线、分布式后端和内部 DevOps 工具选择一门强类型语言，并一度陷入了“是否应该同时学习两者”的焦虑中。</p>
<p>这场社区讨论不仅揭示了两种语言在现代架构中的真实定位，更展现了 Go 社区一贯的“务实主义”工程哲学。本文将深度提炼这场讨论的核心观点，为正处于技术选型十字路口的架构师和开发者提供极具价值的参考。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/system-programming-in-go-pr.png" alt="" /></p>
<h2>核心探讨：金融系统中的“快”与“对”</h2>
<p>在金融科技（FinTech）和交易系统中，有两个指标至关重要：性能（Performance/Latency）与 正确性（Correctness）。这恰好对应了系统级语言常常被审视的两个维度。</p>
<h3>Rust 的诱惑：绝对的控制与“编译即正确”</h3>
<p>许多开发者最初被 Rust 吸引，正是因为其在金融领域展现出的“绝对严谨”。</p>
<ul>
<li>代数数据类型与状态机：社区用户指出，Rust 的表达能力极强。在处理复杂的金融业务逻辑（如订单状态流转、复杂的税务和结算规则）时，Rust 的枚举（Enum）和模式匹配可以迫使开发者在编译期处理所有可能的边缘情况，实现所谓的“使无效状态不可表达”（Make invalid states unrepresentable）。</li>
<li>无数据竞争（Data Race Free）：借用检查器（Borrow Checker）和所有权模型在根本上杜绝了多线程环境下的数据竞争。对于处理资金流水的并发程序而言，这种内存安全性能够极大地降低睡眠被报警惊醒的概率。</li>
<li>无 GC 延迟：针对极度敏感的场景（如做市商系统），Rust 摆脱了垃圾回收器（Garbage Collector）的不可预测性，能够提供稳定、可预测的尾部延迟（Tail Latency）。</li>
</ul>
<p>然而，正如资深工程师在讨论中指出的：“Rust 的高壁垒不仅体现在初始学习成本上，更体现在它持续要求你的大脑处于高速运转状态。” 在编写普通业务代码时，开发者需要不断与编译器“搏斗”，这在无形中拖慢了业务交付（Shipping）的速度。</p>
<h3>Go 的底气：“80% 的性能，20% 的精力”</h3>
<p>面对 Rust 强大的理论优势，Go 社区给出的回应并不是在极限性能上去硬碰硬，而是打出了一张工程学上的王牌：投入产出比（ROI）。</p>
<ul>
<li>极速的开发与迭代：“如果你的目标是尽快发布产品（Ship fast），同时保持系统的可靠性，Go 是完美的折中。” Go 语言的语法极简，没有复杂的生命周期标注，这使得开发者可以把 100% 的精力放在业务逻辑和系统架构上，而不是讨好编译器。</li>
<li>完美的 I/O 并发模型：金融系统的很大一部分工作并非重度 CPU 计算，而是网络 I/O（如对接外部交易所 API、读取数据库、微服务间通信）。Go 内置的 goroutine 提供了极其廉价的上下文切换机制。一位用户精辟地总结：“在处理高度并发或重度 I/O 阻塞的操作时，Go 是无敌的。而在 Rust 中构建高并发的异步（Async）应用，需要极高的经验值，但在 Go 中这就像呼吸一样自然。”</li>
<li>足够好的性能与 GC：虽然 Go 有垃圾回收机制，但经过十多年的演进，Go 的 GC 停顿时间已经达到了亚毫秒级。对于 99% 的金融应用（如支付网关、账单系统、风控后端）来说，Go 的性能已经“快到了性能盈余”的地步。社区用户坦言：“除非你是在证券交易所做内部的高频交易（HFT），否则 Go 的速度绝对绰绰有余。”</li>
</ul>
<h2>领域决定边界：基础设施与业务逻辑的解耦</h2>
<p>讨论中一个非常核心的洞见是：不要试图用一种语言解决所有问题，而是要看清具体领域的边界。楼主的背景是 Python，主要涉及 ML 流水线。这引出了现代架构中非常经典的一种组合模式。</p>
<h3>Python + Go：现代数据驱动架构的“王炸”组合</h3>
<ul>
<li>Python 主宰数据与模型：在机器学习、量化分析和数据科学领域，Python 的生态（Pandas, NumPy, PyTorch）具有不可撼动的统治地位。强行用 Go 或 Rust 去重写模型训练或复杂的矩阵运算，被社区公认为“过早优化”和“重复造轮子”。</li>
<li>Go 主宰服务与编排：当模型训练完成需要部署上线，或者需要构建处理海量请求的 API 网关、数据搬运管道、以及后端微服务时，Python 的 GIL（全局解释器锁）和性能瓶颈就会显现。此时，引入 Go 作为基础设施层（Infrastructure Layer）是最完美的互补。</li>
</ul>
<p>这种架构下，系统被清晰地划分为：Go 负责将数据又快又稳地搬运和路由，Python（在底层 C/C++ 的加持下）负责纯粹的数学和模型计算。这种解耦使得整个系统既享受了 Python 的生态红利，又获得了 Go 在分布式系统上的强悍工程能力。</p>
<h3>真正的 HFT（高频交易）属于谁？</h3>
<p>不可忽视的是，当讨论深入到金融领域的最底端——高频交易（HFT）时，社区展现出了极度客观的技术视野。</p>
<p>多位业内人士指出，在纳秒必争的超低延迟交易领域，C++ 依然是绝对的霸主。尽管 Rust 在试图切入这一市场，但 C++ 在传统金融领域积累的庞大库、成熟的生态以及直接操作硬件的能力，短期内难以被撼动。因此，如果业务的核心真的是 HFT，那么 Go 和 Rust 可能都不是最优解。这就进一步确认了 Go 的主战场：<strong>高吞吐的分布式后端与云原生基础设施。</strong></p>
<h2>隐性成本：认知负荷、团队建设与代码维护</h2>
<p>在架构决策中，语言的特性往往只占 50%，另外 50% 则是<strong>关于人的管理</strong>。这也是本次社区讨论中，Go 获得压倒性支持的关键原因。</p>
<h3>代码的生命周期与可修改性</h3>
<p>“在商业应用中，我更看重随着时间的推移，修改代码有多难。业务需求在不断变化，代码也必须随之改变。”</p>
<ul>
<li>Go 的修改成本极低：Go 的代码结构扁平，没有复杂的隐式抽象。这使得重构和修改极其快速。Go 的接口（Interface）设计是隐式的（Duck Typing），在拆分微服务或调整模块时，不需要像严格继承体系那样大动干戈。</li>
<li>Rust 的“牵一发而动全身”：Rust 高度严格的类型系统是一把双刃剑。虽然它保证了修改后的代码几乎不会出错，但在快速迭代期，添加一个新功能往往意味着要重构一大部分的生命周期标注和类型关系，这对于需要快速响应市场变化的初创项目来说是致命的。</li>
</ul>
<h3>团队招聘与代码交接</h3>
<p>“如果你用 Rust 构建了一个工具，当系统在半夜发生故障时，团队里的其他人能轻易地看懂代码并修复它吗？”</p>
<p>Go 的创造者之一 Rob Pike 曾明确表示，Go 的设计初衷就是为了解决 Google 内部大型团队的协作问题。Go 的语法少、规范统一（gofmt），被称为“没有魔法的语言”。一个有其他语言基础的程序员，通常只需一两周就能熟练上手 Go 并提交生产代码。</p>
<p>相比之下，熟练的 Rust 开发者在市场上不仅稀缺，而且薪资高昂。对于一家非底层技术驱动的金融公司而言，使用 Go 可以极大地降低招聘门槛和团队代码交接的风险。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/financial-infrastructure-rust-to-go-pragmatism-victory-2.png" alt="" /></p>
<h2>小结：务实主义的胜利</h2>
<p>回到这位发帖者的终极问题：“我应该同时深入学习 Go 和 Rust 吗？”</p>
<p>社区给出的答案异常一致：<strong>绝对不要。</strong> 尤其是在项目初期。同时学习两门底层逻辑截然不同的语言，不仅会带来巨大的认知撕裂，还会严重拖慢项目进度（Shipping speed）。</p>
<p>最终，这位发帖者更新了他的决定：<strong>选择 Go。</strong></p>
<blockquote>
<p>“我不想在开始阶段就陷入困境，既然我是独立开发，我开始觉得 Go 才是正道。对于沉重的数学计算，我会继续让 Python 负责。我意识到 Go 真的非常好用，只要我懂得正确使用它，它能在所有的用例中大显身手。此外，Go 社区是我见过最友好的社区之一，你们太棒了！”</p>
</blockquote>
<p>在 AI、区块链、量化金融等技术泡沫层出不穷的今天，技术选型很容易陷入“追逐时髦”（Hype Driven Development）的陷阱。Rust 无疑是一门伟大的语言，代表了系统编程的未来探索。然而，Go 语言的伟大之处在于它始终保持着<strong>极其清醒的工程边界感</strong>。</p>
<p>它不追求类型理论的极致完美，也不苛求消除最后百分之一的性能损耗，它追求的是：在开发者心智负担、编译速度、运行性能、并发模型和部署便利性之间，找到一个无可挑剔的全局最优解。</p>
<p>对于现代分布式系统、网络服务和金融后端基础设施而言，Go 依然是那个能够让你“早点下班、安心睡觉”的最优选择。这也是务实主义在工程世界里，又一次漂亮的胜利。</p>
<p>资料链接：https://www.reddit.com/r/golang/comments/1ra0dza/go_vs_rust_for_longterm_systemsfinance/</p>
<hr />
<p><strong>你怎么选？</strong></p>
<p>软件工程永远是权衡的艺术。在你看来，对于非高频交易的后端业务，Rust 带来的安全性是否足以抵消它的开发成本？如果你现在接手一个新项目，你会优先选择“能让你早点下班”的 Go 吗？</p>
<p>欢迎在评论区分享你的选型“心法”！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go, Rust 还是 Zig？一场关于“简单”与“控制”的灵魂拷问</title>
		<link>https://tonybai.com/2026/01/17/go-rust-zig-simplicity-vs-control/</link>
		<comments>https://tonybai.com/2026/01/17/go-rust-zig-simplicity-vs-control/#comments</comments>
		<pubDate>Fri, 16 Jan 2026 23:38:52 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[BorrowChecker]]></category>
		<category><![CDATA[BuildToolchain]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Cgo]]></category>
		<category><![CDATA[comptime]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[enum]]></category>
		<category><![CDATA[Explicit]]></category>
		<category><![CDATA[GarbageCollection]]></category>
		<category><![CDATA[GC]]></category>
		<category><![CDATA[generics]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[Implicit]]></category>
		<category><![CDATA[lifetimes]]></category>
		<category><![CDATA[ManualMemoryManagement]]></category>
		<category><![CDATA[MemoryManagement]]></category>
		<category><![CDATA[MemorySafety]]></category>
		<category><![CDATA[option]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Result]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[simplicity]]></category>
		<category><![CDATA[SystemProgramming]]></category>
		<category><![CDATA[TechnicalSelection]]></category>
		<category><![CDATA[ZerocostAbstraction]]></category>
		<category><![CDATA[Zig]]></category>
		<category><![CDATA[借用检查器]]></category>
		<category><![CDATA[内存安全]]></category>
		<category><![CDATA[内存布局]]></category>
		<category><![CDATA[内存管理]]></category>
		<category><![CDATA[异步模型]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[手动内存管理]]></category>
		<category><![CDATA[技术选型]]></category>
		<category><![CDATA[控制]]></category>
		<category><![CDATA[显式]]></category>
		<category><![CDATA[构建工具链]]></category>
		<category><![CDATA[泛型]]></category>
		<category><![CDATA[生产力]]></category>
		<category><![CDATA[生命周期]]></category>
		<category><![CDATA[简单]]></category>
		<category><![CDATA[系统编程]]></category>
		<category><![CDATA[编译期执行]]></category>
		<category><![CDATA[表达力]]></category>
		<category><![CDATA[认知负荷]]></category>
		<category><![CDATA[隐式]]></category>
		<category><![CDATA[零成本抽象]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5733</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/17/go-rust-zig-simplicity-vs-control 大家好，我是Tony Bai。 在系统编程的世界里，开发者似乎总是面临着一个残酷的二选一：是选择极致的简单与生产力，还是选择绝对的控制与零成本抽象？ 这种纠结在 Go 与 Rust 的长期对峙中体现得淋漓尽致。然而，近日一位拥有十年 Go 经验的资深开发者在Zig社区的分享，似乎为这场二元对立的战争撕开了一道口子。他从 Go 迁移到 Zig 的经历，既是一个技术选型的故事，也是一场关于“我们到底需要什么样的编程语言”的深度辩论。 Go 的困境：当“简单”成为一种束缚 对于许多 Gopher 来说，Go 的简单是其最大的武器，但也是最深的痛点。 这位楼主坦言，尽管他深爱 Go 的简单，但在编写某些复杂系统时，这种“过度简化”让他感觉语言本身存在缺陷。 表达力的缺失：Go 缺乏像 Rust 那样的 Enum (带数据的枚举)、Option 和 Result 类型。在处理复杂状态和错误流时，Go 的代码往往显得啰嗦且缺乏约束力。 “差不多”的无奈：为了保持简单，Go 在很多地方做了折中（比如 GC，比如泛型的实现方式）。当你需要榨干硬件性能或追求极致的内存布局时，Go 显得力不从心。 Rust 的围城：控制的代价是复杂度 如果嫌 Go 太简单，Rust 似乎是理所当然的替代者。但对于很多习惯了 Go “写完即运行”体验的开发者来说，Rust 的门槛是一堵高墙。 楼主表示，他喜欢 Rust 的核心概念（Structs, Enums, Option），但 Rust [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/go-rust-zig-simplicity-vs-control-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/17/go-rust-zig-simplicity-vs-control">本文永久链接</a> &#8211; https://tonybai.com/2026/01/17/go-rust-zig-simplicity-vs-control</p>
<p>大家好，我是Tony Bai。</p>
<p>在系统编程的世界里，开发者似乎总是面临着一个残酷的二选一：是选择<strong>极致的简单与生产力</strong>，还是选择<strong>绝对的控制与零成本抽象</strong>？</p>
<p>这种纠结在 Go 与 Rust 的长期对峙中体现得淋漓尽致。然而，近日一位拥有十年 Go 经验的资深开发者<a href="https://www.reddit.com/r/Zig/comments/1q38e50/im_really_surprised_by_how_simple_it_is_to/">在Zig社区的分享</a>，似乎为这场二元对立的战争撕开了一道口子。他从 Go 迁移到 Zig 的经历，既是一个技术选型的故事，也是一场关于<strong>“我们到底需要什么样的编程语言”</strong>的深度辩论。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/distributed-system-guide-qr.png" alt="" /></p>
<h2>Go 的困境：当“简单”成为一种束缚</h2>
<p>对于许多 Gopher 来说，Go 的简单是其最大的武器，但也是最深的痛点。</p>
<p>这位楼主坦言，尽管他深爱 Go 的简单，但在编写某些复杂系统时，这种“过度简化”让他感觉语言本身存在缺陷。</p>
<ul>
<li><strong>表达力的缺失</strong>：Go 缺乏像 Rust 那样的 Enum (带数据的枚举)、Option 和 Result 类型。在处理复杂状态和错误流时，Go 的代码往往显得啰嗦且缺乏约束力。</li>
<li><strong>“差不多”的无奈</strong>：为了保持简单，Go 在很多地方做了折中（比如 GC，比如泛型的实现方式）。当你需要榨干硬件性能或追求极致的内存布局时，Go 显得力不从心。</li>
</ul>
<h2>Rust 的围城：控制的代价是复杂度</h2>
<p>如果嫌 Go 太简单，Rust 似乎是理所当然的替代者。但对于很多习惯了 Go “写完即运行”体验的开发者来说，Rust 的门槛是一堵高墙。</p>
<p>楼主表示，他喜欢 Rust 的核心概念（Structs, Enums, Option），但 Rust 为了内存安全而引入的<strong>借用检查器、生命周期</strong>以及<strong>复杂的异步模型</strong>，让他感觉“像是面对另一个 C++”。</p>
<p>这是一场灵魂拷问：<strong>为了获得控制权，我们真的需要背负如此沉重的认知包袱吗？</strong></p>
<h2>Zig 的破局：在“简单”与“控制”之间走钢丝</h2>
<p>Zig 的出现，似乎精准地击中了 Go 与 Rust 之间的那个真空地带。对于这位 Gopher 来说，Zig 让他感到了久违的“刚刚好”：</p>
<ol>
<li><strong>显式的哲学（像 Go）</strong>：Zig 没有隐式内存分配，没有隐藏的控制流，也没有预处理器。这种“所见即所得”的代码风格，与 Go 的可读性哲学高度共鸣。</li>
<li><strong>现代的类型系统（像 Rust）</strong>：Zig 提供了 comptime（编译期执行）和丰富的类型系统，弥补了 Go 在表达力上的短板，却又没有引入 Rust 那样复杂的生命周期概念。</li>
<li><strong>对 C 的降维打击</strong>：Zig 不仅是一门语言，更是一个强大的 C/C++ 构建工具链。它允许你无缝地与 C 交互，逐步迁移遗留代码，这是 Go (CGO) 和 Rust 都难以做到的顺滑体验。</li>
</ol>
<h2>社区的冷思考：没有免费的午餐</h2>
<p>当然，这场灵魂拷问没有标准答案。社区的讨论也极其理性地指出了选择 Zig 的代价：</p>
<ul>
<li><strong>生态的荒原</strong>：与 Go 庞大的“标准库+第三方库”相比，Zig 的生态仍处于拓荒期。你可能需要自己造很多轮子。</li>
<li><strong>内存管理的回归</strong>：Zig 没有 GC，也没有 Rust 的所有权模型。这意味着你回到了手动管理内存的时代（尽管有 defer 和 arena 等工具辅助）。对于习惯了 GC 的 Gopher 来说，这是一个必须跨越的心理门槛。</li>
<li><strong>稳定性的豪赌</strong>：Zig 尚未发布 1.0，语言特性仍在变动。选择 Zig，意味着你愿意陪它一起成长，也愿意承担变动的风险。</li>
</ul>
<h2>小结：你的灵魂属于哪里？</h2>
<p>这场讨论最终指向了开发者内心的自我定位：</p>
<ul>
<li>如果你追求<strong>高效交付、团队协作和工业级的稳定性</strong>，Go 依然是不可撼动的王者。</li>
<li>如果你追求<strong>数学般的严谨、绝对的安全和零成本抽象</strong>，且不介意陡峭的学习曲线，Rust 是你的圣杯。</li>
<li>而如果你渴望<strong>掌控底层、厌倦了复杂的抽象、却又想要现代化的开发体验</strong>，Zig 也许就是你一直在寻找的那个“刚刚好”。</li>
</ul>
<p><strong>简单还是控制？这不仅是语言的选择，更是你作为工程师，想要如何与机器对话的选择。</strong></p>
<p>资料链接：https://www.reddit.com/r/Zig/comments/1q38e50/im_really_surprised_by_how_simple_it_is_to/</p>
<hr />
<p><strong>你的“灵魂选择”</strong></p>
<p>在“简单”与“控制”的天平上，<strong>你的心偏向哪一边？如果让你现在开始一个新项目，你会毫不犹豫地选择 Go，还是想尝尝 Zig 的鲜，亦或是死磕 Rust？</strong></p>
<p><strong>欢迎在评论区投出你的一票，并分享你的理由！</strong> 让我们看看谁才是开发者心中的“白月光”。</p>
<p><strong>如果这篇文章引发了你的选型思考，别忘了点个【赞】和【在看】，并转发给那个还在纠结学什么语言的朋友！</strong></p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/17/go-rust-zig-simplicity-vs-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go 语言的“舒适区”：为何在这张“鄙视链”金字塔中，Go 仅次于 C？</title>
		<link>https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid/</link>
		<comments>https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid/#comments</comments>
		<pubDate>Wed, 07 Jan 2026 00:16:00 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[Abomination]]></category>
		<category><![CDATA[asm]]></category>
		<category><![CDATA[BorrowChecker]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[CognitiveBurden]]></category>
		<category><![CDATA[ComfortZone]]></category>
		<category><![CDATA[ContemptChain]]></category>
		<category><![CDATA[DataOrientedDesign]]></category>
		<category><![CDATA[DOD]]></category>
		<category><![CDATA[Elixir]]></category>
		<category><![CDATA[GarbageCollection]]></category>
		<category><![CDATA[GC]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[HTMX]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[lifetimes]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[MemeLanguages]]></category>
		<category><![CDATA[MemorySafety]]></category>
		<category><![CDATA[MentalModel]]></category>
		<category><![CDATA[metaprogramming]]></category>
		<category><![CDATA[Minimalism]]></category>
		<category><![CDATA[NecessaryEvil]]></category>
		<category><![CDATA[Nononsense]]></category>
		<category><![CDATA[Overengineering]]></category>
		<category><![CDATA[Pragmatism]]></category>
		<category><![CDATA[programminglanguage]]></category>
		<category><![CDATA[Pyramid]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[runtime]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[TotalFailure]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[WildPointer]]></category>
		<category><![CDATA[Zig]]></category>
		<category><![CDATA[元编程]]></category>
		<category><![CDATA[内存安全]]></category>
		<category><![CDATA[实用主义]]></category>
		<category><![CDATA[心智模型]]></category>
		<category><![CDATA[拒绝废话]]></category>
		<category><![CDATA[掌控感]]></category>
		<category><![CDATA[极简主义]]></category>
		<category><![CDATA[现代化C]]></category>
		<category><![CDATA[编程语言]]></category>
		<category><![CDATA[舒适区]]></category>
		<category><![CDATA[认知负担]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[过度设计]]></category>
		<category><![CDATA[运行时]]></category>
		<category><![CDATA[鄙视链]]></category>
		<category><![CDATA[野指针]]></category>
		<category><![CDATA[金字塔]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5684</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid 大家好，我是Tony Bai。 最近，一张“编程语言分级图”在技术社区引发大家热议。它没有参考 TIOBE 排名，也不看 GitHub Star 数，而是完全基于一种简单粗暴的价值观：谁最不折腾人？ 在这张金字塔中，C 语言高居神坛（The one and only），而 Java、Python、C++ 被踩在最底层的“憎恶（Abomination）”泥潭里。甚至连备受推崇的 Rust，也被归入了“彻底失败（Total failure）”。 ** Go 语言则稳稳地站在了 T1 梯队——“No nonsense（拒绝废话）”。** 这张图看似偏激，却也道出了一些资深开发者的心声。它揭示了 Go 语言最大的魅力：在混沌的软件工程世界里，Go 为我们圈出了一块难得的“舒适区”。 鄙视链解构：极简主义者的“神曲” 这张图从上到下，宛如但丁的《神曲》，描绘了从天堂到地狱的编程世界观。meme图的作者显然是一位厌恶抽象、崇尚掌控机器、鄙视过度设计的硬核程序员。让我们逐层拆解： 塔尖：The one and only（唯一的真神） C。 C 是编程界的拉丁语。它直接映射硬件，没有隐藏的运行时，没有 GC。它是操作系统和驱动的基石，是所有软件的“第一推动力”。在极简主义眼中，只有 C 是纯粹的。 T1 梯队：No nonsense（拒绝废话 / 实干家） Go、OCaml（骆驼）、Lua、ASM（芯片/汇编）、Erlang（红色e）。 这一层是“干活”的语言。它们专注解决问题、务实、没有过度设计。 Go：带 GC 的 C，工业界的实干家。 Lua &#38; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/go-language-comfort-zone-in-contempt-chain-pyramid-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid">本文永久链接</a> &#8211; https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid</p>
<p>大家好，我是Tony Bai。</p>
<p>最近，一张“编程语言分级图”在技术社区引发大家热议。它没有参考 TIOBE 排名，也不看 GitHub Star 数，而是完全基于一种简单粗暴的价值观：<strong>谁最不折腾人？</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/go-language-comfort-zone-in-contempt-chain-pyramid-2.png" alt="" /></p>
<p>在这张金字塔中，C 语言高居神坛（The one and only），而 Java、Python、C++ 被踩在最底层的“憎恶（Abomination）”泥潭里。甚至连备受推崇的 Rust，也被归入了“彻底失败（Total failure）”。</p>
<p>** Go 语言则稳稳地站在了 T1 梯队——“No nonsense（拒绝废话）”。**</p>
<p>这张图看似偏激，却也道出了一些资深开发者的心声。它揭示了 Go 语言最大的魅力：在混沌的软件工程世界里，Go 为我们圈出了一块难得的<strong>“舒适区”</strong>。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/distributed-system-guide-qr.png" alt="img{512x368}" /></p>
<h2>鄙视链解构：极简主义者的“神曲”</h2>
<p>这张图从上到下，宛如但丁的《神曲》，描绘了从天堂到地狱的编程世界观。meme图的作者显然是一位厌恶抽象、崇尚掌控机器、鄙视过度设计的硬核程序员。让我们逐层拆解：</p>
<ol>
<li>
<p><strong>塔尖：The one and only（唯一的真神）</strong></p>
<ul>
<li><strong>C</strong>。</li>
<li>C 是编程界的拉丁语。它直接映射硬件，没有隐藏的运行时，没有 GC。它是操作系统和驱动的基石，是所有软件的“第一推动力”。在极简主义眼中，只有 C 是纯粹的。</li>
</ul>
</li>
<li>
<p><strong>T1 梯队：No nonsense（拒绝废话 / 实干家）</strong></p>
<ul>
<li><strong>Go</strong>、<strong>OCaml</strong>（骆驼）、<strong>Lua</strong>、<strong>ASM</strong>（芯片/汇编）、<strong>Erlang</strong>（红色e）。</li>
<li>这一层是“干活”的语言。它们专注解决问题、务实、没有过度设计。
<ul>
<li><strong>Go</strong>：带 GC 的 C，工业界的实干家。</li>
<li><strong>Lua &amp; ASM</strong>：极致的小巧与极致的控制。</li>
<li><strong>OCaml &amp; Erlang</strong>：虽然是函数式或特定领域，但以实用和高可靠性著称，不搞虚头巴脑的学术概念。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>T2 梯队：Meme languages（网红/小众神教）</strong></p>
<ul>
<li><strong>Odin</strong>、<strong>Jai</strong>（绿色文字）、<strong>HolyC</strong>（黄色十字六边形）、<strong>Elixir</strong>（紫色水滴）、<a href="https://tonybai.com/2024/09/20/htmx-gopher-perfect-partner-for-full-stack"><strong>HTMX</strong></a>（激光眼马）。</li>
<li>我敢保证这一层的很多语言你都没有听过，我也是查了很久才对号入座，这也说明原meme图的作者在编程语言方面涉猎甚广。这一层的语言通常具有“网红”属性，或者带有强烈的“亚文化/宗教”色彩。它们在特定圈子（如独立游戏开发、TempleOS 粉丝）中声量巨大，但在主流工业界存在感稀薄。
<ul>
<li><strong>Odin &amp; Jai</strong>：这两者常被绑定提及，代表了“Handmade”社区（手工造轮子）的价值观。它们试图取代 C++ 用于游戏开发，强调面向数据设计（DOD）。Odin 虽好但小众，Jai 则因长期未公开发布而被调侃为“幻之语言”。</li>
<li><strong>HolyC</strong>：这是“上帝的程序员”Terry Davis 为 TempleOS 创造的语言，在技术宅圈子中是神一般的存在（Meme 之神），但几乎没有实际生产用途。</li>
<li><strong>Elixir &amp; HTMX</strong>：前者是 Erlang VM 上的“时髦文青”，后者是最近在推特上掀起“回归 HTML”运动的网红库。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>T3 梯队：Necessary evil（必要之恶）</strong></p>
<ul>
<li><strong>JS</strong>、<strong>CSS</strong>、<strong>Bash</strong>、<strong>Swift</strong>、<strong>TeX</strong>、<strong>SQL</strong>。</li>
<li>你很讨厌它们，但你离不开它们。因为它们垄断了特定领域（浏览器、终端、苹果生态、论文排版、数据库）。你用它们不是因为爱，而是因为别无选择。</li>
</ul>
</li>
<li>
<p><strong>T4 梯队：Total failure（彻底失败 / 认知灾难）</strong></p>
<ul>
<li><strong>Haskell</strong>、<strong>Rust</strong>（齿轮）、<strong>Zig</strong>（橙色Z）、<strong>Scala</strong>、<strong>Racket</strong>、<strong>Kotlin</strong>。</li>
<li>这是最引战的一层。这里的“失败”指的不是技术失败，而是<strong>“在追求简单的道路上失败了”</strong>。
<ul>
<li><strong>Rust</strong>：为了内存安全或零开销抽象，引入了极其复杂的心智负担（生命周期、编译期计算）。作者认为让程序员当编译器的奴隶是一种失败。</li>
<li><strong>Zig</strong>：虽然标榜是 C 的继承者，但它要求显式管理所有资源（到处传递 Allocator），且引入了强大的 comptime 元编程。在作者看来，这并没有真正降低 C 的心智负担，反而换了一种方式折腾大脑，且至今仍未发布正式版（1.0）。</li>
<li><strong>Haskell &amp; Scala</strong>：学术概念堆砌，Monad 满天飞，导致代码难以阅读和维护。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>底层：Abomination（憎恶 / 不可名状之物）</strong></p>
<ul>
<li><strong>C++</strong>、<strong>C#</strong>、<strong>Java</strong>、<strong>PHP</strong>、<strong>TS</strong>、<strong>Python</strong>、<strong>Ruby</strong>。</li>
<li>地狱最底层。它们犯了<strong>“过度设计”、“臃肿”、“慢”</strong>的原罪。
<ul>
<li><strong>C++</strong>：特性大杂烩，学习曲线陡峭。</li>
<li><strong>Java/C#</strong>：企业级官僚主义，层层叠叠的抽象工厂。</li>
<li><strong>Python/Ruby/PHP</strong>：解释执行慢，动态类型在大型工程中是维护灾难。</li>
</ul>
</li>
</ul>
</li>
</ol>
<h2>神坛之下的第一人：Go 是“带了安全带的 C”</h2>
<p>在这张图中，C 是唯一的“神”。为什么？因为 C 诚实。它与机器直接对话，没有中间商赚差价。但 C 也是危险的，内存泄漏和野指针是每个 C 程序员的噩梦。</p>
<p><strong>Go 为什么紧随其后？</strong></p>
<p>因为 Go 完美地继承了 C 的“诚实”，同时补上了“安全”的短板。</p>
<p>在“No nonsense”这一层，Go 与 Lua（极简脚本）、ASM（汇编）并列。这说明在作者眼中，<strong>Go 的本质不是“简化的 Java”，而是“现代化的 C”。</strong></p>
<ul>
<li><strong>舒适在“透明”</strong>：看到一行 Go 代码，你基本能准确预估它的运行代价。没有隐式类型转换，没有构造函数里的黑魔法。代码写成什么样，逻辑就怎么跑。</li>
<li><strong>舒适在“克制”</strong>：Go 只有 25 个关键字。它拒绝了许多“看起来很酷”的特性（如三元运算符、复杂的元编程），只为了让你在读代码时，不需要在大脑里运行一个复杂的解析器。</li>
</ul>
<p>Go 处于这个位置，是因为它保留了 C 的<strong>掌控感</strong>，同时剔除了 C 的<strong>恐惧感</strong>（内存泄漏、野指针）。</p>
<h2>下层的窒息感：为何 Java 和 C++ 是“憎恶”？</h2>
<p>再往下看，最底层的“Abomination”包含了 C++、Java、Python 等工业界巨头。这并非说它们不能干活，而是说用它们干活<strong>“很不舒服”</strong>。</p>
<p>在这个“极简主义”的评价体系里，这些语言代表了<strong>“过度设计”</strong>的极端：</p>
<ul>
<li><strong>C++ 的认知负担</strong>：你想写个 Hello World，却迷失在模板元编程、右值引用和 20 种初始化方式的迷宫里。</li>
<li><strong>Java 的官僚主义</strong>：AbstractSingletonProxyFactoryBean……你写的不是代码，是填空题。层层叠叠的抽象，让代码与其运行的硬件彻底失联。</li>
</ul>
<p><strong>Go 的舒适区，建立在对这种“复杂性”的拒绝之上。</strong> 在 Go 里，你不需要画 UML 图，不需要背诵设计模式，你只需要关注：数据怎么流，逻辑怎么走。</p>
<h2>侧面的焦虑感：为何 Rust 是“彻底失败”？</h2>
<p>这是最引发争议的一点。Rust 被归为“Total failure”。这显然不是指 Rust 的技术失败，而是指它<strong>违背了“No nonsense”的初衷</strong>。</p>
<p>Rust 为了追求内存安全和零成本抽象，引入了极高的认知成本（生命周期、借用检查）。这导致写 Rust 代码时，开发者往往在与编译器搏斗，而不是在解决业务问题。</p>
<p><strong>Go 的舒适，是一种“妥协的艺术”。</strong></p>
<p>Go 承认：与其让人脑去计算每一个变量的生命周期（Rust 的做法），不如让 CPU 多跑几毫秒来做 GC（Go 的做法）。</p>
<p>在这个算力过剩而人脑算力稀缺的时代，Go 选择了<strong>让人舒服</strong>，而不是让机器舒服。</p>
<h2>小结：拒绝废话，回归本质</h2>
<p>这张图之所以能引起共鸣，是因为它精准地击中了现代软件工程的痛点：<strong>我们花了太多时间在对付语言特性、框架和工具链，却忘了我们最初只是想写程序解决问题。</strong></p>
<p>Go 语言处于 <strong>No nonsense</strong> 这一层，恰恰证明了它的核心价值：</p>
<p>它不追求“纯粹”的完美（像 Haskell），也不追求“极致”的性能（像 Rust），更不追求“大而全”的框架（像 Java）。</p>
<p><strong>Go 只是想让你舒服地、直白地、没有废话地，把代码写出来，然后按时下班。</strong></p>
<p>在当今这个充满焦虑的技术世界里，这难道不是最顶级的“舒适区”吗？^_^</p>
<hr />
<p><strong>你的“鄙视链”排位</strong></p>
<p>这张图虽然偏激，但确实代表了一些人心中的极简主义的审美。<strong>在你心中的编程语言金字塔里，谁是那个“唯一的真神”？谁又是让你痛苦不堪的“不可名状之物”？你认同把 Rust 放在“彻底失败”这一层吗？</strong></p>
<p><strong>欢迎在评论区晒出你的“私房排位表”，或者为你的本命语言辩护！</strong> (请文明交流，勿伤和气~ )</p>
<p><strong>如果这篇文章戳中了你的笑点或痛点，别忘了点个【赞】和【在看】，看看你的朋友圈里有多少“极简主义者”！</strong></p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go 考古：图灵奖得主 Ken Thompson 亲述，Go 语言是如何在 C++ 的“废墟”上诞生的</title>
		<link>https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google/</link>
		<comments>https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google/#comments</comments>
		<pubDate>Mon, 05 Jan 2026 04:02:10 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[ANSIC]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C11]]></category>
		<category><![CDATA[CompilationSpeed]]></category>
		<category><![CDATA[Complexity]]></category>
		<category><![CDATA[DependencyManagement]]></category>
		<category><![CDATA[EngineeringPragmatism]]></category>
		<category><![CDATA[EngineeringScale]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoModules]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[HeaderFiles]]></category>
		<category><![CDATA[KenThompson]]></category>
		<category><![CDATA[monorepo]]></category>
		<category><![CDATA[RobertGriesemer]]></category>
		<category><![CDATA[RobPike]]></category>
		<category><![CDATA[simplicity]]></category>
		<category><![CDATA[standardlibrary]]></category>
		<category><![CDATA[TuringAward]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Unix之父]]></category>
		<category><![CDATA[依赖管理]]></category>
		<category><![CDATA[图灵奖]]></category>
		<category><![CDATA[复杂性]]></category>
		<category><![CDATA[头文件]]></category>
		<category><![CDATA[工程实用主义]]></category>
		<category><![CDATA[工程规模]]></category>
		<category><![CDATA[标准库]]></category>
		<category><![CDATA[研发效能]]></category>
		<category><![CDATA[简洁]]></category>
		<category><![CDATA[编译速度]]></category>
		<category><![CDATA[贝尔实验室]]></category>
		<category><![CDATA[软件工程]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5673</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google. 大家好，我是Tony Bai。 为什么 Go 语言极其痛恨复杂的特性？为什么 Go 如此执着于编译速度？我们常说 Go 是一门“工程实用主义”的语言，它的设计哲学是“少即是多”。但你是否想过，这种近乎偏执的简洁，究竟是为了对抗什么？ 这一切的答案，都藏在 2007 年 Google 内部的一场 C++ 标准委员会汇报演讲中。当图灵奖得主 Ken Thompson 发现自己竟然“看不懂”新的 C++ 特性时，一颗变革的种子就此埋下。 最近，我重温了这段 Ken Thompson（Unix 之父、Go 语言联合创始人）的珍贵访谈。在访谈中，老爷子毫无保留地讲述了 Go 语言诞生的前因后果。 故事的起点，并非某次高瞻远瞩的战略规划，而是一次“听不懂”的 C++ 技术分享，以及 Google 内部那令人绝望的 45 分钟编译时间。 本文基于 Ken Thompson 的访谈实录，带你回到那个决定性的瞬间，还原 Go 语言诞生背后的真实故事。 压死骆驼的最后一根稻草：C++ 的“新特性” 故事发生在 2007 年左右。当时，Google 内部有一位 C++ 标准委员会（ANSI C++）的代表。 有一天，这位代表刚开完标准会议回来，在 Google [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/how-ken-thompson-developed-go-language-at-google-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google">本文永久链接</a> &#8211; https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google.</p>
<p>大家好，我是Tony Bai。</p>
<p>为什么 Go 语言极其痛恨复杂的特性？为什么 Go 如此执着于编译速度？我们常说 Go 是一门“工程实用主义”的语言，它的设计哲学是“少即是多”。但你是否想过，这种近乎偏执的简洁，究竟是为了对抗什么？</p>
<p>这一切的答案，都藏在 2007 年 Google 内部的一场 C++ 标准委员会汇报演讲中。当图灵奖得主 Ken Thompson 发现自己竟然“看不懂”新的 C++ 特性时，一颗变革的种子就此埋下。</p>
<p>最近，我重温了这段 <strong>Ken Thompson</strong>（Unix 之父、Go 语言联合创始人）的<a href="https://www.youtube.com/watch?v=NTrAISNdf70">珍贵访谈</a>。在访谈中，老爷子毫无保留地讲述了 Go 语言诞生的前因后果。 故事的起点，并非某次高瞻远瞩的战略规划，而是一次<strong>“听不懂”</strong>的 C++ 技术分享，以及 Google 内部那令人绝望的 45 分钟编译时间。</p>
<p>本文基于 Ken Thompson 的访谈实录，带你回到那个决定性的瞬间，还原 Go 语言诞生背后的真实故事。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>压死骆驼的最后一根稻草：C++ 的“新特性”</h2>
<p>故事发生在 2007 年左右。当时，Google 内部有一位 C++ 标准委员会（ANSI C++）的代表。</p>
<p>有一天，这位代表刚开完标准会议回来，在 Google 内部做了一场技术分享，向大家介绍 C++ 即将引入的“新特性”（注：推测是指当时的 C++0x，即后来的 C++11 草案）。</p>
<p>Ken Thompson 就在台下。作为发明了 B 语言（C 语言的前身）并重写了 Unix 内核的宗师级人物，他在听完这场一小时的密集分享后，感受到的不是兴奋，而是<strong>困惑</strong>。</p>
<blockquote>
<p>“这所谓的‘新东西’，在我看来比语言本身还要大。”<br />
  “那些关于指针的形式，除了指针之外还意味着其他东西……我告诉你，我没听懂。”</p>
</blockquote>
<p>想象一下，连 <strong>Ken Thompson</strong> 都直言自己“没听懂” C++ 的新特性，这说明了什么？</p>
<p>在他看来，这些所谓的“改进”，只是在不断地堆砌复杂度。这场演讲成为了催化剂。Ken 回到办公室，找到了同样对现状不满的 <strong>Robert Griesemer</strong> 和 <strong>Rob Pike</strong>。</p>
<p>Ken 的不满在于语言的<strong>过度复杂</strong>，而 Rob Pike 的痛点则在于 Google 庞大的<strong>工程规模</strong>。</p>
<h2>Google 的工程噩梦：10 行代码与 500 万行编译</h2>
<p>当时的 Google 面临着一个前所未有的工程挑战：<strong>Monorepo（单一代码仓库）的膨胀</strong>。</p>
<p>Ken 在访谈中描述了一个令人窒息的场景：</p>
<blockquote>
<p>“在 Google，你可以从任何源文件中引用库。你可能只写了一个 <strong>10 行</strong>的程序，但最终却需要处理 <strong>500 万行</strong>的编译量。”</p>
</blockquote>
<p>这不是夸张。由于缺乏严格的依赖管理和可见性控制，一个微小的依赖引入，可能会像滚雪球一样，将底层的庞大库（如 Protocol Buffers、基础库等）全部卷入编译过程。</p>
<p>更糟糕的是，头文件（Header files）的包含机制导致了严重的重复劳动。</p>
<blockquote>
<p>“像最简单的库，可能会被加载和检查<strong>成百上千次</strong>。”</p>
</blockquote>
<p>虽然 Google 拥有当时世界上最强大的分布式编译集群（成百上千个 CPU 并行工作），虽然工程师们发明了各种缓存机制和 ifdef 技巧来避免重复包含，但物理定律是不可违背的。</p>
<p><strong>编译一个简单的程序，需要等待 15 分钟，甚至 45 分钟。</strong></p>
<p>Rob Pike 对此深恶痛绝。这种低效的开发循环，正在扼杀 Google 工程师的创造力。</p>
<h2>三个火枪手与“一票否决权”</h2>
<p>于是，在 Google 的一间办公室里，Ken Thompson、Rob Pike 和 Robert Griesemer 聚在了一起。</p>
<p>Ken 说出了那句改变历史的话：</p>
<p><strong>“What are we going to do about it? Let&#8217;s write a language.”（我们该怎么办？让我们写个语言吧。）</strong></p>
<p>这是一个完美的互补组合：</p>
<ul>
<li><strong>Rob Pike</strong>：深刻理解 Google 的工程痛点（依赖地狱、构建速度、大规模协作）。</li>
<li><strong>Ken Thompson</strong>：拥有深厚的语言和编译器构建历史。</li>
<li><strong>Robert Griesemer</strong>：被称为“瑞士军刀般的语言专家”，熟悉理论上存在的所有语言特性，是团队的理论百科全书。</li>
</ul>
<p>在设计 Go 语言时，他们制定了一个残酷但有效的规则：<strong>全员同意原则</strong>。</p>
<blockquote>
<p>“我们必须都同意某个特性，它才能被加入。仅仅因为‘我想要这个特性’是不够的。”</p>
</blockquote>
<p>这个规则过滤掉了绝大多数“花哨但非必要”的特性。Go 语言之所以能保持如此干净、紧凑，正是因为这三位创始人在最初就把住了关口。</p>
<h2>遗产与未来</h2>
<p>Ken Thompson 在 Go 语言开源并走上正轨后，逐渐淡出了核心开发。但他对 Go 的后续发展给予了极高的评价，特别是对标准库。</p>
<blockquote>
<p>“在我离开后，后来的人写了一套<strong>极其出色（magnificent）</strong>的标准库。”</p>
</blockquote>
<p>那之后，这位图灵奖得主在 Google 的工作中，几乎<strong>只使用 Go 语言</strong>，并且几乎<strong>只使用标准库</strong>。</p>
<p>他对 Go 的评价朴实无华：</p>
<blockquote>
<p>“它很简单。任何人都可以在一小时内学会它。当你写代码时，它运行得足够快，给你即时的反馈。”</p>
</blockquote>
<h2>小结</h2>
<p>重读这段访谈，我们就能理解：</p>
<ul>
<li>为什么 Go 甚至不愿意引入三元运算符？</li>
<li>为什么 Go 的依赖管理（Go Modules）对版本控制如此严格？</li>
<li>为什么 Go 编译器宁愿牺牲一些优化也要保证极快的编译速度？</li>
</ul>
<p>因为 Go 从诞生的那一刻起，就是为了<strong>反抗 C++ 的过度复杂</strong>，和<strong>解决 Google 级别的工程规模问题</strong>。</p>
<p>它不是为了在编程语言理论上创新，而是为了让像 Ken Thompson 和 Rob Pike 这样的工程师，不再需要在编译期等待 45 分钟，不再需要去猜测一段代码到底在通过指针玩什么花样。</p>
<p><strong>Go 的诞生，是工程实用主义对无节制复杂性的一次伟大胜利。</strong></p>
<p>资料链接：https://www.youtube.com/watch?v=NTrAISNdf70</p>
<hr />
<p><strong>你的“编译等待”时刻</strong></p>
<p>45分钟的编译时间催生了Go语言。<strong>在你的开发生涯中，是否也经历过类似的“编译噩梦”？或者，你是否也曾被某些语言的“过度复杂”劝退过？</strong></p>
<p><strong>欢迎在评论区分享你的故事！</strong> 让我们一起致敬那些为了“简单”而努力的先驱。</p>
<p><strong>如果这篇文章让你对Go语言的设计哲学有了更深的理解，别忘了点个【赞】和【在看】，并转发给身边还在忍受漫长编译的朋友！</strong></p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
