知乎上有一个这样的帖子,回答都蛮精彩的,不过有一个特别精彩,不明觉厉的赶脚! 知道的太多了,小心被=NULL啊!
http://www.zhihu.com/question/20198823
摘贴如下:
给这个世界写代码的不是一个人,而是一个团队(这么大的项目,一个人开发不了)。而且严重怀疑这个一个开源项目。开发者被我们认为是神,所以一神论是不对的,众神论才是真理,且凡人是有机会成为神的(参悟神道,直到你的神属性突破某个级别)。另外这个系统使用的应该是面向对象语言编译的。
现在来说Bug。
Bug其实无处不在,但是众开发者经常性的发bug fix,致使整个系统看上去正常运行。但是这些bug fix是可以看出来的。比如:在一个文明发展到一个相当高的高度,要打破整个系统的平衡时,就会有一个补丁出来将其削弱甚至让它销往。例如四大古文明。其它三大在后期莫名归于平淡,而中国文明也经历了数次朝代更迭。更离奇的是玛雅文明,说没就没了,毫无预兆。应该是开发初期的时候以为的注重发展,却没有考虑到设计另一种文明与之相制衡,于是开发者只能很页面的加入一行“玛雅文明 = null;”。
回想上个世界的几场大战。一战后,德国被榨干了,如果继续发展下去,很有可能日耳曼民族就没了。于是在那样一种不合时宜的环境下,安排了一个不合时宜的人用不合时宜的政策引领了该名族的复苏。回头再看,在那么短的时间内,以一种扭曲的意识形态居然能那么高速的发展一个国家,这就是在强行修复bug的行为。
同样让开发者没有想到的是他们为了修复一个bug所引入的新的实例会有如此强烈的扩张性,以至于二战开始了,他们还没有来得及修复。然后眼看着一个强大且有野心的德国瞬间将它的几个邻国打得溃不成军。当然开发团队可能认为这个并不可怕,顶多造成几个Exception,还不至于是Error,于是放任了一段时间,一直到东线战场德国人打到苏联。
这时问题来了,如果苏联被灭掉,那么当时世界上最大的社会主义阵营就会垮台。开发者意识到这个阵营的垮台所带来的问题将会是连锁性的。因为马克思的那套理论正是在未来为了制约日渐成熟和强大的资本主义理论而设计的。苏联垮了,未来肯定一家独大。届时众人团结一致搞科研,势必很快就将现在的系统实现反编译,然后修改源代码重新创造世界,于是这世界的运作将不再掌握在开发团队的手里。《圣经》的巴别塔桥段将会成真。所以,必须要阻止德国的扩张。
关于如何阻止,我相信开发团队是有分歧的。最简单的方法无异于“轴心国 = null;”,但是问题也是显然的,这样设置以后垃圾回收系统提启动,以前的日耳曼文明,罗马帝国的文明和日本留给后世的所有东西都没有了。未来到哪里去找优质的片源?且要如何跟后世交代这样一段突然空白的历史(此时跟玛雅时代已经不同了)。于是开发团队的第二种方案是”希特勒 = null;“,但是当时的纳粹已经不是只要靠希特勒才能驱动了,他只是个精神领袖。
所以,最终的结果是采用一些令人捉摸不透的方式,例如:苏联的斯大林格勒保卫战:现在已经无法想象当时的那样一帮苏联人如何可以战胜德国人的虎狼之师,难道真的是几个狙击手(电影《兵临城下》桥段);美国参战:我们都知道是日本人炸了珍珠港引起了美国人参战,但是日本人会在这样一个时间点选择如此愚蠢的行为?Bug!而且,美国人如果要报仇,直接过太平洋找日本人就好了,为什么还要同时对德国宣战呢?你被邻居家的孩子打了,打邻居的孩子就好了,干嘛打个出租车到五环外跟他表哥打一架?Bug!
最终轴心国败了,但是三个国家都没有亡国,其文明得以保留,各自继续发展经济。所以,德国依然有啤酒节,到意大利依然可以看到梵蒂冈,而开发人员还有优质的日本片源接着撸。一切看似归于平静。Bug从来都仿佛没有存在过。
所以如果你相信世界不是真实的而是一段代码,一定要明白,这样大的系统里,一定会有bug。但是不要试图寻找,因为你自己也是代码new出来的,你也是代码,你发现的bug很快会被修复,且你不会记得任何与这个bug有关的事情。让你忘记bug也是修复bug所要做的事情。另外有人提到在两面镜子之间不断的做动作以期看到系统卡一下这样的操作,建议不要去尝试。原因是:
这个系统如此的大,它的内存空间也不是你对着镜子挥几下手就会溢出的,需要正视我们每一个个体在如此强大的系统前都是渺小的这一事实。
曾经有人尝试过一天撸39次,结果估计系统真的卡了一下。然后开发者很快发现了这个Bug,于是他被赋值为null,很快垃圾回收系统就把他给收了。相信开发团队的强大,当你给他们找到Bug的时候,你也会成为Bug。最初他们能够把你new出来,也可以把你变回null。