如果你在 Windows 上做过开发,大概率经历过这种灵魂拷问:“刚出了个新框架,我到底学不学?不学跟不上时代,学了过两年就成废案被官方无情抛弃了!”

当一个操作系统连“我该怎么做 UI”这种最基础的问题,都无法在十秒内给出清晰明确的答案时,它其实已经辜负了所有开发者。

最近,前微软技术研究员、Office AI 架构师 Jeffrey Snover 发了一篇火力全开的长文,以亲历者的视角,扒开了过去 30 年 Windows GUI(图形用户界面)技术演进的陈年旧账。他直言不讳地指出:一次次技术框架的兴衰根本不是因为技术不行,纯粹是由团队内斗、画大饼和商业乱折腾导致的一场灾难。可以说这就是“一群最聪明的人,做出了愚蠢的决定”。

🌟 曾经,它也是有“唯一真神”的

把时间拨回三十多年前,Windows 在开发这件事上,其实给出过极其明确且权威的答案。

1988 年,一本 852 页的《Programming Windows》横空出世,以 C 语言为基础把 Win16 API 讲得明明白白。随后的 Win32 时代进一步发扬光大。那时的开发思维简单、直接且强大,你掌握它,就能搞定这台电脑上的一切。

这就像是物理学里的基础理论“F=ma”一样好用——一个操作系统、一套 API、一种语言、一本书,没有一堆委员会反复拉扯,开发者学一次就能用到老。

但好景不长,从 1992 年开始,微软就开启了“把系统越搞越复杂”之路。他们在原本好用的 Win32 上套了一层又一层的新概念:MFC、OLE、COM、ActiveX……微软渐渐不再给出一个完整的技术体系,而是像丢零件一样让开发者自己去拼湊“科学怪人”。

⚔️ 神仙打架:长达十三年的内部“修罗场”

到了 2003 年,微软在开发者大会上画了一个旷世巨饼——Longhorn(也就是后来著名的 Vista 操作系统的前身)。其中一个核心支柱是极其惊艳的矢量 UI 子系统 Avalon(即后来的 WPF),它基于 GPU 加速的画面效果让很多开发者热血沸腾。

大方向很美,但代码写得“像一头猪”一样笨重。2004 年初,微软高层直接拍板:全部推倒重来!

重置计划中,高层下达了一条严苛的内部铁腕命令:Windows 核心系统里绝对禁止使用包含 WPF 在内的任何托管代码,统统给我用 C++!

这一决定,直接让 Windows 开发团队和搞 .NET 的团队结下了血海深仇,开启了长达十三年的“体制内内战”。这场互相倾轧的神仙打架带来了恶劣的后果:明明很好用的 WPF 被自家的 Windows 外壳团队冷落排挤,为之后的无数乱象埋下了巨大的隐患。

🤡 把开发者当“弃子”的诡异转向

你以为只有内斗?微软在商业战略上“翻脸不认人”的本事也丝毫不弱。

2007年前后,为了狙击浏览器里的 Flash,微软推出了精简优雅的 Silverlight。它一度成了跨平台富客户端的明日之星,更是当时 Windows Phone 移动端的技术地基,大量企业级开发者把身家性命全押在了这套框架上。

然而在 2010 年的开发者大会上,高管突然改口,暗示全面拥抱 HTML5 才是新方向,直接给 Silverlight 判了死缓。最尴尬的是,事先连 Silverlight 自己团队的人都不知情,台下坐在场子里的核心开发者们就这样莫名其妙地成了“弃子”。技术本身毫不逊色,却倒在了莫名其妙的高层宣发中。

到了 Win 8 时代,由于移动和平板端带来的巨大焦虑,微软急急忙忙推出了主打触控但疯狂排斥 .NET 体系的原生 WinRT 框架。在当年的宣发上,展现了一场极致的荒诞喜剧:

官方一会儿说“未来属于 WinRT”,一会儿说“HTML+JS 是一等公民”,接着大喊“C++ 强势回归”,最后还不忘安抚“你的老 WPF 也能凑合跑”……这哪里是技术指导?这踏马是**养蛊大逃杀里的“饥饿游戏”**啊!面对这种同时有六个分支向你招手的离谱场面,企业开发者直接扭头跑路。

🦓 17 种路线混战的“疯狂动物园”

在过去的 14 年里,微软围绕开发平台进行了丧心病狂的 14 次大转向。《Programming Windows》的老爷子作者在写完第六版(正好到 Windows 8 前后)之后,被这种发癫式的更新节奏折磨得果断停更:毁灭吧,真写不下来了。

UWP(通用 Windows 平台)喊着“一次编写,多端运行”,结果自家的移动业务死透了,连微软亲儿子 Office 都懒得用;不得已后来又搞出个 Project Reunion 试图打补丁继续续命。

回看今天的 Windows 开发生态,你想写个桌面应用,会面临多达 17 种框架路径、5 种编程语言、3 种渲染思路 的究极缝合怪。更讽刺的是,如今在 Windows 上部署最广泛、最吃香的桌面 GUI 技术,压根不是微软自己鼓捣的那堆玩意儿,而是第三方的 Electron(连微软自家的 VS Code 和大量当红应用都在用)。

【编辑观察】 这三十年 Windows GUI 的演进史可以说是活生生的一部“反面教材”:很多优秀的技术架构其实本可以成为划时代的神作,但最终都死于大厂内部各立山头的政治博弈、过于看重发布会噱头的“半成品宣发”,以及朝令夕改不顾开发者死活的战略转向。如今看到越来越多的游戏开发商和软件产品都自建引擎或重度依赖开源跨平台组件,大概真的是被微软的反复无常给折腾出 PTSD 了吧!