在 No Silver Bullet 中,弗雷德布鲁克斯声称“软件系统的状态大于计算机的状态”,这使得设计和测试变得更加困难(而且芯片已经很难了去测试!)。
这对我来说是违反直觉的:任何正在运行的软件系统都可以映射到某个状态的计算机,而且计算机可能处于不代表正在运行的软件系统的状态。因此,计算机应具有比软件系统更多的潜在状态。
布鲁克斯是否打算让我失去一些特别的意义?或者计算机的潜在状态是否真的比它可以运行的软件系统少?
答案 0 :(得分:2)
好吧,让我们首先考虑一下图灵机。
图灵机包含一个无界磁带,其中包含符号,一个磁头和一个小型控制单元,它是一个有限状态自动机,控制机器如何读取,移动和修改磁带上的符号
事实:存在universal Turing machines,即从磁带读取其他图灵机的描述并在某些给定输入上执行它的机器。换句话说:即使控制单元中只有有限数量的状态,这些机器也可以模拟每个可能的其他图灵机。
阅读图灵机的描述与读取存储在存储器中的软件程序相同。
从这个意义上说, if 你算作硬件状态的数量,控制单元中的状态数,如果软件是写在磁带上的图灵机的描述,那么< em> yes 有限的硬件可以模拟无限的软件,但软件肯定包含图灵机的状态多于模拟它的状态。
如果您认为状态是计算的整个状态,即包括磁带的状态,那么你是对的:每个模拟对应于这个意义上的特定可能状态,并且有很多无效或无法访问的状态。
同样地,现代计算机由一组实现该控制单元的硬件组成,然后是作为我们磁带的内存。如果你不认为存储器的状态是硬件状态的一部分,同样适用:有限的计算机,给定足够的内存,可以在每个可能的输入上执行每个可能的程序,但是控制部件只是有限的。
这说我不会太过于字面或太认真地接受这样的断言...... 关键在于:软件系统的状态数量增长非常迅速。