泛型的三种命运:为什么同一个概念在不同语言中走向了截然不同的实现道路

一个概念,三种命运 1975年,Robin Milner在ML语言中首次引入了参数化多态(parametric polymorphism)——这便是我们今天所称"泛型"的理论源头。半个世纪过去,这个概念已经渗透进几乎所有主流编程语言。然而,当你打开C++、Java、Go、Rust、C#的编译器源码,会发现同一个"泛型"概念在这些语言中竟然演化出了截然不同的实现策略。 ...

16 min · 7926 words

热重载:为什么修改代码不需要重启程序?

按下 Ctrl+S,屏幕上的界面几乎瞬间更新——没有重新编译的等待,没有应用重启的闪烁,甚至当前填写的表单数据都还在。这种被称为「热重载」的能力,已经成为现代开发体验的标配。但它究竟是如何工作的?为什么有些语言能轻松实现,而有些却举步维艰? ...

12 min · 5707 words

大模型代码生成能力的边界与突破——从语法理解到语义推理的技术解析

2022年末,GitHub Copilot的月活用户突破150万,Stack Overflow的流量却在一年内下跌了35%。代码生成大模型正在重塑程序员的日常工作方式。然而,当开发者们习惯性地将需求抛给AI,期待一段可运行的代码时,一个更深层的问题常常被忽略:这些模型究竟是在"理解"代码,还是仅仅在进行某种高级的模式匹配? ...

14 min · 6978 words

gRPC如何重塑微服务通信:从Google Stubby到生产实践的十年技术演进

2015年,Netflix的Runtime Platform团队面临一个棘手问题:他们用于服务间通信的自研HTTP/1.1技术栈在规模化场景下开始显现瓶颈。创建一个服务客户端需要2-3周,每个客户端都需要数百行手写的缓存管理代码,而API定义的缺失让服务的发现和理解变得异常困难。 ...

15 min · 7306 words

从拜占庭到区块链:分布式共识如何用四十年解决信任问题

1978年,Leslie Lamport在研究分布式系统时说过一句著名的话:“分布式系统就是这样一个系统:在这个系统中,一台你甚至不知道其存在的计算机的故障,可能会让你的计算机变得不可用。“三十年后,一个化名中本聪的人(或团队)用一篇九页的白皮书,给出了这个问题的解法。 ...

16 min · 7631 words

修改一个知识为何让千亿参数模型崩溃

2022年,Kevin Meng等人在NeurIPS发表了题为"Locating and Editing Factual Associations in GPT"的论文,提出了ROME(Rank-One Model Editing)方法。研究者们声称,他们可以精确定位模型中存储特定事实的位置,并通过数学手段直接修改权重来更新知识。这篇论文引起了巨大轰动——人们第一次看到了不重新训练就能更新模型知识的希望。 ...

20 min · 9890 words

梯度同步:为什么分布式训练卡在通信瓶颈上二十年无法突破?

当你在8张GPU上训练一个7B参数模型需要3天,扩展到128张GPU时却发现只快了8倍而不是16倍——剩下的一半性能去哪了?答案藏在每一步迭代中都会发生却极少被提及的操作里:梯度同步。 ...

17 min · 8129 words