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

  大概大家小时候都有梦魇的经历,一旦发烧或者特别累,就会哭闹,脑海里会出来各种恐怖但又说不清的东西,无论如何就是要起床去“做什么”,父母怎么压都压不住。让我印象最深刻的是98年我和父母爬完庐山,在庐山疗养院里一个人累的睡觉,从下午睡到晚上八点,在没有父母的乌黑的房子里不受控制的哭了一个小时,山风狂野啊,现在想起来都后怕。

      翻起八零后孩子必备的《少年儿童百科全书》,才知道梦魇的原因是大脑发育还不够健全的正常表现,长大后就消失了。如今,笔者早就成人多年,连黑客帝国完结都过去了十年。我有时候还会因为缺氧,或者生病睡很久,突然醒来的时候,感觉一切都不真实,看着天花板不知道自己在哪里。直到站起来洗把脸,好好清醒一下,才慢慢缓过神来。事实上我在半小时前刚经历过这样的感觉,所以才有这篇文章。

     还有一种情况,你有时候会觉得某些场景似曾相识,有时候你把它归功为自身预测未来的超能力的体现,我也偶尔会沾沾自喜,不过换个角度说,是不是因为大脑并没有回忆起相似的感觉,而是错误的给出一种“似曾相识”的信号而让自己误以为“似曾相识”?不是没有这种可能。大脑如果想骗你,你一点办法都没有。

       这就是所谓的“认知”:我们的认知总认为一切都是理所当然的,比如刚进入一个新环境,人会立刻调整他的认知,去适应这个新环境。可是当你做梦,喝多了,或者生病出现幻觉的时候,事后你会发现自己那么好骗,那时会相信许多在平时绝对不接受的观点。

     “认知偏差”有时候会如此的扭曲真实,想想那些你不能理解的邪教徒,一个以前善良的人居然会成为恶魔。如同只有双目失明才知道眼睛的重要,只有亲人离世才知道亲情的珍贵,所以黑客帝国的先知的墙上挂了一块牌匾,上面写着”temet nosce“(认识自己)。

      都过去十年了,黑客帝国绝对是很多人最喜欢的电影系列之一,在这将近六个小时的故事当中,整合了无数政治,哲学,数学,物理,人文的知识。它有精美的武术和枪战场面,有令人深思的哲学问题,乃至于安静认真观察听剧中人的对话和表情都能让人痴迷不已。它就像一个完美的艺术品,从任何角度都有让人思考的余地,导演点到即止的剧情裁剪让人浮想联翩。每年我都要将这三部曲完整的看一遍以示致敬,但每次看的感受都有所不同。

     几乎所有不同的人都对这部电影有不同的解读,但程序员对这部电影是最有发言权的。机器学习和人工智能发展的如火如荼,说到底,开启潘多拉魔盒的人还是程序员。之前,我看了相当数量的有关黑客帝国的解读文章,如今,我也想从程序员的角度去讨论一下这部电影。有些作者会把电影剧情作为整个文章的主线,但我并不打算特别强调剧情,所以我们以解决问题为线索来讨论。文章会很长,只能分成好几个部分了。

     首先,我们讨论整个电影的前提是:这是一部严格意义上的科幻电影,哲学电影,与计算机有关的电影,任何的现象都是有规可循的,是符合科学依据的,我们假定大家都已经非常熟悉剧情。

      从电影里知道,这个虚拟一切的世界叫做“矩阵”,这个词Matrix的每一个中文意义都很好地解释了电影当中的隐喻:母体,子宫和矩阵数学。通过计算机大量的计算模拟出一个虚拟世界,源源不断的吸收人体的生物电,并通过无数的管道与人体交互。于是,人成了机器的电池。

       不过,从严格意义来说,这种生物电根本不符合能量守恒原理。在当时那个环境下,地球已经失去太阳能成为一个封闭的能量系统,人靠之前融化的死人溶液活下来,可是人排出的二氧化碳和废料,人本身又没办法转换为养料,有人会说,会有机器帮你转换啊,可是,机器的能量又来自哪里?这是永动机的悖论,学过热力学定律的人都知道,人类消费的能力远远大于生产能源的能力。这里面是有问题的。

      想想看,机器完全有能力找到更好的产生能源的方式,比如核聚变能源,甚至未来我们想不到的能源,为何要把人类这一点点可怜的生物电作为主能源呢?人的大脑功率有1W,多少人的并行电池,才能抵得上一台50兆瓦的核电站?这就如同人类进入工业时代之后,就很少有人关心温饱问题。而我猜测,所谓的”生物电“,需要从机器为什么需要人类来解读。

     那么,机器需要人类到底为了什么?我们能找出一百个机器需要人类的理由,但那些机器需要灭绝人类的理由却不大站得住脚。看过《黑客帝国动画版》的人知道,机器人将人类打得全无反手之力,最后在人类最后的政府日内瓦引爆了核弹,人类几乎已经不构成威胁了。机器需要人类,需要“生物电”,更准确的说,应该是需要信息和多样性。计算机生成的随机数都是伪随机,万千有个性的人类提供的广袤的思维土壤,绝对要比那些可怜的电能对于机器有用得多。另一方面再说,机器需要有人类这样的”对手“或者”朋友“,就像我们的电子游戏里的NPC一样,机器此时转换了角色,人类成了NPC。因为这样才有得玩,否则不会很无聊吗? 所以,生物电叫做“生物信息”应该更合适。电影中这样处理,更容易理解,所谓的生物电能,应当只不过是这一游戏的附属品。

       其次计算量问题,所有程序员都会有这样的计算复杂度疑问。我们的真实世界就是一台超级并行计算机,并行无处不在,可是,要通过模拟的方法实现计算,那么计算量海了去了。如果模拟精确到原子级别,那么计算量将会恐怖到无法接受的程度。因为,假设一块计算单元是由10亿亿亿个原子构成的,不论计算算法如何优化,不论架构如何牛逼,它也不可能真实模拟出同样原子数的世界。所以,Matrix必然有它实现的简化方式。作为机器,它没必要花那么大的计算代价为人类构造出如此真实到极致的系统。想象我们平时玩的游戏,都是典型的按需加载,不需要的场景不加载,不在视野里的场景不加载,距离够远的细节也不加载。计算只要让接入系统的每个人感觉足够真实就够了。这样,计算量就可以极大的降低。

       数据传输问题也不容忽视,电影中,人们通过超炫的脑机接口直接接入matrix,与母体中的各种数据发生非常复杂而频繁的交互。于是,数据传输自然不能无中生有,电影中matrix在整个地球上建立各种信号收发台方便机器间通信,同时人类还可以破解其中的密码,而通过无线接入到系统中。所以,只有飞船飞到地表的位置,才能接收到这些信号,而在Zion由于处在地心里是无法做到的。人脑和外部的所有感觉的交互,数据量可以非常夸张。也许未来的通信技术早就解决了这样的问题。但是,有传输就肯定能被发现,八爪鱼可以很快的发现处于大量数据交互的飞船。如果这些都能说得通,那么为什么第三集一开始时,尼奥与多恩躺在飞船的病床上,没有接入任何设备,尼奥却还可以在火车站里与其他人交互? 再想想阿凡达,人体控制阿凡达的信号居然可以通过层层雨林,同时不需要阿凡达携带信号接收装置,这个太不符合科学了!

     当尼奥走入万物之源,与架构者这位白发老头子对话的时候,才知道原来矩阵已经出现第六个版本了。一个系统从重启到最后错误累积到一定程度必须处理作为一个周期。这个周期同时意味着救世主选出来的16女7男会重新建造锡安,最终产生像电影里那样恢弘的人类最后城市,它大概包含了50万人口。于是,问题来了,这样的一个周期需要多久?

     50万人口里,从矩阵中解救出来的人是少数,虽然故事里没有提及,但我想最多也不会超过一半,因为电影里锡安城里绝大多数平民都没有脑后的接口。从23个人,养育出25万人的规模,这在逻辑和遗传上都是行不通的,近亲繁殖?人又不是细菌!

     与此同时,在第一部里墨菲斯交代了时间问题,他说时间无从可考,但大概是2200年,而且可以看到墨菲斯船长的飞船上的铭牌上写到“2069年建造”,肯定建造于人类统治时期。一艘船在经过100多年的风风雨雨后,破旧成这个样子确实可以理解,但在100多年里,锡安被重建了六次,这就不可理解了。所以,飞船的时间有问题。

      以上这些问题,也许只能用一个方法来解释:

      墨菲斯口口声声说的“真实的荒漠”Zion,其实也是假的,也是虚拟出来的。

      这个观点并非我自己提出,网上有大量有关Zion是真是假的讨论。除了以上罗列的无法解决的问题,还包括为什么在“真实”当中尼奥可以击败八爪鱼,依然可以具备超能力等细节。在电影中,最终尼奥可以看透“真实世界”里的矩阵数字,但其颜色是橙色的,与Matrix的绿色有所不同。

     卓沃斯基兄弟也许想要表达这个观点,但在电影里却很巧妙的隐藏这个观点,并做了相当多的处理,理由很简单,他们不想让整部电影成为悲剧,人总是要拥有希望的。这个振聋发聩的结论,特别像“庄周梦蝶”那样,造成了某种循环,再一次狠狠的叩问人们,“什么是真实”。当然,这样的观点,看过《盗梦空间》的人并不难理解。

     架构师告诉尼奥,在人还处在潜意识的状态下,机器便让人类作出选择,愿意服从的人走进了更大的母体,而不愿意服从具有叛逆思想的人,则被关进了Zion,并灌输了他们所谓时间和历史的错误观点,甚至连他们穿的粗布衣服和像鼻涕一样的粥,都是虚拟出来的。所以,可怜的人们在面向几十万的电子章鱼的时候,他们并不知道,这些章鱼想造多少就造多少。而且,不论处在Zion还是母体的人,他们的身体甚至在物理上可能都处于一片农场,只是接入了不同的网络游戏而已。

     那到底真实的世界应该是什么样子呢?它应该相当接近于Zion描述的世界,有机器城市,乌云遍布,还有一望无际的人类农场。不同的是,锡安可能并不存在。对机器来说,实现这一目标并不困难,使用桥接器模式包装一下真实的世界,再融合一个虚拟的Zion,一切都搞定了。

     于是,不论人类选择了红色还是蓝色的药丸,终究玩的还是机器的游戏,只不过换了一个副本,选择了另外一个身份。在赛佛背叛了墨菲斯他们,并吃着鲜嫩多汁的牛排向特工史密斯说道“无知是福”的时候,大概绝大多数观众都恨得咬牙切齿。但如果告知他们,两者都是虚假的呢?可能很多人就沉默了。

  真实和虚拟的界限,变得越来越模糊。就如现在“云计算”,“虚拟化”的概念大行其道,你根本不知道眼前的这个界面到底是多台机器并行构建的,还是只是一台机器中的一部分(多用户虚拟),仿佛一切都虚拟了,当远程访问变得和桌面系统完全一致的时候,还有必要在乎这套系统是不是本机的?还是否必要在乎它到底是真实的还是虚拟的?

     我倒以为,在无法选择真实与虚幻的情况下,选择道德,理性会更加重要。很多人会说,我和你一样,承认道德和理性是普遍的公理,可是在机器面前,什么是道德,什么是理性?如果说满足人类的愿望,构建完美世界是宇宙至善的话,为什么第一代版本的Matrix所构建的完美世界会那么快的崩塌掉而造成大量人类的死亡?

     想解释这个原因的话,在先知的墙上贴了另外一句话,“不过量”,我理解的,就是平衡。这会是下一节的主题。

     

 

     (我知道把文章截在这里不合适,但笔者生病了,明天还得上班,待续)

时间: 2024-10-18 16:40:27

程序员讨论《黑客帝国》(一)真实与虚拟的相关文章

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

   接上一篇<真实与虚拟>.      我有点纳闷,机器之主在他创造的虚拟世界中拥有无上的能力和权威,那他想解决任何问题不都轻轻松松吗?他想毁掉Zion,一个命令而已,就如同拔掉自家后院的杂草一样简单,又何必让机器如此大动周章,甚至屈膝让尼奥去帮忙?      这让我想起了一个有意思的问题,在我们设计的程序中,能量和物质是守恒的吗?      绝大多数人会拍脑袋说,当然不守恒,我设置一个变量value,可以让它等于任何值,从0到正溢出皆可.不过,当设计一款网游的时候,你会发现一些有趣的事实,

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

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

趣文:程序员/开发人员的真实生活

http://www.itniwo.net/news/v/328163.html

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

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

PHP 程序员危机

感谢有这样的机会,能和大家一起来聊聊开发者的那些事儿. 其实程序员危机是一个真实存在的问题.也有人说是互联网行业的下滑或者互联网行业已过了风口等等.我在这儿主要谈的是 PHP 程序员的危机,而这种危机多半来自于丰富的语言种类和公司对语言的选择上. 尤其是近几年非常火热的人工智能,机器学习等等,还有推上风口的 python.这多少会带动一些人盲目跟风.其实开发工程师对自己知识体系的扩充和转型都需要有一个明确的目标.跟风是一件比较危险的事情,转型也不同于丢掉自己所有的东西.我想通过程序员的诞生和程序

PHP 程序员危机:如何快速成长为不可或缺的技术人才?

感谢有这样的机会,能和大家一起来聊聊开发者的那些事儿. 其实程序员危机是一个真实存在的问题.也有人说是互联网行业的下滑或者互联网行业已过了风口等等.我在这儿主要谈的是 PHP 程序员的危机,而这种危机多半来自于丰富的语言种类和公司对语言的选择上. 尤其是近几年非常火热的人工智能,机器学习等等,还有推上风口的 python.这多少会带动一些人盲目跟风.其实开发工程师对自己知识体系的扩充和转型都需要有一个明确的目标.跟风是一件比较危险的事情,转型也不同于丢掉自己所有的东西.我想通过程序员的诞生和程序

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

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

程序员经常去的 14 个顶级开发者社区(转)

我们来看一下程序员经常去的 14 个顶级开发者社区,如果你还不知道它们,那么赶紧去看看,也许会有意想不到的收获. Stack Overflow 9 月份,Stack Overflow 也将迎来其 6 岁的生日,毫无疑问,Stack Overflow 是全球最受程序员欢迎的开发社区,而且也是内容最丰富的社区之一. 官方网站:http://stackoverflow.com/ Reddit reddit 也是一个非常富有个性的社区,你可以在 reddit 上提交一些感兴趣的话题,也可以和其他程序员讨

作为程序员必须知道的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/)微软的一个开