«世界时间与空间的计算模型思想实验(未完稿)»
by pluvet on Dec 7, 2019

世界时间与空间的计算模型思想实验

  让我们创造一个宇宙吧。

  «尸子»曰:“上下四方曰宇,往古来今曰宙。”,这是说宇宙即时空。我们就从定义时间和空间开始。

  首先,我们假设空间和时间都是离散的,也就是说,对空间和时间的测量得到的值一定是单位值的整数倍。并且假设,空间是有界的,就如一块平板玻璃有其边缘一样。同时假设时间是是绝对的,也就是说,对于空间的每一个离散点,它们共享一个同样的时间变量,一旦这个时间变量被改变,那么所有的点都即时采用新的时间。

  你会注意到我这里用到了词语“即时”,既然时间是被我们定义的,那么“即时”,或者说“在同一时刻”,又有什么意义呢?既然还没有定义时间,我们却说在同一时刻,或者说,既然时间是我们后来定义的,但我们却在定义中使用了后来定义的时间,这是否构成了一个无效的循环使用呢?从巴门尼德到康德,许多哲学家都认为时间是依赖于主体而存在的,但也有如牛顿持有绝对时间观。但他们的讨论其实都是基于一个前提:时间存在且仅存在于当前的世界,我们不妨跳出这个框,假设“即时”所指的时间是时间之外的时间,或者说,是我们定义的宇宙之外的我们现在身处的这个宇宙的时间,这样就解释得通了。至于我们这个世界之外是否同样存在一个“时间”,我猜是有的,不过这里不详述了。

  有了空间,就要有万物,而万物的本原,古人称之为始基( ἀρχή ),泰勒斯认为始基是水,德谟克利特认为始基是原子,毕达哥拉斯学派认为是数,柏拉图则认为是理念,从时间轴看,始基的抽象性逐渐增加了,我们暂不论这种讨论是否有意义,更不论是否正确。在我们的宇宙中,我们只需要定义它就行了。从我们的定义看,始基更像是数,你也可以认为是原子,从实用主义的角度看,并无区别:

  定义物质的始基:

def int arche

  这样的情况下,我们把始基定义为一个数字,另外这个数字是独一无二的,就像每个人的身份证一样。始基在我们的程序里看是具体的,从我们身处的现实世界看似乎又是抽象的。只要在宇宙程序运行的过程中不增加新的始基,也不减少旧的始基,那么实际上就构成了第一条定律:始基守恒定律。

  接下来我们定义始基的容器——空间。我们有两种方式定义,一种是让空间依附于物质;一种是让物质依附于空间。用计算机的语言,就是:

arche1.position: space(1, 2, 5)

  和

space(1, 2, 5).arche: arche1

  的区别。

  从实用主义的角度,二者其实也没有任何区别,都是在二者之间建立一个关联而已。

  从程式设计的角度,我更喜欢第一种设计。不过我们的选择并不会对接下来产生决定性的影响。所以,我们就这样定义始基和空间吧:

class arche:
    1. int id
    2. int[3] x, y, z (position)

  接下来定义绝对时间:

int time: 0

  每当时间发生变化,我们都要对始基的位置进行一次计算。所以需要一个计算模型,该模型输入一些数据,然后输出一个新的位置。问题来了,输入什么呢?我们能输入的就只有时间和始基。而当时间的每次变化量(DeltaTime)为 1 时,其实我们连时间也不需要输入了。我们只需要输入宇宙所有始基的集合,然后根据这个集合的各个始基的数值,计算出一个坐标,并返回给模型的调用者——始基。这样的过程,就是始基之间的相互作用,或者说,就是力。当然,这里的“力”,并不是我们身处世界的物理学的力,后者是有严谨的定义的。我们还是叫它“作用”吧,并规定,作用(Action,或 Interaction)乘以作用时间(Action Time,或 Delta Time),就能得到作用效果(Action Effect)。

int[3] archeInstance.tick(allArche, deltaTime = 1):
    int[3] sumEffect // 作用效果的和
    for each arche in allArche:
        sumEffect += calculateInteraction(archeInstance, arche) * deltaTime
    return sumEffect

仅有一条评论

  1. 看着看着我就想到了黑客帝国的世界。宁就是 Matrix 架构师!

添加新评论