软件系统真的比硬件系统有更多的状态吗?

Do software systems realy have more states than hardware ones?

No Silver Bullet 中,Fred Brooks 声称 "Software systems have orders of magnitudes more states than computers do",这使得它们更难设计和测试(而且芯片已经很难测试了! ).

这对我来说是违反直觉的:任何 运行ning 软件系统都可以映射到某种状态的计算机,而且看起来计算机可能处于不代表某个状态的状态运行ning软件系统。因此,计算机应该比软件系统具有更多的潜在状态。

Brooks 是否有意表达我遗漏的某些特定含义?还是计算机的潜在状态真的比软件系统少运行?

好吧,让我们首先考虑一下图灵机。

图灵机由一个包含符号的无界磁带、一个磁头和一个小型控制单元组成,该单元是一个 有限 状态自动机,控制机器如何读取、移动和修改磁带上的符号。

事实: 存在 universal Turing machines,即从磁带读取另一台图灵机的描述并在某些给定输入上执行它的机器。换句话说:即使控制单元中只有有限数量的状态,此类机器也可以模拟 每个 可能的其他图灵机。

阅读图灵机的描述与阅读存储在内存中的软件程序是一样的。

在这个意义上如果你把硬件的状态数算作控制单元的状态数,如果软件是图灵机的描述写在磁带,那么是的有限的硬件可以模拟无限的软件,但软件肯定包含比模拟它的状态更多的图灵机。

但是,如果您将整个 计算状态 视为状态,即包括磁带的状态,那么您是对的:每个模拟都对应于此中的特定可能状态sense 并且有很多状态是无效的,或者是无法到达的。

以同样的方式,现代计算机由一组实现此控制单元的硬件组成,然后是内存,即我们的磁带。如果您将内存状态视为硬件状态的一部分,则同样适用:有限的计算机,只要有足够的内存,就可以对每个可能的输入执行每个可能的程序,但它的控制部分只是有限的。


这表示我不会太从字面上或太认真地对待这些断言... 重点很简单:软件系统的状态数量增长极快。