Exolace
2022-01-04T23:00:59+00:00
我们这个世界足够真实吗?
在物理学发展到量子阶段以前,我们认为是足够真实的,一切我们发现的科学规律都是既普适又自洽,而且经过思考以后会发现也非常符合直觉和逻辑。包括经典力学,热力学,电磁理论等等,完全看不出有任何的问题,学起来也很容易。
可是,自从物理学发展到量子阶段后,各种反直觉的实验现象就开始出现了。
首先是光的波粒二象性,一个物体,既是波又是粒子,而且到底是波还是粒子居然取决于你怎样观测。这已经很反常识了,幸好科学不屈从于直觉,科学家们想不明白就不想了,姑且认为猫就是可以又死又活吧。
然后半透镜实验(延迟选择实验)就更离谱了,科学家摆弄来摆弄去,就是发现现实世界不遵守因果律。为什么会这样不符合逻辑?没有任何人知道。幸好科学不屈从于逻辑,实验结果如此就如此吧,科学家们只相信事实。
接着又是光子的全同性问题,两个光子,或者很多基本粒子,居然是不能编号区分的,它们可以任意混淆,而且一旦产生混淆,用来区分它们的现象也就随之消失了。这又是违背直觉和逻辑的现象,我们从出生就知道两件东西长的再怎样相似,也是可以彼此区分的,为什么粒子就不可以?物理学家也不知道,只能认同事实。
再接着是更加诡异的粒子的自旋现象,粒子的自旋就像是一种奇怪的秉性,你测量一次,它就有可能变化一次,明明刚用磁场区分出来一致方向自旋的粒子,再次区分,它们依然还是一半向上一半向下,这符合常识吗?当然不,而物理学家们只好用一句自旋现象没有经典对应来一语带过。
然后还有量子纠缠问题,超越光速的超距作用,仿佛空间是不真实存在的,为什么会这样?物理学家还是不知道,哪怕他们可以用公式描述,甚至可以用这个规律来进行保密通讯,但是没有人能给出一个符合直觉和逻辑的简洁解答。
这像不像一个不够完美的世界?科学家们会不会在内心中生出一丝疑惑来:这些现象太类似一个人为创造出来的虚拟世界了。
对啊,虚拟世界里物质就可以同时是波函数也可以是确定的值,比如一个随机函数,没有运行的时候就是一个随机范围,运行后(观测)就是一个确定的值。网络游戏里这个现象太普遍了,一张地图上如果有50%的概率刷出怪来,但是没有玩家进入地图前,刷怪程序并不执行,那么如果没有玩家去看,请问地图上有怪吗?
可能有,也可能没有,各50%的概率,处于一种叠加态吧。
但是只要有玩家进入地图,这个叠加态迅速就坍缩了,得到了一个确定的结果。
粒子的全同性在真实世界很难理解对吧,在虚拟世界里多么好理解啊。游戏里面掉落的钱币,因为数量太多,为了方便携带,玩家拾取后就会落到一个背包格子里,这时候它和原来格子里面的钱币就不能区分了,因为这种大数量道具系统是不区分的,还有血瓶,材料等等。全世界就一个钱币?确实是,就一个钱币的代码,到处生成对象而已,同一个代码生成的无编号对象当然就是全同的嘛,你拿哪些全同量子的实验来试试,全部完美解释。
如果我们知道了粒子只是用函数模拟出来的,那么粒子的那些奇怪的内禀属性就不再神奇了。比如电子的自旋属性,要不是我们非要把电子想象成一个小球的话,哪里有什么东西在自旋,只不过是粒子函数在电磁场中的表现出的一些特性罢了,也不用思考为啥转两圈只能算一周,我们只用知道每次进入磁场,带电荷属性的粒子函数就要被执行一次输出,函数代码需要根据自身的所谓自旋值随机输出一个运动方向。所以每用磁场来触发粒子函数输出一次,总会有一半向上,一半向下。下次再触发还是调用同样的函数,依然是这个结果,不会受上次调用的影响,所以永远没有确定的输出值。
量子纠缠发生在真实世界很诡异是吧,虚拟世界里到处都是这种现象,两个同时产生的宝箱,要是他们里面的道具出自一个概率表有严格的相关性,那么你把其中一个搬到游戏中任何一个地方打开也能马上影响另一个的结果,因为影响它们秉性的不是距离而是看不见的内部代码。
还有那个违背因果律的延迟选择实验,现实世界里感觉匪夷所思是吧,我们看看虚拟世界里这种事件一般都是如何处理的。法师发出一个火球,击中目标的概率为50%,那么是飞行到接触目标之前计算结果比较好呢,还是先按概率计算出结果,再反过来根据计算出的结果(命中/不命中)绘制飞行动画比较好呢。显然后者更合理一些,那么这就给玩家造成了一个因果错觉,玩家觉得是火球发出后根据目标的躲避情况来决定是否命中,而系统里其实早有结果,给玩家看的只不过是之前结果的表现。玩家要是突然决定在火球的飞行路径上再加一个检测点,好嘛,这个动画就得瞬间重画,从检测点开始再回归计算,因果律看起来就不正常了是吧,其实码农们都懂。
所以说出生在现代的学生们学习量子物理其实并不难,因为他们都有丰富的虚拟世界的体验经验,要是再学会一些网络编程,那更是容易理解。这些事情对于现代的学生来说,简直就是虚拟世界网游的现实翻版嘛。
如果人类只有科学,本也不该怀疑这些现象,因为客观观察到的事实是怎样,就应该理所当然的承认嘛。不过,幸好人类不只有科学,人类还有数学和哲学,这些知识是高于科学的,从而让我们能以超越当前客观世界以外的思考视角来审视这个世界。而我们人类的很多直觉其实也是来自这些知识,这也令我们对我们所处的世界产生了怀疑,难道我们真是在一个他人创造出的虚拟世界里吗?
那,假设真的是有人创造出这个虚拟世界,为何又会在量子层面露出这么多破绽呢?都满足我们的直觉不好吗?
其实,这事问程序员们就知道了。
为什么不事先在地图上把怪刷好啊,非要有玩家进去再刷?
因为要节省资源……
为什么要制造一些不可区分的道具啊,不能所有道具都有唯一的ID吗?
因为要节省资源……
为什么粒子的自旋值每次都要复位啊,不能记录下来吗?
因为要节省资源啊……
为什么粒子非要等观测的时候才确定状态啊,不能事先就生成好吗?
还是因为要节省资源啊同学,这个宇宙场景很大的,我哪能做到把全宇宙里所有粒子在每一个普朗克时长的状态都计算出来啊,既浪费资源也没有必要,你要看哪个我就算哪个不就完了,只要你不认真琢磨,看起来和全算状态其实没啥区别。
是不是很符合一个程序员的想法?
你现在是不是觉得物理学家们怀疑有人创造了这个虚拟世界是很有道理的?自然界的这些安排的确奇怪了,要是真的存在一个造物主的话,很多见鬼的现象就能解释了!
------
假如你是个小码农,你的老板要你开发一些虚拟的拟真世界,你要怎么搞呢?
你想了想,决定先定义一些构成世界的夸克级的基本粒子,你构造了一些一维函数模拟出这些粒子的秉性,这就像“Minecraft”里面小块一样,只不过你用的形状是线条。
但是夸克太小了,就好像是像素一样,很难赋予太复杂的秉性,于是你开始用夸克拼装更高一等的基本粒子。用什么办法拼装呢,你构造了一些小块根据基础秉性相互作用的效应,并在代码里用方程形式表现出来,分别叫强相互作用和电磁作用。这些线条彼此靠近就会按规律黏着或者排斥,然后自动组合出更多类型的高等粒子的框架来。
线条搭建的粒子好像是基本三维容器,用来装承这些最小的一维函数,出于不可重复调用的原因,容器里不能装载属性相同的夸克(泡利不相容原理)。
然后,再设定一些函数之间的相互作用,先设定个与质量有关的,把引力方程写进去。
模拟两个粒子运动一下,嗯,跑的不错,任何时候把时间参数代进入马上就可以得到速度位置,用个微分方程就好。
可是物体一多就不行了,得迭代,多体问题没有解析解就只能求数值解。
这样计算方面就有一个问题了,那就是时间不能连续,得有个最小单位,而且得足够小。如果迭代步长太大结果误差就太大了,那么时间单位最小可以多小呢。
程序员研究了一下主机的参数,决定根据硬件条件的限制来定义,系统的最小时间片是多少呢?
是一个“普朗克时间”:1E-43秒,程序员发现定义完这个变量以后,很多参数也随之确定出来了,比如宇宙的最大速度 = 最小普朗克长度/最小普朗克时间,于是光速就有了。
分子为啥是要用最小普朗克长度呢,因为这个世界要尽量拟真嘛,要让物体运动的尽量平滑,能不跳格就不跳格。但是这事不能表现的这么直白,于是程序员研究了下,正好根据作用效应把粒子质量和速度挂钩起来,用质量来限制速度的上限,正好达到光速时候质量无穷大,从容器层解决了这个问题(洛伦兹变换)。
好了,搞定一些常数,程序员开始跑一个大规模的测试版本,模拟了几万亿个粒子的行为,系统就开始卡顿起来。
程序员有点头疼,这不省心啊,老板不肯投资升级主机,这才多少粒子,离模拟一个星系的距离还很久呢。于是他去请教一个老程序员。
老程序员看了下他的代码,冷笑一声,你这个搞法再多少计算资源都能给你耗尽了知道不,你看看每个粒子都在占用内存和CPU时间,彼此作用起来计算量是指数上升的,有必要吗?你要想想,中间状态有没有必要存在?
可是程序员犹豫了一下说,那也不能直接模拟到终局啊,到了最后肯定是热寂归零。
老程序员用报纸敲了一下他的头说,你程序跑给谁看的,客户在哪?
程序员这才想起来,老板之前指定了一个观察者接口的。对嘛,谁调用哪个接口就马上进行计算就好了。程序员重构了一遍系统,把粒子代码全部脚本化了,这样方便随时调用。然后把系统输出修改成针对意识接口的观察流模式,按照意识接口的调用来驱动计算输出。
这样,整个仿真模型的主循环就大大简化了,不用输出中间状态让模拟计算量大大下降。有了这个方向,很多问题就迎刃而解了
------
我们来看一个经典的基本量子实验:惠勒延迟选择实验。“延迟实验”是由爱因斯坦的同事约翰·惠勒提出的,也是传说中的世界观颠覆者,人生观毁灭者,因果律杀手,理科生躁郁症的重大致病因素之一,毁人不倦的经典实验。
有一位会发射隐形火球的法师,他发射的隐形火球既能像粒子一样飞行,也可以像波一样传播,至于究竟什么时候会怎样我们先放一边。
接着我们又设计了一些道具,包括两块可以一半概率反射火球法术的魔晶O和C,然后还有两个魔法反射镜,两个当做目标的挨打小精灵。好了,按图摆好位置后,一个魔法版的延迟实验我们就可以布置出来了。
接着,我们抓了一位码农,让他来完成这个实验的整个过程。
码农愁眉苦脸的琢磨了一会后,决定这样来安排整个实验的事件过程:
1. 先计算出火球的飞行路径,遍历所有可能路径,并找出路径上可能发生的一切交互事件,因为各路径无独立交互事件,因此系统将所有路径的传播概率全部混合进行计算,从而得到全部事件概率结果;
2. 根据路径的距离和传播媒介,计算传播时间,并将交互事件分别按时间轴顺序排序;
3. 计算完毕后开始执行事件序列,先绘制一个发射动画,因为是隐形火球,因此不用绘制飞行动画,主循环开始进入idle,等待下个事件执行,同时系统继续轮检路径变化情况,轮检频率为每普朗克时间一次;
4. 一段等候时间后,系统突然发现路径上发生了变化,有新的交互物件插入,于是系统瞬间重算了所有交互事件,并刷新原事件序列。因为新的交互事件里存在独立的路径交互行为,所以这次需要先根据概率计算选择出具体子路径,然后再回归计算子路径上的独立交互事件;
5. 事件时间分别到达,依序执行各个具体的交互事件并输出结果。每次交互事件执行后,重置火球的函数并重新递归计算路径和事件。
码农测试了一下,按这个算法非常节省系统开销,反应迅速准确,完美实现了客户需求。
现在大家是否明白了,码农的这个做法从玩家角度来看,似乎就是因果倒置了。光子未来路径上的变化刷新了交互事件序列,而玩家却用还未发生的交互事件(探测器)在判断光子之前的行为,浑然不觉事件结果已经在插入半透镜后被内部刷新过了。
更重要的是,在码农眼里,隐形的火球没有所谓的飞行过程。在没有交互事件的时候,没有必要将一个物体在三维坐标系里移来移去浪费开销,一切运动在码农眼里只不过就是按照速度安排的交互事件排序而已,有交互(观测)才有输出,无交互的时候,系统idle就好。所以在每个火球的交互行为(被观察)之间,火球没有任何行为发生,它只待在代码里等待事件而已。
所以,这个世界上其实也没有什么光子在飞行,光子被发射后就不存在实体了,有的只是宇宙母机的系统在后台默默的计时和轮检路径事件变化而已。光子也不用千幸万苦的耗费百万年的飞行路程来到我们眼里,或者来到天文台的望远镜的底片上,这些事件在我们抬头仰望星空的时候,就已经被合理的插入到某些粒子的事件序列里了,到了该执行的时候,交互事件就会自然触发,而你眼睛里的视神经细胞就会感受到事件的影响结果。
所以每个微观粒子的飞行运动过程,其实都是系统在后台不断刷新一个未来待执行的路径交互事件序列而已,只要事件还未被执行就可能因为环境变化而改变,所以随便科学家们把路径上的透镜插来插去都没关系,系统最终只会以事件执行前最后一个普朗克时间时事件的刷新结果来执行输出,光子也不用那么劳累隔一会就要去回溯更改历史。那一百万年,它哪里都不在,只有系统在后台假装它在飞行穿越空间而已。
这是一个神奇的思想模式,一旦你们开始用程序员的思维理解量子行为后,很快就可以给各种量子实验加上算法解释,包括什么魔术擦除实验,什么量子纠缠,什么双缝干涉,还有什么猫猫狗狗的,观测者难题也迎刃而解,整个世界顿时全然不同。
------
量子的另外一个诡异的行为,这个诡异行为就是所谓的“量子隧穿效应”。
所谓量子的隧穿效应,就是指粒子在某些尺度下,会随机的直接越过一些高能的位势垒,通俗说就是穿墙而过了。只要墙壁足够薄的情况下,基本粒子靠近墙壁的时候都有可能概率直接穿过临近的墙壁屏障而出现在墙壁的另一边。这听起来自然也是违背常识的,为什么尺度小的一定程度,阻挡对于粒子来说就可以偶尔消失掉?这在经典物理学中是无法解释的,一个小球想要穿过哪怕是极薄的纸,也不可能既不付出任何能量,也不弄破这张纸。可是在量子世界里,粒子就是这样诡异的越过了足够薄的障碍。
也正是存在这个隧穿效应,才导致我们现在的微电子芯片技术发展到1nm时代就碰上了继续缩小尺寸的物理学障碍。芯片里阻隔电子的材料如果尺寸小到5nm以下,量子隧穿效应导致的漏电现象就不可忽视了,如果尺寸进一步减小,那么漏电问题将更加严重,从而导致芯片的逻辑电路无法正常工作。这个问题已经成为芯片技术继续发展需要克服的最大障碍了。
怎样理解这个效应呢?如果按照量子理论的一些传统理论,是用量子具备不确定原理来解释,量子具有一些不确定的能量,偶尔它们可以从虚无中凭空“借”到了一些能量,然后借助这些能量就越过了墙壁,从而实现了凭空穿墙……是不是听起来也很玄幻?
好了,那按本文的习惯,我们先看看游戏中有没有这个现象。
游戏中不仅有,而且还相当的普遍!游戏中的这个现象简单说就是3D物体的运动穿模。
什么是3D物体的运动穿模呢?就是说,在3D游戏中,运动物体有时候会在碰撞的时候穿过障碍物体,或者是穿到地形里面去。
这其实是一个游戏BUG,为啥会出现这个现象呢,3D游戏的程序员都很清楚,这其实是一个碰撞检测算法的精度问题。在3D游戏里,运动物体看上去像是连续运动的,比如一辆汽车,或者一个火球,但实际上呢这些运动物体的位置却是间断更新的,因为在计算机的计算过程里不可能有什么真正连续的事件,任何运动其实都是离散的。
------
其实我们得到了一个非常惊人的看待宇宙基础规律的视角,比如我们可以不把光速是当前时空速度上限当作是一种最底层的初始规律,而是把它视作一种现象,那么这个宇宙必然还有更底层的规律导致了这种现象的出现。
除了光速,我们甚至可以用类似的角度来看待物理学中的各种基础常数,尤其是那些有量纲的常数,它们很可能不是绝对不变的宇宙初始变量,而只是某些更底层的物理规律导致的一种结果。比如电子的电荷数值,或者质子的质量等等。
从另一方面来想,既然我们感觉常数之上还有更底层的规律,那么常数绝对不变也不是那么不可挑战了。就好像光速,虽然在底层上有普朗克长度和时间做为计算基础,但是更基础的约束很可能来自宇宙要绝对避免不同物质在相同时空的重叠可能,那么在某些特殊的情况下(比如量子尺度运算精度不足造成的重叠BUG),这个光速限制就有可能是会被打破的,这也体现了一种很容易理解的程序思维:下层逻辑必须服从上层逻辑的约束。
在物理学发展到量子阶段以前,我们认为是足够真实的,一切我们发现的科学规律都是既普适又自洽,而且经过思考以后会发现也非常符合直觉和逻辑。包括经典力学,热力学,电磁理论等等,完全看不出有任何的问题,学起来也很容易。
可是,自从物理学发展到量子阶段后,各种反直觉的实验现象就开始出现了。
首先是光的波粒二象性,一个物体,既是波又是粒子,而且到底是波还是粒子居然取决于你怎样观测。这已经很反常识了,幸好科学不屈从于直觉,科学家们想不明白就不想了,姑且认为猫就是可以又死又活吧。
然后半透镜实验(延迟选择实验)就更离谱了,科学家摆弄来摆弄去,就是发现现实世界不遵守因果律。为什么会这样不符合逻辑?没有任何人知道。幸好科学不屈从于逻辑,实验结果如此就如此吧,科学家们只相信事实。
接着又是光子的全同性问题,两个光子,或者很多基本粒子,居然是不能编号区分的,它们可以任意混淆,而且一旦产生混淆,用来区分它们的现象也就随之消失了。这又是违背直觉和逻辑的现象,我们从出生就知道两件东西长的再怎样相似,也是可以彼此区分的,为什么粒子就不可以?物理学家也不知道,只能认同事实。
再接着是更加诡异的粒子的自旋现象,粒子的自旋就像是一种奇怪的秉性,你测量一次,它就有可能变化一次,明明刚用磁场区分出来一致方向自旋的粒子,再次区分,它们依然还是一半向上一半向下,这符合常识吗?当然不,而物理学家们只好用一句自旋现象没有经典对应来一语带过。
然后还有量子纠缠问题,超越光速的超距作用,仿佛空间是不真实存在的,为什么会这样?物理学家还是不知道,哪怕他们可以用公式描述,甚至可以用这个规律来进行保密通讯,但是没有人能给出一个符合直觉和逻辑的简洁解答。
这像不像一个不够完美的世界?科学家们会不会在内心中生出一丝疑惑来:这些现象太类似一个人为创造出来的虚拟世界了。
对啊,虚拟世界里物质就可以同时是波函数也可以是确定的值,比如一个随机函数,没有运行的时候就是一个随机范围,运行后(观测)就是一个确定的值。网络游戏里这个现象太普遍了,一张地图上如果有50%的概率刷出怪来,但是没有玩家进入地图前,刷怪程序并不执行,那么如果没有玩家去看,请问地图上有怪吗?
可能有,也可能没有,各50%的概率,处于一种叠加态吧。
但是只要有玩家进入地图,这个叠加态迅速就坍缩了,得到了一个确定的结果。
粒子的全同性在真实世界很难理解对吧,在虚拟世界里多么好理解啊。游戏里面掉落的钱币,因为数量太多,为了方便携带,玩家拾取后就会落到一个背包格子里,这时候它和原来格子里面的钱币就不能区分了,因为这种大数量道具系统是不区分的,还有血瓶,材料等等。全世界就一个钱币?确实是,就一个钱币的代码,到处生成对象而已,同一个代码生成的无编号对象当然就是全同的嘛,你拿哪些全同量子的实验来试试,全部完美解释。
如果我们知道了粒子只是用函数模拟出来的,那么粒子的那些奇怪的内禀属性就不再神奇了。比如电子的自旋属性,要不是我们非要把电子想象成一个小球的话,哪里有什么东西在自旋,只不过是粒子函数在电磁场中的表现出的一些特性罢了,也不用思考为啥转两圈只能算一周,我们只用知道每次进入磁场,带电荷属性的粒子函数就要被执行一次输出,函数代码需要根据自身的所谓自旋值随机输出一个运动方向。所以每用磁场来触发粒子函数输出一次,总会有一半向上,一半向下。下次再触发还是调用同样的函数,依然是这个结果,不会受上次调用的影响,所以永远没有确定的输出值。
量子纠缠发生在真实世界很诡异是吧,虚拟世界里到处都是这种现象,两个同时产生的宝箱,要是他们里面的道具出自一个概率表有严格的相关性,那么你把其中一个搬到游戏中任何一个地方打开也能马上影响另一个的结果,因为影响它们秉性的不是距离而是看不见的内部代码。
还有那个违背因果律的延迟选择实验,现实世界里感觉匪夷所思是吧,我们看看虚拟世界里这种事件一般都是如何处理的。法师发出一个火球,击中目标的概率为50%,那么是飞行到接触目标之前计算结果比较好呢,还是先按概率计算出结果,再反过来根据计算出的结果(命中/不命中)绘制飞行动画比较好呢。显然后者更合理一些,那么这就给玩家造成了一个因果错觉,玩家觉得是火球发出后根据目标的躲避情况来决定是否命中,而系统里其实早有结果,给玩家看的只不过是之前结果的表现。玩家要是突然决定在火球的飞行路径上再加一个检测点,好嘛,这个动画就得瞬间重画,从检测点开始再回归计算,因果律看起来就不正常了是吧,其实码农们都懂。
所以说出生在现代的学生们学习量子物理其实并不难,因为他们都有丰富的虚拟世界的体验经验,要是再学会一些网络编程,那更是容易理解。这些事情对于现代的学生来说,简直就是虚拟世界网游的现实翻版嘛。
如果人类只有科学,本也不该怀疑这些现象,因为客观观察到的事实是怎样,就应该理所当然的承认嘛。不过,幸好人类不只有科学,人类还有数学和哲学,这些知识是高于科学的,从而让我们能以超越当前客观世界以外的思考视角来审视这个世界。而我们人类的很多直觉其实也是来自这些知识,这也令我们对我们所处的世界产生了怀疑,难道我们真是在一个他人创造出的虚拟世界里吗?
那,假设真的是有人创造出这个虚拟世界,为何又会在量子层面露出这么多破绽呢?都满足我们的直觉不好吗?
其实,这事问程序员们就知道了。
为什么不事先在地图上把怪刷好啊,非要有玩家进去再刷?
因为要节省资源……
为什么要制造一些不可区分的道具啊,不能所有道具都有唯一的ID吗?
因为要节省资源……
为什么粒子的自旋值每次都要复位啊,不能记录下来吗?
因为要节省资源啊……
为什么粒子非要等观测的时候才确定状态啊,不能事先就生成好吗?
还是因为要节省资源啊同学,这个宇宙场景很大的,我哪能做到把全宇宙里所有粒子在每一个普朗克时长的状态都计算出来啊,既浪费资源也没有必要,你要看哪个我就算哪个不就完了,只要你不认真琢磨,看起来和全算状态其实没啥区别。
是不是很符合一个程序员的想法?
你现在是不是觉得物理学家们怀疑有人创造了这个虚拟世界是很有道理的?自然界的这些安排的确奇怪了,要是真的存在一个造物主的话,很多见鬼的现象就能解释了!
------
假如你是个小码农,你的老板要你开发一些虚拟的拟真世界,你要怎么搞呢?
你想了想,决定先定义一些构成世界的夸克级的基本粒子,你构造了一些一维函数模拟出这些粒子的秉性,这就像“Minecraft”里面小块一样,只不过你用的形状是线条。
但是夸克太小了,就好像是像素一样,很难赋予太复杂的秉性,于是你开始用夸克拼装更高一等的基本粒子。用什么办法拼装呢,你构造了一些小块根据基础秉性相互作用的效应,并在代码里用方程形式表现出来,分别叫强相互作用和电磁作用。这些线条彼此靠近就会按规律黏着或者排斥,然后自动组合出更多类型的高等粒子的框架来。
线条搭建的粒子好像是基本三维容器,用来装承这些最小的一维函数,出于不可重复调用的原因,容器里不能装载属性相同的夸克(泡利不相容原理)。
然后,再设定一些函数之间的相互作用,先设定个与质量有关的,把引力方程写进去。
模拟两个粒子运动一下,嗯,跑的不错,任何时候把时间参数代进入马上就可以得到速度位置,用个微分方程就好。
可是物体一多就不行了,得迭代,多体问题没有解析解就只能求数值解。
这样计算方面就有一个问题了,那就是时间不能连续,得有个最小单位,而且得足够小。如果迭代步长太大结果误差就太大了,那么时间单位最小可以多小呢。
程序员研究了一下主机的参数,决定根据硬件条件的限制来定义,系统的最小时间片是多少呢?
是一个“普朗克时间”:1E-43秒,程序员发现定义完这个变量以后,很多参数也随之确定出来了,比如宇宙的最大速度 = 最小普朗克长度/最小普朗克时间,于是光速就有了。
分子为啥是要用最小普朗克长度呢,因为这个世界要尽量拟真嘛,要让物体运动的尽量平滑,能不跳格就不跳格。但是这事不能表现的这么直白,于是程序员研究了下,正好根据作用效应把粒子质量和速度挂钩起来,用质量来限制速度的上限,正好达到光速时候质量无穷大,从容器层解决了这个问题(洛伦兹变换)。
好了,搞定一些常数,程序员开始跑一个大规模的测试版本,模拟了几万亿个粒子的行为,系统就开始卡顿起来。
程序员有点头疼,这不省心啊,老板不肯投资升级主机,这才多少粒子,离模拟一个星系的距离还很久呢。于是他去请教一个老程序员。
老程序员看了下他的代码,冷笑一声,你这个搞法再多少计算资源都能给你耗尽了知道不,你看看每个粒子都在占用内存和CPU时间,彼此作用起来计算量是指数上升的,有必要吗?你要想想,中间状态有没有必要存在?
可是程序员犹豫了一下说,那也不能直接模拟到终局啊,到了最后肯定是热寂归零。
老程序员用报纸敲了一下他的头说,你程序跑给谁看的,客户在哪?
程序员这才想起来,老板之前指定了一个观察者接口的。对嘛,谁调用哪个接口就马上进行计算就好了。程序员重构了一遍系统,把粒子代码全部脚本化了,这样方便随时调用。然后把系统输出修改成针对意识接口的观察流模式,按照意识接口的调用来驱动计算输出。
这样,整个仿真模型的主循环就大大简化了,不用输出中间状态让模拟计算量大大下降。有了这个方向,很多问题就迎刃而解了
------
我们来看一个经典的基本量子实验:惠勒延迟选择实验。“延迟实验”是由爱因斯坦的同事约翰·惠勒提出的,也是传说中的世界观颠覆者,人生观毁灭者,因果律杀手,理科生躁郁症的重大致病因素之一,毁人不倦的经典实验。
有一位会发射隐形火球的法师,他发射的隐形火球既能像粒子一样飞行,也可以像波一样传播,至于究竟什么时候会怎样我们先放一边。
接着我们又设计了一些道具,包括两块可以一半概率反射火球法术的魔晶O和C,然后还有两个魔法反射镜,两个当做目标的挨打小精灵。好了,按图摆好位置后,一个魔法版的延迟实验我们就可以布置出来了。
接着,我们抓了一位码农,让他来完成这个实验的整个过程。
码农愁眉苦脸的琢磨了一会后,决定这样来安排整个实验的事件过程:
1. 先计算出火球的飞行路径,遍历所有可能路径,并找出路径上可能发生的一切交互事件,因为各路径无独立交互事件,因此系统将所有路径的传播概率全部混合进行计算,从而得到全部事件概率结果;
2. 根据路径的距离和传播媒介,计算传播时间,并将交互事件分别按时间轴顺序排序;
3. 计算完毕后开始执行事件序列,先绘制一个发射动画,因为是隐形火球,因此不用绘制飞行动画,主循环开始进入idle,等待下个事件执行,同时系统继续轮检路径变化情况,轮检频率为每普朗克时间一次;
4. 一段等候时间后,系统突然发现路径上发生了变化,有新的交互物件插入,于是系统瞬间重算了所有交互事件,并刷新原事件序列。因为新的交互事件里存在独立的路径交互行为,所以这次需要先根据概率计算选择出具体子路径,然后再回归计算子路径上的独立交互事件;
5. 事件时间分别到达,依序执行各个具体的交互事件并输出结果。每次交互事件执行后,重置火球的函数并重新递归计算路径和事件。
码农测试了一下,按这个算法非常节省系统开销,反应迅速准确,完美实现了客户需求。
现在大家是否明白了,码农的这个做法从玩家角度来看,似乎就是因果倒置了。光子未来路径上的变化刷新了交互事件序列,而玩家却用还未发生的交互事件(探测器)在判断光子之前的行为,浑然不觉事件结果已经在插入半透镜后被内部刷新过了。
更重要的是,在码农眼里,隐形的火球没有所谓的飞行过程。在没有交互事件的时候,没有必要将一个物体在三维坐标系里移来移去浪费开销,一切运动在码农眼里只不过就是按照速度安排的交互事件排序而已,有交互(观测)才有输出,无交互的时候,系统idle就好。所以在每个火球的交互行为(被观察)之间,火球没有任何行为发生,它只待在代码里等待事件而已。
所以,这个世界上其实也没有什么光子在飞行,光子被发射后就不存在实体了,有的只是宇宙母机的系统在后台默默的计时和轮检路径事件变化而已。光子也不用千幸万苦的耗费百万年的飞行路程来到我们眼里,或者来到天文台的望远镜的底片上,这些事件在我们抬头仰望星空的时候,就已经被合理的插入到某些粒子的事件序列里了,到了该执行的时候,交互事件就会自然触发,而你眼睛里的视神经细胞就会感受到事件的影响结果。
所以每个微观粒子的飞行运动过程,其实都是系统在后台不断刷新一个未来待执行的路径交互事件序列而已,只要事件还未被执行就可能因为环境变化而改变,所以随便科学家们把路径上的透镜插来插去都没关系,系统最终只会以事件执行前最后一个普朗克时间时事件的刷新结果来执行输出,光子也不用那么劳累隔一会就要去回溯更改历史。那一百万年,它哪里都不在,只有系统在后台假装它在飞行穿越空间而已。
这是一个神奇的思想模式,一旦你们开始用程序员的思维理解量子行为后,很快就可以给各种量子实验加上算法解释,包括什么魔术擦除实验,什么量子纠缠,什么双缝干涉,还有什么猫猫狗狗的,观测者难题也迎刃而解,整个世界顿时全然不同。
------
量子的另外一个诡异的行为,这个诡异行为就是所谓的“量子隧穿效应”。
所谓量子的隧穿效应,就是指粒子在某些尺度下,会随机的直接越过一些高能的位势垒,通俗说就是穿墙而过了。只要墙壁足够薄的情况下,基本粒子靠近墙壁的时候都有可能概率直接穿过临近的墙壁屏障而出现在墙壁的另一边。这听起来自然也是违背常识的,为什么尺度小的一定程度,阻挡对于粒子来说就可以偶尔消失掉?这在经典物理学中是无法解释的,一个小球想要穿过哪怕是极薄的纸,也不可能既不付出任何能量,也不弄破这张纸。可是在量子世界里,粒子就是这样诡异的越过了足够薄的障碍。
也正是存在这个隧穿效应,才导致我们现在的微电子芯片技术发展到1nm时代就碰上了继续缩小尺寸的物理学障碍。芯片里阻隔电子的材料如果尺寸小到5nm以下,量子隧穿效应导致的漏电现象就不可忽视了,如果尺寸进一步减小,那么漏电问题将更加严重,从而导致芯片的逻辑电路无法正常工作。这个问题已经成为芯片技术继续发展需要克服的最大障碍了。
怎样理解这个效应呢?如果按照量子理论的一些传统理论,是用量子具备不确定原理来解释,量子具有一些不确定的能量,偶尔它们可以从虚无中凭空“借”到了一些能量,然后借助这些能量就越过了墙壁,从而实现了凭空穿墙……是不是听起来也很玄幻?
好了,那按本文的习惯,我们先看看游戏中有没有这个现象。
游戏中不仅有,而且还相当的普遍!游戏中的这个现象简单说就是3D物体的运动穿模。
什么是3D物体的运动穿模呢?就是说,在3D游戏中,运动物体有时候会在碰撞的时候穿过障碍物体,或者是穿到地形里面去。
这其实是一个游戏BUG,为啥会出现这个现象呢,3D游戏的程序员都很清楚,这其实是一个碰撞检测算法的精度问题。在3D游戏里,运动物体看上去像是连续运动的,比如一辆汽车,或者一个火球,但实际上呢这些运动物体的位置却是间断更新的,因为在计算机的计算过程里不可能有什么真正连续的事件,任何运动其实都是离散的。
------
其实我们得到了一个非常惊人的看待宇宙基础规律的视角,比如我们可以不把光速是当前时空速度上限当作是一种最底层的初始规律,而是把它视作一种现象,那么这个宇宙必然还有更底层的规律导致了这种现象的出现。
除了光速,我们甚至可以用类似的角度来看待物理学中的各种基础常数,尤其是那些有量纲的常数,它们很可能不是绝对不变的宇宙初始变量,而只是某些更底层的物理规律导致的一种结果。比如电子的电荷数值,或者质子的质量等等。
从另一方面来想,既然我们感觉常数之上还有更底层的规律,那么常数绝对不变也不是那么不可挑战了。就好像光速,虽然在底层上有普朗克长度和时间做为计算基础,但是更基础的约束很可能来自宇宙要绝对避免不同物质在相同时空的重叠可能,那么在某些特殊的情况下(比如量子尺度运算精度不足造成的重叠BUG),这个光速限制就有可能是会被打破的,这也体现了一种很容易理解的程序思维:下层逻辑必须服从上层逻辑的约束。