忒修斯之船,迁移版

有一个关于船的老难题。船板腐朽了,就一块一块地换掉,过了足够多年,原来的木头一块也不剩了。它还是同一艘船吗?后来有人又加了一层:要是把换下来的旧木板都留着,重新拼成一艘船呢?现在有两艘了,哪一艘配得上那个名字,并不那么显然。

每次把一个系统搬到新地方,我们都会想起这个难题,因为处境一模一样。新的代码,新的机器,新的存储,没有什么能原样过去。可人们还是期待第二天早上打开账户,看到自己留下的东西还在。

我们渐渐相信,“同一个”不是事后发现的,而是事先决定的。哪些东西必须完全一致,哪些可以改变,哪些旧毛病乐得留在身后。一旦把这些写下来,难题基本就消失了。你不再问它是不是同一艘船,只问它有没有通过大家事先约定的那些检验。

我们还学会了让造它的人以外的人来检查。不是出于怀疑。造它的人会把同样的假设带进检查里,而错误往往就藏在这些假设里。

← 全部文章