程序员讨论《黑客帝国》(二)平衡和进化

   接上一篇《真实与虚拟》。

     我有点纳闷,机器之主在他创造的虚拟世界中拥有无上的能力和权威,那他想解决任何问题不都轻轻松松吗?他想毁掉Zion,一个命令而已,就如同拔掉自家后院的杂草一样简单,又何必让机器如此大动周章,甚至屈膝让尼奥去帮忙?

     这让我想起了一个有意思的问题,在我们设计的程序中,能量和物质是守恒的吗?

     绝大多数人会拍脑袋说,当然不守恒,我设置一个变量value,可以让它等于任何值,从0到正溢出皆可。不过,当设计一款网游的时候,你会发现一些有趣的事实,如果玩家数量不变,而新的更好的装备不断刷出来,那么这个虚拟世界会发生“通货紧缩”的。  如果有黑客入侵了系统,使游戏中涌入大量金钱,则会迅速通货膨胀,如果数额超过一定界限,这个系统会失去平衡而走向崩溃。

     我猜想,这就是所谓平衡的世界,但凡有死亡与变革的系统,都会开始产生属于自己的运行规则,而保持在一种动态平衡的过程中,而即使是这套系统的设计者,依旧不能为所欲为,除非他希望自己亲手打造的系统立刻毁于一旦。

     这就是神奇的复杂系统,平衡是它的一大重要特性,它是去中心化的超级复杂系统,中心即使存在,也只能以一种影响者而非管理者的形式存在。复杂的蜂群行为,并非由一只聪明的蜂王负责,而是靠着无数小蜜蜂组成的。想想人脑,过去几千年来,有很多人都认为人的至高无上的灵魂处于脑中一块特别神秘的微小区域。于是有人把大脑一点点的分解开,尝试找出所谓的“脑洞”,结果可想而知。每一个细胞,每一条神经都没有智能,但是几千亿的神经汇总起来,便拥有了智能!

     平衡的另外的一个意思,就是这样的复杂系统在背后肯定有问题和缺陷。每个程序员都惧怕自己系统中的问题或者bug。每一条语句都经过了仔细的检查,每一个子模块都经过了完整的测试,每一个子系统都经过了完整的联调,那么最后的系统一定没有问题吗?一定是稳定的么?

     这样的系统还是会存在问题,有智慧的系统就会出问题甚至导致崩溃和死亡,而简单系统因为简单,就根本没资格进化,更没资格死亡。个体的”死亡“状态是个体极大进步的钥匙,想想电影中尼奥两次能力突飞猛进,都是因为死亡或者眼睛瞎掉;系统的崩溃是系统恢复和更新到全新状态的必由之路,所以母体才要经历六次重启。

     不仅如此,完美的系统在数学上就是不存在的,这就是所谓的哥德尔定理。这个定理有很多版本,我把其中的一个我觉得还不错的版本抄在下面:

  “任何一个相容的数学形式化理论中,只要它强到足以在其中定义自然数的概念,就可以在其中构造在体系中既不能证明也不能否证的命题。”  

      本人数学学得不够好,很难准确理解这个定理,但大概意思就是让一个行动如计算机的机器(或者某数学家)按照它自己订立的体系一点点的往前论证时,总有一天它会把自己搞停机或者疯掉的。而一般的人,仿佛不会被这个定理所限制住,大妈的首要目的是养活自己的几个孩子,囚犯的想法是如何逃出囚笼... 普通人根本就谈不上完美,也根本不想去解决那些”让人抓狂的“哲学或数学问题,所以人家活得好好的,也不会象数学家或者哲学家因为搞自己的理论到崩溃自杀。所以机器一定需要人类的这种”特性“,同时再一次印证了那句话,”无知是福“。

  回到我们的第一篇文章结尾的那个问题,人类在第一代母体内所谓的“完美世界”中水土不服,导致大量与之连接的人类死亡。“完美的世界”首先就不应该存在,当人类一切的要求都满足的时候,他还期待什么呢?只期待死亡了。完美的世界就是不平衡的,它必然会迅速崩溃。史密斯说的话很对,人类通过苦难认识自己,苦难是必备的,没有苦难,幸福就没有了意义。

 

      出现在我们眼前的有这些词:复杂,平衡,去中心,崩溃,更新和进化。

      就像电影里指出的,尼奥和史密斯就是这个复杂系统中的”崩溃和更新“。它们是同一块硬币的两端,都是由于整个世界(绝不仅仅限制在母体里)这一超级复杂系统的错误累积产生的。尼奥是正面,是这场变革中积极的成分,而史密斯却代表了相反的破坏力量。它们在电影里几乎一直都是平衡且在不停的进化,但其各自的进化过程有所不同,是很有意思的。

      史密斯作为特工,它从头到尾只是一段程序,再牛也只能是一段程序。但尼奥不同,它既是人,又是程序。这个不难理解,整个电影中,尼奥应该一直接在整个系统中(参考第一节,锡安也是虚拟的),它拥有人的一切特征,融合在系统之中,”甚至经历着爱“,同时还携带了甚至高于造物主级别的”系统之源的源代码“,这些代码包含些什么呢?

     武功,IFight接口,在电影中程序和人类间的攻防之战使用了具象化的武术形式,谁都能说谎扯淡的, 但牛不牛逼打一架就知道了,这个设定我很喜欢。尼奥的战斗力曲线简直就是指数形式狂飙啊。

     瞬移的能力,这能够直接忽视系统时空的限制,我们可以称其ILighting接口 。

     复制的能力,接口ICloneable,电影里真是浅拷贝啊。尼奥应该包含这个能力,但不会让他现在就用,我觉得后面23人重建锡安的时候用得着。史密斯从尼奥这里获得了如此强大的能力,并应用的如此彻底,不仅拷贝了整个母体,连锡安里的人都未能幸免。

     预测的能力,IForecast接口。尼奥和史密斯两人都没有,但先知有。其实电影里的预测绝非魔法,而是推理。先知作为如此强大的世界之母,她能读取任何连在计算机的人类的想法,综合它已掌握的信息,就能推断的相当准确。但她不能推断人没有做出的选择。如同天气预报,太长的预测没有意义。但最后,史密斯复制了先知后,便拥有了一定的预测能力(在第三部电影的最后打斗说,”我预测过这个场景,就是这里,你躺在这里,安德森先生“)。

      尼奥和史密斯的进化,实际上代表了系统到后来的错误累积的越来越多。但他们的进化方式完全不同。

      尼奥原本就拥有这些能力,因为他是the one. 只不过被一层层的保护覆盖起来,而他的能力取决于对自身的认知(”认识你自己“)。每当一次严重的伤害甚至死亡,他的保护就会少一层,其能力就会释放出来一些。

      而史密斯的进化,则来自于一种类似”基因编程“的技术,模仿了真实生命中染色体的作用。它被尼奥撕碎后却获得了尼奥潜在的复制能力。于是这种能力便为他获得了大量的收益。通过重组获得了先知的预测能力。 事实上,基因编程已经在机器学习界由来已久,通过对计算表达式不断的组合和变异,实现对复杂问题的自动求解。(.NET程序员可以参考著名机器学习库AForge.Net下的Gene库,这个库提供了写的非常清晰完善的基因编程实现,同时提供源代码和样例)。

     想想看,史密斯获得了无数的能力,在自己的那个类后面跟了一排实现的接口:Public class AgentSmith:  Agent, IForecast, ICloneable, ILighting...如同获得了众多的成就勋章一样看着非常酷炫碉堡。但他就没有尼奥隐藏在人类本性的那个接口:ILove。

     在最终,尼奥和史密斯互为镜像,尽管史密斯看起来甚至更强一些,但实际上尼奥有爱和对全人类的责任心支撑着。这种力量是史密斯这种追求所谓最大化效益的程序不能想象的。所以最终如同正负粒子湮灭,正反两端合并,系统重启,人类和机器社会进入了新的纪元。

     锡安的人民因为能够提供自圆其说的故事,所以应该不会再像前五次一样做记忆清空和重写了,正好有一个完整的英雄故事值得称颂,而在母体中的人类,思维已经被史密斯烂虐过一次了,估计还得重新选择性清空一下。虽然第二天的晨曦很美好,可是大白胡子要干的事情也不少呢。

     

     在电影中, 出现了大量的隐喻和文字游戏。比如崔尼蒂,墨菲斯,尼奥这些人名,洞穴和飞船的隐喻等等,这些都有介绍。值得注意的有那些千奇百怪的门,门就是系统和场景间的接口和通道,钥匙就是这些接口的权限。墨镜就是人或机器对自己的防御和装饰,两个人都摘下墨镜时,才能开诚布公的交流。而大胡子这种级别的人,根本不需要装饰,这也挺符合真实人类社会的情况的,除了遮阳,墨镜就是为了掩饰身份或装逼用的,而真正牛逼的人根本用不着。电影里有数不清的程序与真实世界的隐喻,品味起来入木三分。真是”程序如人生,人生如游戏”啊。

      

     本系列后面应该还有一节,但估计写起来难度非常大,我先做做尝试。这个命题就是”爱“。如同电影中,拥有爱的程序一定要在第三集体现一样,这是最难但也最有想象力的一个“字”。

时间: 2024-09-12 04:01:13

程序员讨论《黑客帝国》(二)平衡和进化的相关文章

程序员讨论《黑客帝国》(一)真实与虚拟

  大概大家小时候都有梦魇的经历,一旦发烧或者特别累,就会哭闹,脑海里会出来各种恐怖但又说不清的东西,无论如何就是要起床去"做什么",父母怎么压都压不住.让我印象最深刻的是98年我和父母爬完庐山,在庐山疗养院里一个人累的睡觉,从下午睡到晚上八点,在没有父母的乌黑的房子里不受控制的哭了一个小时,山风狂野啊,现在想起来都后怕.       翻起八零后孩子必备的<少年儿童百科全书>,才知道梦魇的原因是大脑发育还不够健全的正常表现,长大后就消失了.如今,笔者早就成人多年,连黑客帝国

程序员讨论 《黑客帝国》 (三) 情感

   人总会与人比较,找出自己拥有而别人没有的东西,从而建立起自信心.早期机器就已经在记忆和运算能力上超越人类,于是人类嘲笑机器没有智慧,突然有一天机器出现了智慧,能解决复杂问题,学会"骗人"了.人类傻眼了.想了半天,我们还有什么是独特的呢?于是"情感和爱"便成了人类自尊心的最后防线.      这大概就是很多科幻电影的主题,机器的体能智慧和以及各项指标完虐人类,但最终人类因为爱战胜了机器,比如终结者2018和黑客帝国.      但实际上,情感真的是人类的专利吗?

.net程序员的盲点(二)

两个"属性"引起的歧异-property和attribute的区别,这虽然 没有"一个馒头引发的血案"那么严重,但是也足以成为.net程序 员的技术盲点之二. 对于property和attribute这两个名词都叫"属性 "的问题,来源于国内it书籍翻译界的疏忽. 其实它们来源于两个 不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念 .下面我们来说明它们的异同. Attribute Attribute

未来的程序员面临着怎样的职业变化

作为程序员,我们总是身处于如万花筒般变化无常的技术世界里.我们可能也是那群能够最早感知到科技变化所带来巨大影响的人.然而,面对这一波又一波向我们袭来的技术变革,我们是否也能从中窥见一丝规律,从而使自己更好地应对未来呢?让我们打开脑洞,预测一下未来10年,程序员这个职业可能发生的变化. 程序员将变得更加全能 许多文章或艺术作品中将程序员的未来描绘得过于科幻或戏剧化,而基于我们看到以及正在发生着的现实,有一点却是不争的事实--程序员将变得更加全能.如果你是一名iOS程序员,你一定能感受到最近几年市场

作为程序员必须知道的10大网站

问题描述 1.CSDN(http://www.csdn.net/)这个地球人都知道2.MSDN(http://www.msdn.com)做.net的不去就算做.net的3.博客园(http://www.cnblogs.com/)这个水还是比较深的4.编程中国社区(http://www.hello-code.com)还不错,内容覆盖比较广5.iteye(http://www.iteye.com/)貌似被CSDN上了6.codeplex(http://www.codeplex.com/)微软的一个开

有关程序员的十个预言

作为程序员,我们总是身处于如万花筒般变化无常的技术世界里.我们可能也是那群能够最早感知到科技变化所带来巨大影响的人.然而,面对这一波又一波向我们袭来的技术变革,我们是否也能从中窥见一丝规律,从而使自己更好地应对未来呢?让我们打开脑洞,预测一下未来10年,程序员这个职业可能发生的变化. 程序员将变得更加全能 许多文章或艺术作品中将程序员的未来描绘得过于科幻或戏剧化,而基于我们看到以及正在发生着的现实,有一点却是不争的事实--程序员将变得更加全能.如果你是一名iOS程序员,你一定能感受到最近几年市场

帅的程序员选择专业,丑的程序员泛泛涉猎

程序员分为两种:帅的和丑的--帅的程序员技术精深,可堪重任,是某个领域的专家:丑的程序员泛泛涉猎,一知半解,啥都会一点却都是半瓶水.当然首先要声明,我是属于那种很丑的程序员,不过我还年轻,通过不懈的努力,有朝一日一定会成为一名很帅的程序员! 特别声明:虽然绝大多数程序员长得都很帅,但是长得帅并不代表就是"帅的程序员". 一·丑的程序员 列夫托尔斯泰曾经说过:"帅的程序员都是相似的,丑的程序员各有各的丑法." 1.不爱学习的程序员不帅. 2.爱学习但不勤奋刻苦的程序员

不要自称是程序员,我十多年的 IT 职场总结

如果我可以给每个工程教育增加一门课,它不会涉及编译器.门电路或是时间复杂度,而是一门介绍行业现实的入门课,因为没人教过这些,所以我们遭受了很多不必要的痛苦和折磨.希望本文可以成为年轻工程师职业生涯的自述文档( readme.txt).目的是填补"现实世界"运作方式与教育之间的空白,并让你快乐起来.我从"一个还算聪明,但是不自信.毫无商业经验的工程师",耗费了十年多的时间,经受了很多的苦难,才总结出这些经验之谈.我不会把这些当成金科玉律,但希望它可以告诉你一些大学职业

程序员常去的14个顶级开发社区

 开发社区-程序员开发社区"> 作为设计师,学技术的最大好处是能够更加理解程序员,容易沟通,有利项目协作.作为男设计师,如果你喜欢上了程序媛,这个技术优势会为你个人形象大大地加分!谁不爱技术帝的设计师呢?从新手教程到大牛支招,这组网站都有,绝对赶超程序员的首选! 下面这张图列出了14个程序员经常逛的顶级开发社区,作为设计师,你应该要了解其中一个或者最好是多个,并且学会使用它们,利用里面的资源提高自己的编程能力. 我们期望在开发者社区中获得什么? 我们希望能得到切实的帮助,而不是获取一些唠叨