为什么操作系统会一代比一代慢?——Raymond Chen《Windows启示录》(The Old New Things)读书札记
因为为了兼容旧版本的程序(backwards compatibility)。
为什么要这样呢?因为Win API有一些设计失误的地方:没错,Win API也有设计失误的地方。
比如,一个消息A会引起不相关的另一个消息B。在新版本的Windows中,这个问题被修复了,但是有的老程序用了错误用法,在需要捕获消息A的时候选择捕获消息B——这就出问题了,因为新版本修复了这个问题。(所以,不要用那些undocumentated tricks/APIs....)
为了让这个老程序运行,就要弄一个补丁,在老程序运行的时候让这个消息正常。
久而久之,就越堆越多了……
除了Win API的设计失误,其实更多的是程序的不当使用。例如,明明要用API来完成的工作,却选择hack本地文件——而这个本地文件在之后的Windows里面被删除了,hack失败,程序失败。
这种事情,Windows也要为它买单……晕倒
这本书实在是非常有趣。推荐大家来读。
话说回来,Windows的前后兼容性实在是太好了。Windows 3.1时代的程序能在将近三十年后的Windows 10上运行,试问哪个系统能做到?!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义