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

原文地址:https://www.cnblogs.com/ageane/p/windows.html