其实这是因为软件写得不够好。软件是很难跟人一样可以应付所有突发事件的,所以为了让软件内部的状态恢复到正确的状态,最简单的做法就是关掉重启,因为刚刚初始化后的状态肯定是正确的吧(除非程序员太……)。等到哪一天,大家的软件都可以在任何出错的时刻无痛恢复到正确的状态的时候,就不用重启了。
为什么状态还有分正确和错误呢?这是因为写软件的人为了提高运算速度,总是要用缓存(cache)的。最简单的例子就是你有三个变量 a, b, c,要时时刻刻保证 c==a+b,c 就是 cache。哪天 c!=a+b 了,这就是你的软件(几乎都是因为写得不好,少数情况下是因为宇宙射线和谐了你的 CPU)进入了错误的状态。想把它恢复到正确的状态就要重新计算 a+b 然后保存到 c。cache 一个状态都这么麻烦,更何况是几个 G 那么大的状态?
人类的软件开发技术到达这种理想的状态有两个方法。第一个就是等谁发明一个牛逼的语言可以自动处理这些事情,第二个就是等外星人来提高我们的智商了。