微软交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 119|回复: 20

向前兼容与向后兼容

[复制链接]

2

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-9-21 05:36:49 | 显示全部楼层 |阅读模式
我们经常在软件和硬件领域听到兼容性这个词,兼容性还经常被加上向前、前后、向上、向下这样的前缀,一不留神就弄得晕头转向。
兼容性(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语言时,可以简单的忽略不支持的标签,仍然可以正常显示。
  • 比特币区块链系统是向前兼容的,老版本的节点依然可以验证新版本产生的区块,这也是比特币区块链不会产生永久分叉的基础。

参考资料:
Forward_compatibility
Backward_compatibility
向前兼容和向后兼容
回复

使用道具 举报

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 05:37:18 | 显示全部楼层
多年的一个混淆搞清了
回复

使用道具 举报

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 05:37:40 | 显示全部楼层
关于汉语歧义,上高中时候被坑过一把,老师上课讲“静电荷”,百思不得其解,遂问之,原来是“净电荷”,秒懂。
回复

使用道具 举报

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-9-21 05:37:55 | 显示全部楼层
比特币社区就这一点似乎也有过争议:
https://twitter.com/justicemate/status/988048600834850816
Backwards vs. Forwards Compatibility • r/Bitcoin
Mike Hearn、deadalnix等开发者认为比特币肯定是要做到向后兼容的,因为新版软件总是需要正确验证老版本的区块;
至于Core宣传的“SW是软分叉,可以做到向后兼容,让老版本软件仍然可以工作”,他们觉得是个巨大的槽点,因为Core似乎把术语用错了,应该叫“向前兼容”才对:软分叉要达成的效果是“新版软件生成的区块(数据)不会被老版本软件拒绝”。
但是,要实现这一点,肯定需要用到“欺骗”的手段,毕竟老版本软件不可能知道新的交易格式等信息,无法真正执行验证。
回复

使用道具 举报

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-9-21 05:38:27 | 显示全部楼层
比特币是个去中心化的系统,并没有什么东西强制约束矿工,保证他们一定会跑升级后的软件。
所以,我也觉得软分叉的好处是显而易见的,那就是尽量让升级变得平滑,这样才可以最大程度地避免链分叉、双花等负面的事件发生。
其实,上面对Core的吐槽我还没找到真正的出处……反正我印象里,Core和其他开发组之间的关系并不和谐。
回复

使用道具 举报

0

主题

6

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 05:38:37 | 显示全部楼层
这个在汉语里面最好还是叫“向下兼容”和“向上兼容”。如果一定要译成“前后”的话,那其实本应译成“后退兼容”和“前进兼容”更合理一些,或者叫“回溯兼容”和“前瞻兼容”。
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 05:39:27 | 显示全部楼层
依然涉及到前后定义的问题,这个真的很难顾名思义,只能是习惯成自然。
回复

使用道具 举报

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 05:39:39 | 显示全部楼层
“进退”应该没人会理解错,“进”肯定是向未来,“退”肯定是向过去。所以我说用“前进兼容”和“后退兼容”这样会好一点点。
当然最好还是彻底避免前后,使用“向下兼容”和“向上兼容”。
回复

使用道具 举报

2

主题

4

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-9-21 05:40:23 | 显示全部楼层
汉语的博大精深 导致 一个先前兼容 也会容易混淆
回复

使用道具 举报

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-9-21 05:41:05 | 显示全部楼层
直译有一个问题, 英语的"前后"在时间和空间上统一, 而汉语却是相反. 比如forward在空间上指前进, 在时间上指未来. 但是汉语中的"前"在空间上指前进, 在时间上却指过去.

所以, Backward Compatibility应当翻译成向前兼容, Forward Compatibility应当翻译成向后兼容. 更符合中文习惯和直觉.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微软交流社区

GMT+8, 2025-1-9 03:53 , Processed in 0.089467 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表