我们经常在软件和硬件领域听到兼容性这个词,兼容性还经常被加上向前、前后、向上、向下这样的前缀,一不留神就弄得晕头转向。
兼容性(compatibility)是指硬件之间、软件之间或是软硬件组合系统之间的相互协调工作的程度。
- 向前兼容(Forward Compatibility):指老的版本的软/硬件可以使用新版本的软/硬件产生的数据。“Forward”一词在这里有“未来”的意思,我认为翻译成“向未来”更加形象一些,不知是哪位先人翻译成了“向前”,很多时候汉语中这个“向前”是指“从前”还是“之后”是有歧义的。
- 向上兼容(Upward Compatibility):与向前兼容相同。
- 向后兼容(Backward Compatibility):指新的版本的软/硬件可以使用老版本的软/硬件产生的数据。
- 向下兼容(Downward Compatibility):与向后兼容相同。
举几个例子:
- Intel的x86指令集CPU是向后兼容的,因为新款CPU依然可以运行老版本的软件。Intel保证老版本CPU有的指令集新版本一定还保留着,这种只增加不删除的策略,保证了我们换CPU时,不需要更换很多软件。
- Windows操作系统是向后兼容的,大部分针对Windows 7开发的软件依然可以很好的运行在Windows 10下。Windows通过保证系统API的稳定不变,只增加不删除的策略,保证了老系统上开发的软件可以很容易的在新系统上运行。
- CD光盘是向前兼容的,CD光盘既可以被老旧的CD光驱读取,也可以被新的DVD光驱读取。
- 立体声FM广播是向前兼容,它既可以被单声道的老式收音机播放,但没有立体声效果,也可以被新式的立体声收音机播放,具有立体声效果。
- 用于设计网页的HTML语言是向前兼容的,当浏览器遇到新版本的HTML语言时,可以简单的忽略不支持的标签,仍然可以正常显示。
- 比特币区块链系统是向前兼容的,老版本的节点依然可以验证新版本产生的区块,这也是比特币区块链不会产生永久分叉的基础。