为什么操作系统会一代比一代慢?——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上运行,试问哪个系统能做到?!

posted @   天天2023  阅读(261)  评论(0编辑  收藏  举报
编辑推荐:
· .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 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示