这两天包子师弟很郁闷,他发现世界不是真实的。下位机的C程序、部分汇编代码查看过了,上位机发生的波表、手动发生的波表也查看过了,都没有问题。
可是他发现,本来应该每毫秒改变的信号在示波器里看来,根据波形不同,可能1.每2毫秒改变,2.每4毫秒改变,3.每100毫秒改变......
示波器就是电子工程师观察不可直接摸的电子世界的眼睛。眼睛告诉我们:你的程序的运行结果与期待不同!可是这种错误意味着下位机程序跑起来完全没有准儿。慢的时候对,快的时候错?
包子提出一个大胆的猜想:示波器有问题,我们看到的是假像。比如可能因为重叠在示波器屏幕上的线条彼此覆盖,你看到的是信号互相消除后的结果。
这有点像在电视机里看到的电视或计算机显示器总是在闪烁;或者当你注视旋转的阿基米德螺旋线时,总感到它在向中间钻。
数字示波器没有处理这种重叠。我还有位包师兄,物理系毕业后来转读了哲学。他提出过一个问题,如何保证我们所看到的是同一个世界呢?
包师弟的问题很类似,如何保证示波器(我们看到的)和实际发生的(我们通过其他仪器检测的,或者期待的)是一致的呢?
一般来说,我们用不同的仪器、尤其是不同原理的仪器检测后发现结果相同,就认为一致性得到了保证。
不过包师兄的问题显然更进一步,我们凭什么认为 这些仪器检测结果都相同,每个个体观察到的世界就是一致的呢?《印第安人的废墟》里提到过,如果我们前天看到事情这样发生,昨天这样发生,今天还是这样发生。我们就认为,明天它还会以相同的方式发生,并认定这是真理。但是真是这样么?据说全世界前500强的计算机中曾经有4台在中国[http://songshuhui.net/archives/1080.html],用来保证《魔兽世界》里的人类看到的世界是相同的。
当你斩下利刃的时候,你身旁的战友也能看到血光腾起;当战友攻击敌人的时候,你也能听到他的呼吸和敌人的吼叫。在类似世界里生存过的人都知道,如果出现了不致会是多么糟糕的事情。你看到了她的承诺,而对于她的世界,她只是沉默;你射出一箭,对于怪物而言它却从未存在。在游戏的世界里,我们可以轻松地说这样的世界多么不可思议。如果真实的世界也是这样不可预测,我们又该如何应对?包师兄的意思,我想,其实是 在真实的世界中,什么机制在保证我们所观察到的世界是一致?又或者,这种假定的一致存在么?
如果你要回答"当然"的话,请再参考一下上面提到的《印第安人的废墟》。当然,作为工程师,包师弟的问题要容易一些吧。我们能信任的设备总会找到。