特修斯之船

  先介绍一下“特修斯之船”的概念:希腊神话中的忒休斯与雅典的年轻人们自克里特岛归还时,所造三十米浆船被雅典人留下来做成纪念碑,这艘船特修斯之船(忒修斯之船),成为最古老的思想实验之一,一艘船可以在海上航行上百年,归功于不断地更换零件,只要一块板腐烂,一个零件损耗严重,它们就会被更换掉,以此类推,直到所有部件都坏了一遍,都被更换了一遍。那么,在所有零件被更换过后,这艘船还是原来的特修斯之船吗?后来又有更延伸的问题,如果用特修斯之船取下来的部件重新打造一艘船,那么两艘船哪个才是真正的特修斯之船。

  特修斯之船被称为世界十大悖论之一。类似的例子还有:一家公司,股东与职员不断更换,而且又被人收购,甚至所从事的业务也发生了变换,但它还是原来命名的公司;“铁打的营盘流水的兵”;人在几十年后,身体的细胞全部换了一遍,但小明依旧是小明,大爷依旧是大爷;“祖父的斧头”:斧头的刀刃更换了三次,刀柄更换了四次,但还是同一把旧斧头;等等。

  作为一个程序员的理解

  作为一个程序员的理解是:新建一个项目,不停地更新迭代,从版本1.0到版本2.0,直到版本n.0,项目名称并没有改变,项目还是那个项目(吗?)。把原来的代码抽出来(版本1.0)跟现在的项目(版本2.0)去比较,哪个才是真正的项目呢?类似的问题还有:修改文档(初版、修改版、终极版、终极不改版、终极不改再改剁手版、终极剁手不改版),回收站(删除一个文件,然后在原目录新建一个同名文件,再恢复回收站文件)。“特修斯之船”悖论如果用程序员的思维就是:版本1.0->1.0.1->1.1.0->……->2.0的过程,虽然都是特修斯之船,但早就不是同一个版本了(除了比较它的名字,还必须比较它的时间戳)。