技术干货程序员

用Java对象来解答世界悖论难题“忒修斯之船”

2018-11-18  本文已影响0人  朱潘

公元1世纪的时候普鲁塔克提出一个问题:如果忒修斯的船上的木头被逐渐替换,直到所有的木头都不是原来的木头,那这艘船还是原来的那艘船吗?

忒修斯之船

很多哲学家都回答论证过这个问题,其中就包括著名哲学家思想家亚里士多德,苏格拉底,柏拉图。我们来看一看亚里士多德的论证方法和他的结论:

亚里士多德

亚里士多德认为可以用描述物体的四因说解决这个问题。构成材料是质料因,物质的设计和形式是形式因,形式因决定了物体是什么。基于形式因,忒修斯之船还是原来的船,因为虽然材料变了,但船的设计——形式因——没有变。从这个角度看赫拉克利特的河流问题,则两次踏入的是同一条河流,因为河流的形式因没有变。事物的目的决定了其目的因。忒修斯之船的目的在神话中是装载和运输,在现实中的目的是证明和纪念忒修斯,虽然材料变了,但目的没有变。

那么,作为一个程序员,我们该如何看待这个问题呢?这里我们不妨先来为忒修斯之船定义一个对象:

/**
* 忒修斯之船
*/
public class TheseusShip {
private Object hull; //船壳
private Object deck;//甲板

public void transport(){

//运输功能
}

// getter setter

}

接下来,我们来创建一个对象分别代表初始的船和改变之后的船:

TheseusShip theseusShip = new TheseusShip(); //初始之船

theseusShip.setHull("船壳1");

theseusShip.setDeck("甲板1");

接下来对船的零件进行替换:

TheseusShip theseusShip2 = theseusShip;

theseusShip2.setHull("船壳2");

theseusShip2.setDeck("甲板2");

进行到这里想必大家已经明白了,无论我对初始的船做出任何改变,它都还是原来的船,因为下面的结果始终为True:

System.out.println("Is the ship of Theseus change: " + (theseusShip2 == theseusShip));
科学

所以,以一个程序员的眼光来看忒修斯之船这个问题,答案是还是原来的船。在程序员的眼中,只有对或者错。并不存在什么哲学问题,毕竟一旦哲学了,程序运行可能就要抛异常了。

欢迎关注我的公众号“java工会”,一起交流技术

上一篇 下一篇

猜你喜欢

热点阅读