什么是向前兼容与向后兼容?
你听说过向前兼容、向后兼容、向上兼容与向下兼容吗?不得不说这是一组魔性的词汇,从中文的解释上来讲完全讲不通,就拿向前向后来讲,我们通常理解为“前”指的是曾经,而“后”则代表未来,但是在这里却完全不是这样。
忘记这些概念,想象两个极端立场:软件处于较低版本还 是较高版本。
我的软件太老了,需要考虑什么?
需要考虑向前兼容(Forward compatibility)或是向上兼容(Upward Compatible),我们需要解决的核心问题是在新系统中还能否运行老软件,软件越是庞大,越需要做到向上兼容,否则改造成本非常大。
举一个例子,你在 Word 2007 中编写的文档,是可以使用 Word 2010 或者更高版本打开的,因为它做到了向上兼容。
我的软件太新了,需要考虑什么?
需要考虑向后兼容(Backward Compatibility)或是向下兼容(Downward Compatible),我们需要解决的核心问题是在老系统中还能否运行新软件,当软件无法做到向后兼容,那必然会有所舍得,会带来许多分裂的后果,比如 Python3 对于 Python2 的冲击就持续了好几年大家才陆陆续续的迁移到新版本中,但时至今日还有不小一部分用户依然在跑着 Python2 的程序。
还是刚刚那个例子,我们用 Word 2010 打开了从 Word 2007 产出的文档,就足以说明新版本的 Word 在设计之处就考虑到了向下兼容。
其他
为了避免沟通 gap,以后我都只会用向上、向下兼容来描述一些特定的场景问题,但说到了兼容,突然脑海里浮现了一句话:“爱始终是一场双向奔赴的过程”。