为什么Windows的兼容性这么强大,到底用了什么技术?

做过windows下的开发 , 用户态和内核态都做过 。 windows的兼容性确实相较于其他平台来说有点过于变态了 。 曾经网上找过一个97年的(好像)象棋软件 , 在最新的win10运行依然毫无问题(快二十年) 。 至于为何windows的兼容性如此变态 , 我想有以下几个原因:
为什么Windows的兼容性这么强大,到底用了什么技术?
文章图片
第一 , 微软被逼的:windows不仅仅是一个系统 , 而是一个生态 , 微软的windows只是这个生态里面的核心一环而已(掌握着标准的制定) , 在这个生态里面还有大量硬件厂商(包括cpu、主板、网卡……)和大量的应用厂商(杀软、办公、工业……);如果你是微软 , 要协调这么多的厂商 , 是你 , 你也会把兼容性做到极致 , 否则新系统一发布 , 问题一大堆 , 同时微软也深深的意识到 , 如果没有兼容 , 就会没有微软;这点可以参考牙膏厂的cpu , 蹩脚的32位为了兼容16位 , 然后amd的64位又要去兼容32位 , 很别扭的设计;
为什么Windows的兼容性这么强大,到底用了什么技术?
文章图片
前面说了主观原因 , 这里说一下windows是怎么做到的 , 我仅从api的角度来说(因为api是一个系统和另外一个系统沟通的标准语言) , windows的api(不管是内核层还是应用层)里面充斥了大量的基本不会用到的兼容性api , 而且windows本身api的设计也是有良好的兼容性考虑 , 比如很多struct里面第一个字段都是cbsize , 用来标识这个struct有多长 , 一旦将来进行字段扩展势必会改变cbsize , 那么api底层实现就可以通过这个字段来做不同的兼容性处理;
为什么Windows的兼容性这么强大,到底用了什么技术?
文章图片
为什么Windows的兼容性这么强大,到底用了什么技术?】前面说了生态和api , 这里再说一下微软的文档 , 文档是链接海量开发者和系统核心的最重要的渠道 , 微软的文档是我看过最牛批的 , 基本上能涉及到开发的方方面面 , 还有大量的示例 , 我经常跟其他兄弟说的就是 , 如果你想搞好windows开发 , 就把msdn里面的文档好好读就可以了 , 别去找什么csdn(这里没有贬csdn哈)那些现成的代码 , 文档是官网一手的 , 而且做的非常好 , 何必舍本逐末呢;
为什么Windows的兼容性这么强大,到底用了什么技术?
文章图片
最后 , 我想说的就是 , 本人现在从事国产化替代相关的工作 , 现在网络充斥着大量为国产化鼓掌的言语 , 当然我本人是坚定支持核心技术国产化替代的 , 但不得不说 , 任重而道远 , 不管是国家相关主管单位还是我们的开发者 , 跟上国家战略是要的 , 但还是要沉下心来 , 好好设计