黑客帝国中的先知,是一个比较出名的角色。对先知主流的解释为:
先知(Oracle)是第二代矩阵开始,设立的角色,负责研究人类的心理,研究最终如何摆脱人类,使机器文明具备独立创新的能力,同时也建立了包括救世主(the one)程序,Zion世界在内的一系列配套的矩阵升级机制稳定机制。
母体(Matrix)任务,一是榨取被接入矩阵中的人类头脑中的创新思想,由设计师(Architect)来负责;另一个是研究如何使得机器文明获得摆脱人类独立进行创新的能力,同时又能保证机器文明本身的安全,防止出现无法预料和控制的结果,由先知(Oracle)来完成。所以设计师(Architect)竭力保持矩阵的平衡,并负责对矩阵定期升级,而先知则在母体中研究人类心理,设法找出人类创新能力的奥秘。救世主负责具体执行。尼奥是救世主(the One)的载体。
也就是说,先知指点尼奥,尼奥去实现先知的预谋,配合默契。
事实上这只是电影给非程序员给的一种角色设定,如果从程序员或软件开发的角度去看,完全不是上面说的那回事儿!
首先,从总体上看,母体内人员墨镜风衣,光鲜亮丽;母体外人员灰头土脸、邋里邋遢。这是在隐喻精神世界中和现实世界中的程序员形象;要知道,每一个程序员在编码时的自我感觉都像超人,但真有这种感觉的人,在现实世界中的形象一般都一言难尽!
也就是说,电影中的每个角色都对应现实世界中一个程序员/软件开发者角色。
那先知对应谁呢?就是项目负责人。
何为先知?就是知道未来可能发生的事。如果某个软件由你负责开发,必须充分了解用户的需求,并对软件的功能/行为会了如指掌。从软件使用者角度看,你肯定事先了解软件中发生的任何一件事情,当然也可以预测软件的行为和结果。要让最终用户欣赏你的软件,项目负责人还必须了解用户的心理层面的需求。那么,在指导用户使用软件的过程中,项目负责人自然就是那个研究“人类“心理,预知结果的“先知”了,尼奥、墨菲斯等人其实是用户。在剧中先知负责开发的是哪个应用软件系统呢,当然是“锡安”了。剧中所有的“人类”,都是“锡安”系统的使用者而已。当然,“锡安”系统不是单独存在,它是矩阵系统的延伸,是矩阵新功能的试验场。
其次,先知最常说的一句话是:一切在于选择。
编程中的IF语句掌控所有路径选项,所以软件开发者很明白在一个节点上会有多少个选择项,但是如何选择,决定权却在使用者手里,作为项目负责人,无法预先设定哪一个选择,一般也不知道选择的细节。这就是先知,或者说项目负责人对用户说“一切在于选择”的原因。在使用软件过程中,用户确实会出现使用某个功能的选择项后反而产生疑惑去找项目负责人咨询的情况,所以尼奥见先知时的谈话:“因为你不是来做选择的,你已经做出了选择。你来这里是想弄明白你为什么这么选择。我以为你现在已经明白了。”,说的就是这件事。
从这个角度看,先知和尼奥是软件项目开发者和客户的关系,不过,这个尼奥这个"客户"特殊在,他可以和项目负责人进行心灵对话。真正和先知有纠葛的人是哪个白胡子老头-设计师。
他俩的关系,可以从尼奥回到代码源头,和设计师的对话看出来:“如果我是母体之父,她(先知)无疑是母体之母。”,就是技术负责人和项目负责人的关系。技术负责人负责软件整体方案制定和架构设计,项目负责人负责编程实现(生产出来)及向用户部署使用。另外为什么尼奥一定要回到源头呢?“锡安”系统设定的运行结果回归,对实际效果进行验证只是一个内在解释。对于一个资深技术宅,把玩一个软件久了,自然有想到软件开发的地方一探究竟的冲动。就像一个倒腾Windows系统的高手,如果有机会,肯定想去Microsoft总部去看看。这就是想回到源头的原始冲动吧。
从剧情上看,项目负责人和架构师似乎在开发第6版的“锡安”软件系统时,一些实现细节上意见不统一,这在软件开发中也是常有的情况。
最终呢,两者矛盾太大,第三部先知换人了。先知说:"我作出了选择,我也付出了惨痛的代价"。就是项目负责人选择站在客户的角度,没有听从架构师的设想做开发,闹的有点大,貌似跑路了,导致Bug(史密斯)泛滥。结果在项目第三期的时候,被换成其他项目负责人继续做。当史密斯要感染先知变成自己时,先知说:“凡事有始就有终,做你想做的事吧”。可见先知选择放任史密斯泛滥的结果,继续玩这场逼宫设计师的游戏。
最后,从软件开发这个角度看,就不难理解"黑客帝国3"中先知和老头在片尾对话的含义:
Oracle: Well, now, ain't this a surprise. Architect: You've played a very dangerous game. Oracle: Change always is. Architect: Just how long do you think this peace is going to last? Oracle: As long as it can. Oracle: What about the others? Architect: What others? Oracle: The ones that want out. Architect: Obviously, they will be freed. Oracle: I have your word? Architect: What do you think I am? Human? | 先 知:好吧,现在,这不是个惊喜。 架构师:你玩了一场非常危险的游戏。 先 知:(因为)事情总是在变化。 架构师:你认为这种和平会持续多久? 先 知:只要可以。 先 知:其他的呢? 架构师:还有什么? 先 知:那些想要出去的。 架构师:很明显,他们会被释放的。 先 知:我可以相信你的话吗? 架构师:你觉得我是什么?人类? |
什么危险的游戏呢?项目负责人有意制造了病毒(复活了Smith),使系统崩溃,来证明系统架构中存在问题,然后让用户重新提需求,来胁迫架构师改变最初的设计(PS:有些关于电影的解读中说,是架构师复活了史密斯,然后失控导致病毒泛滥。如果是这样,那最后架构师应该说:“我玩了一场非常危险的游戏”)。最终架构师选择向项目负责人妥协,改变了第6版“锡安”软件的设计方案,避免“毁灭式”的软件升级,达到了一种“和平”。那释放出去的又是谁呢,无非就是系统内的程序员或维护人员变成客户的人。一般公司里发生这种状况,老板都很头痛的。
总的来说,最后项目负责人和架构师(技术负责人)携手言欢。其实就是说,架构师坚持原则是对的,但也要根据具体情况适当更正软件架构( Change always is),不要和项目负责人以及客户闹得太僵( Obviously, they will be freed),搞不好可能让项目崩溃(You've played a very dangerous game)。
最后的两句话,比较有意思。电影的台词来了个双关,一是从叙事者角度强调了这里是母体(Matrix),电脑人的世界(程序员的精神世界)里没有虚虚实实,尔虞我诈,严格按规则行事,一定说到做到。二是从公司运营角度,表明架构师的身份也是老板,别和外面的“人类”(客户)相提并论。老板是讲武德地,没有客户或客户需求那么善变(提醒先知,不要用“Change always is”去评价自己人)。