有意思的是,有人觉得《源代码》是烧脑的,但是却偏偏又能看的懂一些。
也有人觉得《源代码》其实很简单,可是却偏偏有一些地方看不懂。
于是随着电影上映,网络上开始出现了许多各种各样,五花八门的解读,解析的影评。
“有人说《源代码》太烧脑,但是实际上,《源代码》的情节很简单!就像《红楼梦》需要看懂前五回一样,《源代码》只需看懂了第3335分钟这2分钟,就可以理解这部片子了!
这2分钟里,教授通过解释大脑的两个特性来解释了源代码的由来,他解读出来的大脑2个特性就是:1,人死后意识不会立刻消失;2,大脑死亡前意识会留下8分钟不可磨灭的深刻记忆(残像)。
总而简言之,人死后,大脑里都会有8分钟的记忆不会马上消失,可被提取、叠加,重建成死者生前最后8分钟的画面,该画面数字化后就形成教授口中的“源代码”,这里所谓的数字化也许也可以理解为生物信息数字化。
了解了这一点,就不难理解这个超级简单的故事:
林云斌是一名战士,2月前在执行任务乘坐直升飞机返还时“死亡”,变成了植物人,注意,这里是植物人,这一点相当重要!,被教授通过合法手段弄到实验室维持生命,等待接受任务以便开展源代码计划。
瘸腿教授等了2个月,终于发生恐怖事件,一辆火车被恐怖袭击,车上无一生还,恐怖份子还在网上放出消息会继续在市中心进行一系列恐怖活动。
为了找出凶手,教授立刻赶赴现场采集了所有死者的大脑残像,并叠加了每个人生前8分钟的大脑信息,通过生物信息数字化重建了一段仅仅持续8分钟的源代码,当然我们或许会疑惑,这个采集重建过程未免有点不可思议的太快了,不过这不是重点,重点是这段源代码里展示的是一个连续8分钟的虚拟世界。然后教授找出跟他的植物人林云斌体征比较匹配的其中一名死者李正,作为源代码入口把原版属于李正的记忆删除,并植入林云斌的意识代码,使其可以进入源代码中寻求真相。注意,这里原李正的记忆被改写或删除了!
因为只是一段生物源代码,所以教授认为林云斌的意识在源代码中所做的一切只不过是给源代码的这段时间重新赋值而已!
包括植入林云斌的意识也是一种重新赋值,不会改变现实世界的既定事实,但是有助于通过对源代码的不停赋值重组来找到真凶!
其实简单地说,就相当于电脑的“破解密码”,林云斌在代码运行中不同的选择和决定都是一种重新赋值然后运算出不同结果。
但是教授自己并不知道,他无意中打开通往新世界的大门。
陈娟被救活眼睁睁看着自己被撞死后,必然还要继续生活下去;陈娟被枪击打死必然不会被报道死于火车爆炸;自己在源代码中打电话给教授差一点接通.
种种迹象让不停穿越(再赋值)的林云斌慢慢意识到:8分钟后,源代码虽然运行完毕,但是与这8分钟运行相关的世界仍在继续,且与现实世界不同!这是重新创造的几个不同的新世界!如果自己改变其中一个世界的必死结局也许可以让自己在这个世界继续存活下去。
所以他强烈要求女上尉再给他一次机会,并在结束后终止自己在现实世界的生命,也许他是怕自己的意识被拉回现实世界吧。
后面的就很好理解了,林云斌的意识在新创造的世界中改变了李正的命运,意识得以在其身上延续,而此时新世界中没有发生火车爆炸事件,所以植物人林云斌还躺在实验室里等待任务,而女上尉也接到一条莫名其妙的短信。
短信中,新李正通过女上尉暗示植物人,总有一天,植物人林云斌的意识也会在一次新世界的创造中改变自己的命运,并在这个世界中以另一种形态生存下去的。
过于简单有时恰恰不能把事情交代清楚,所以我再尝试用稍微复杂点的语言再补充说明清楚:
源代码到底是什么,怎样形成,特别有意思,并且对理解本片至关重要。博士指出源代码形成是依据大脑的两个特性:
第一个特性是人死后脑电波不会马上断电。换言之,人死后在一段时间内大脑内所有信息和各种记忆跟生前是没有两样的,当及时采用先进科技通电维持,是可以让大脑信息得以提取和永存的。
继续深究下去可以很容易得出一个结论,源代码的世界不是由一个人的脑信息构建的,而是由火车上所有死者的脑信息交叉、叠加而成,这个世界也许没有现实世界那么完整,但已经非常逼真地接近了。这一点很好的解释了源代码世界为什么如此多姿多彩,且能调用死者很久之前的记忆,以及可以跟火车以外的世界相联系。
第二个特性是脑电波在断电前会将死亡之前8分钟逐渐强化成深刻记忆(残像),这个记忆相对于第一个特性中的各种大脑信息要更为清晰、实质,足以让教授将所有人的8分钟叠加成一个非常清晰的虚拟世界,并在其中很方便的找到李正的记忆加以清除。
这里必须加以说明,李正的8分钟记忆是肯定被清除了的,因为陈娟认识他,但他不认识陈娟。但是作为构建整个源代码世界的信息提供源之一,李正8分钟前的全部大脑信息因为没有8分钟的记忆来的深刻,是没那么容易被搜索且清除的,所以林云斌每次对着镜子看,都能清晰成像出李正的样子,要知道,李正对于林云斌来说是素未谋面的。
为什么要清除李正的记忆残像呢,其实是为了让林队长的脑电波有一个相对匹配的载体得以运行。他并非真死,他实际上是变成了植物人,但是大脑没死,但是他在假死前也形成了较强烈的死前记忆,并且在之后的2个月内没有形成记忆,而这个死前记忆也是被教授清除了的,所以他只记得死前是在机舱里,但不记得被击中,直到有人提起后才让他恢复记忆——简单地说就相当于硬盘数据恢复。
源代码产生的新世界可以无限持续下去,这个伟大发现是被林队长在多次穿越中慢慢体会出来的。
教授应该不知道自己无意中打开了重建新世界的大门,当然这是我个人的想法,个人不太倾向于他知道内情而故意隐瞒真相这种看法。
当林队长第二次穿越的时候,他就开始发现“是同一辆火车,但又有些不同”。教授的本意是让他用尽量不影响他人他事,必要时甚至可以直接枪杀每一个人轮番试验出谁是凶手的这种“低调”方式找出真凶,但是偏偏林队长却比较高调,他“愚笨”地几乎干扰了每个人的记忆,大刀阔斧的对这段源代码重新赋值,他渐渐发现,运算结果或者说某些人的记忆起了相应的变化。
最严重的一次是第三次穿越,他带着妹子跟踪一名乘客下车,这名乘客既然没死按理说不会在源代码构建信息源之内,下车后的行为也应该是无人可知,但由于他对这段源代码的重新赋值(跟踪),并作为一个全新的记忆去记录所见的一切,填充了乘客的行为空白。
更有趣的是,当他在跟乘客搏斗中,火车爆炸了,他并没有在第八分钟死亡,而陈娟的命运同时也被改变了。
如果不是意外被火车撞死,他甚至也不会死去回到现实世界。
这一切(以及后面更多的迹象)让后来懂得了源代码原理的他非常清楚的认识到,并非如教授所说,他不能存在于李正的8分钟记忆之外,教授的前提是李正死掉了,如果他没死呢?他认为,只要他不死,他的脑电波就可以一直在李正身上长存。
这个概念的形成在第五次返回时已经较为清晰,而在乞求女上尉给他最后一次机会时已经相当明朗了。而终止现实世界林队长的生命不是为了防止脑电波自动返回,而是为了防止教授人为手动的强行拉回。
最后,平行世界这个词严格地说是不太妥的。
应该说,每次传送,打开的都是一个全新的分岔世界。
为什么这么说呢?假设第一次穿越是在事发当天下午3点整的话,穿越到的第二个世界是早上7点40整(48分发生爆炸),3点和7点40,很明显在时间上2个世界是不平行的。
那么继续,假设第一次传送回来后立刻发动第二次传送,那么时间应该是3点08分,传送到的第三世界却仍然还是早上7点40整,显然跟第一世界不是平行的,甚至跟第二世界的时间和事件也不是平行的。
依此类推,他每一次穿越,打开的新世界都以7点40为起点,与第一世界绝对不平行,它们相互间也不完全平行,只能说是从第一世界不同的时间点分岔出去的新世界,就像他最后说的,它们都是因为不同的选择而导致的人生的不同岔路。
所以分岔世界实际上是人们在某一刻做出不同的选择时产生的全新世界,这个世界克隆了这个时间点之前的世界信息,之后则根据人的选择来自由发展。只不过通常大家只有一次选择权,而他意外的获得了多次选择的机会,而最终他选对了。影片最后他说教授他们实际上是创造的一个新世界就是这个意思了——而不是什么与既有平行世界打开通道之类或者改变历史什么的。
其实从技术名词方面来说,这部电影也挺有趣的,源代码是什么?计算机应用程序其实就是一堆二进制代码。这种二进制代码实际上是一种机器语言,能够被cpu所识别。应用程序运行时,系统将该程序的二进制代码载入内存中,然后交给cpu去识别并执行。这些二进制代码就是源代码。
进程是一个运行中的应用程序。
线程是进程中某个单一顺序的控制流。线程在进程中被创建,并且执行一定的任务,任务结束后线程终止。
线程从属于进程,一个进程可以同时包含N个线程。这N个线程在时间上是同时运行的,直到各自任务结束后终止。可以理解成高速公路上的N辆汽车,同时向前开,它们有不同的目的地,会在各自到达目的地后停下来。
从这个来解读的话,你会发现,其实真的非常形象。
首先整个世界是一个运行中的应用程序,是一个进程。我们都运行于这个进程中。
而基础是建立在一个设定上,那就是人类在死亡的时候会保留最后8分钟的记忆。电影里面的教授们认为这8分钟的记忆是“世界”这个应用程序中的一段源代码。
火车爆炸事件发生后,教授把火车上一名乘客死前8分钟的记忆(源代码)保存了下来。他的想法是,可以启动一个线程去反复执行这8分钟的代码,找到恐怖分子以避免将要在市中心发生的第二次爆炸。但是他们并没有掌握创建线程的能力,只能利用现有的线程。林队长牺牲,只剩下大脑还是活动的,这个活动的大脑就是一个线程。
而被反复启动林队长的大脑(线程),让该线程去执行那8分钟的源代码。理论上,这8分钟的源代码执行完毕后,这个线程就会终止。林队长的大脑就会从中脱离出来,回到初始状态,电影中用林队长处于一个全封闭的铁盒子中来表示这一状态。
教授的理论似乎在实际运行过程中得到了验证,因为林队长在每次任务执行8分钟后确实回到了初始状态。
然而教授错了。林队长每次在任务执行8分钟后回来的原因,并不是因为那段8分钟的源代码执行完毕了,而是因为林队长每次都死亡了,要么被炸死,要么被火车撞死,要么被恐怖分子枪杀。被火车撞死和被杀那两次,林队长是在火车爆炸后才回来的,时间长于8分钟。所以该线程不是终止于源代码执行完毕,而是终止于终止指令(林队长死亡)。
所以最后电影结束的时候,有两个世界(进程)在并行的运行,一个是原来那个世界,一个是克隆出来的新世界。
原来那个世界里,火车爆炸发生了。克隆出来的新世界,火车爆炸没有发生。”
(本章完)