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


No Silver Bullet年,弗雷德布鲁克斯声称“软件系统的状态比计算机更多”,这使得它们更难设计和测试(芯片已经很难测试了!).

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

布鲁克斯是否打算让我失去一些特别的意义?或者,计算机的潜在状态是否真的比它可以运行的软件系统少?

最佳答案 好吧,让我们首先考虑一下图灵机.

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

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

阅读图灵机的描述与读取存储在存储器中的软件程序相同.

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

但是,如果你认为状态是计算的整个状态,即包括磁带的状态,那么你是对的:每个模拟都对应于这种意义上的特定可能状态,并且有许多状态无效或无法访问.

同样地,现代计算机由一组实现该控制单元的硬件组成,然后是作为我们的磁带的存储器.如果您不将内存状态视为硬件状态的一部分,则同样适用:有限计算机,给定足够的内存,可以在每个可能的输入上执行每个可能的程序,但其控制部分仅是有限的.

这说我不会太过于字面或太认真地接受这样的断言……
关键在于:软件系统的状态数量增长非常迅速.

点赞