标准:促进实体间的交互
在18世纪,枪械是由熟练的枪匠制造的; 每一把这样制作的枪都是独一无二的物件。 这使得枪械非常昂贵,而且一旦损坏很难修理, 因为唯一的修复方式是将其送回枪匠那里, 由他亲自以手工修复他的创作。
因此,在18世纪中叶, 一位名叫Honoré LeBlanc的法国枪匠提出了制定标准化枪械部件的建议。 标准化的枪械部件可以相互配合使用,而不管它们的制造者是谁; 这样,如果一把枪损坏了,可以通过用新的零件替换有问题的零件来轻松修复。
虽然Honoré LeBlanc很久以前就去世了, 他的标准化理念依然存在, 并成为现代软件开发的基石之一。
在本节中,我们将讨论标准化的理念及其重要性。
什么是标准?
粗略地说,标准是多个实体共享的抽象。 这个定义包含以下两个部分:
- 抽象是什么?
- 抽象适用于哪些实体?
标准非常重要,因为:
- 它们为多个实体之间提供了标准化的互操作方式, 只要互动符合标准,就“保证能正常工作”;
- 当设计某个东西时,依赖“抽象标准”比依赖“具体东西”更好, 因为前者适用于符合标准的任何东西,而后者只适用于特定的东西。
让我们通过一个示例更好地理解这个概念。
标准的一个例子
一个显著的标准示例是指令集架构(ISA)。 ISA基本上是计算机的一个抽象, 它定义了计算机必须支持的操作,例如加法和减法等数学运算。
前面关于标准的定义适用于ISA:
- 抽象是什么? 抽象是由ISA定义的一组必须支持的操作。
- 抽象适用于哪些实体? 标准(抽象)适用于所有支持ISA定义的操作的计算机。
这为什么重要呢? 你是否想知道为什么软件应用程序可以在不同的计算机上运行, 这些计算机由不同的供应商制造,并配备不同的CPU? 每台计算机都是不同的,旧的和新的计算机可能没有相同的硬件, 那么为什么相同的应用程序可以在它们上面运行?
答案是,软件应用程序不依赖于特定的硬件; 而是依赖于某种ISA。 也就是说,它只使用ISA定义的操作。 同时,不同的计算机可以实现(即支持ISA定义的指令)相同的ISA。 通过这种方式,只要计算机支持某种ISA,它就可以运行针对该ISA的任何软件: 软件只使用ISA定义的操作; 计算机支持该ISA,所以所有ISA操作都能正常工作; 因此,该软件保证能正常工作。
%%{init: { "flowchart": { "curve": "linear" } } }%%
graph TD
S1([软件-1]) --> I([ISA])
S2([软件-2]) --> I
S3([软件-3]) --> I
I --> C1([计算机-1])
I --> C2([计算机-2])
I --> C3([计算机-3])
正如你所见,ISA作为软件应用程序和计算机硬件之间的“协议”; 只要软件和硬件以符合ISA标准的方式相互交互 (即软件只使用ISA定义的操作,硬件支持ISA), 软件就保证能正常工作。 遵守ISA标准给软件和硬件开发人员带来了巨大的好处: 没有ISA,软件开发人员将不得不为每台计算机编写相同的软件, 而ISA将这个工作简化为仅编写几个ISA的软件; 这些好处同样适用于硬件制造商。
祝贺你!你已学习了标准的概念, 这是几乎所有软件应用程序的重要基础。