用最专业的眼光看待互联网
立即咨询本文来自微信公众号: 宇众不同的露萱 ,作者:宇众不同的露萱,原文标题:《历史包袱变成了最大的护城河:为什么 Windows 保留 Win32 API?》 2026年5月,微软Azure首席技术官Mark Russinovich对着镜头说了一句话: "90年代有谁会预料到,Win32在2026年仍然是一等API?我可以安全地回答——没有。" 他顿了顿,又补了一句: "2026年应该有飞行汽车了,而不是Win32。" 这句话在开发者社区炸了锅。 不是因为他说错了。 而是因为,一个市值三万亿美元的公司,它的首席技术官,亲口承认: 我们花了三十年,没能换掉自己最老的那块地基。 你有没有想过,为什么? 一个从DEC挖来的人 故事要从1988年讲起。 那一年,比尔·盖茨做了一件当时很多人看不懂的事:他从DEC公司挖走了Dave Cutler。 Cutler是谁? VMS操作系统的首席架构师。那个年代,VMS是企业级操作系统的天花板。抢占式多任务、虚拟内存、对称多处理——这些概念在80年代末,绝大多数程序员听都没听过。 盖茨要他做一件事: 给微软写一个"真正的"操作系统。 注意,是"真正的"。 因为当时的Windows 3.x,说白了,只是DOS上面套了一层图形壳子。没有内存保护,没有真正的多任务,一个程序崩溃,整个系统跟着死。 Cutler带了二十多个DEC的老部下,在雷德蒙德扎了五年。 花了1.5亿美元。 1993年,Windows NT 3.1发布。 Win32 API,就是在那一刻诞生的。 它本来应该被替换掉 事情真的是这样吗? Win32从设计之初,就不是一个"永恒方案"。 Cutler的团队很清楚,这套C风格的API笨重、啰嗦、充满历史包袱。光是创建一个窗口,你就得写几十行模板代码。 微软自己比谁都清楚这一点。 所以从1998年开始,他们启动了一轮又一轮的"替代计划": MFC,封装Win32,让C++程序员少写点代码。 WinForms,.NET时代的GUI方案。 WPF,号称"下一代Windows界面"。 Silverlight,跨平台富客户端。 WinRT,Windows 8的全新运行时。 UWP,"通用Windows平台",微软押上全部身家的未来。 你数数,六次。 二十年间,微软至少六次试图埋葬Win32。 结果呢? 全部失败。 MFC成了遗产代码的代名词。Silverlight 2021年彻底停止支持。UWP?连微软自己的应用都在往回迁。 如果你是当年的工程师,你会怎么选? 你面前有两条路: 一条,花三年重写所有东西,赌用户愿意跟着你迁移。 另一条,在老地基上继续盖楼,丑是丑了点,但不会塌。 微软选了六次第一条路。 市场替它选了六次第二条。 真正的问题不是技术 看到这里,也许你会觉得: 是不是Win32设计得太好了?好到不需要替换? 不是。 Win32的设计有很多问题。调用约定混乱,ANSI和Unicode双版本并存,错误处理靠返回值而不是异常,文档里到处是"此函数已弃用,但仍可用"。 Raymond Chen——那个在微软干了三十多年、写了"The Old New Thing"博客的传奇工程师——讲过无数这样的故事: 某个游戏在Windows 95上依赖了一个未定义行为。 到了Windows XP,团队修了这个行为。 游戏崩了。 用户投诉信像雪片一样飞来。 最后怎么办? Windows团队加了一段特殊代码:如果检测到是这个游戏的进程,就恢复那个"错误"的行为。 这不是段子。这是真实发生的工程决策。 真正的问题来了: 为什么微软不能像苹果那样,说一句"旧应用不兼容了,大家重新适配"? 答案只有一个词: 生态。 一份三十年的合同 1995年,Windows 95发布。 那一年,全球有几十万开发者用Win32 API写软件。银行系统、医院管理系统、工厂控制软件、会计软件、ERP…… 这些软件,不是写一次就扔的。 一家德国工厂1997年用Win32写的产线控制系统,到2020年还在跑。 一家日本银行2001年开发的柜台终端程序,到2025年还在用。 它们不会重写。 因为重写的成本,远远超过继续运行的成本。 因为写这些程序的人,可能已经退休了。 因为文档可能已经丢了。 因为没有人敢碰一个"正在正常运行"的系统。 Windows的兼容性,不是一项技术特性。 它是一份合同。 微软对全世界几百万开发者说:你在我这里写的代码,我保证它十年后、二十年后、三十年后还能跑。 这份合同,没有写在任何法律文件里。 但它比任何法律文件都有约束力。 因为一旦撕毁,开发者就会离开。 而开发者一旦离开,Windows就不再是Windows。 代价是什么? 如果故事到这里结束,它就不会改变世界。 代价是巨大的。 Windows 11的安装包里,藏着大量