上帝是个程序员

Published: 23 Oct 2016 Category: 博客

上帝是个程序员,那他用什么编程语言呢?尘世间的程序员在潮流的忽悠下,各种语言都要做人工智能,上帝老人家用 DNA 写出了人这么个产品,顺便实现了目前为止最高级的人肉智能。

作为人肉智能的我们,总想着反编译自己这个生成品,试图破解生命的缘由。经过层层实验我们发现人的各种性状都是由基因控制的,人的生老病死都脱离不了基因。基因就像一份程序代码,而每个生命就像是这份代码运行时的一个进程,有着运行时的种种变化和各种可能,但都无法脱离基因的束缚。那些编码在基因里的身体缺陷就仿佛代码里的 bug,而那些异于常人的天赋又像是那些令人叹为观止的代码片段。

人肉智能一旦发现自己的能力都编码在这些 DNA 片段中,自然想要了解学习并为己所用。而上帝老人家作为久经考验的程序员,这些代码混淆、反破解、故意的代码质量劣化这些技术都玩的溜溜的,即使是俄国人也搞不定。首先人家编译出来的人肉码就不是二进制的,是由 A、T、C、G 四对碱基组成的四进制码,先在维度上就对人肉智能进行了一次高维碾压。一般的反编译好歹还知道我运行在什么样的 CPU 上,知道这个 CPU 对应的指令集,这样就可以从编译结果往下走,至少能暴力翻译成机器指令,虽说不一定能看懂,但程序入口函数入口一些功能的代码大致还是能分出来的。然而你知道人肉这个 CPU 的指令集么?这就彻底堵死了往下走的道路,只能通过上层的性状和基因进行关联来翻译了。

好在我们发现了基因是先通过生成氨基酸,组合成蛋白质来决定生命的表现,貌似给我们提供了一个指令集合的方向,先换成中间语言再看看。然而经过实验发现基因和蛋白并不是简单的指令集映射关系,确实存在基因和氨基酸对应的片段,但是这只是一少部分,大量的基因片段并不直接和氨基酸对应,但他们的功能还不是专门的混淆代码,他们似乎控制着蛋白质该怎么折叠变成什么形状,控制着别的基因段要不要翻译。就仿佛那些直接参与生成的只是程序代码里的数据段,这只是一小部分大部分控制数据的算法我们还是没有找到对应的关系,只能再次进行猜测和实验。尽管每个细胞内包含的基因物质基本一致,但随着人类的生长,细胞的分化每个细胞所表达的性状也天差地别,我们甚至不能确定这段基因到底是真正没用,还是这个细胞并没有执行到这个代码路径。极其怀疑上帝同志出于表达能力的要求选择的是一门上下文相关文法的语言写的人肉智能,顺便把破解难度提了好几个量级。

当然好程序员不能只想着反破解,也不能只完成一个人肉智能的功能就完事,还得保证系统的稳定性,不能出个问题就要去线上调试,一铲子把电缆挖断了也能缓过来,被 DDOS 了也不能打的种族灭绝。所以就有了一条 DNA 链条里存在着多份冗余还能相互纠错,每个链条都是个双链结构做到了双活,同一份基因片段可能存在多个不同的链条上做双活的异地多活,多个染色体上的基因片段又有共同完成一件事情。多个染色体就这样组成了个混合 Raid 0,1,3,6 的超级稳定的存储系统。而且这个系统在每个细胞内都有一个备份,这样缺个胳膊少个腿还不至于就挂了做了双活的异地多活的异地多活。同一份基因片段又存在在无数的人身上,这样就完成了双活的异地多活的异地多活的异地多活。什么两地三中心,全球分布式,十一个九的可靠性在这个系统面前都弱爆了。

只要是程序就会有 bug,只要是程序员就会被产品经理改需求,上帝作为高级程序员也很头疼这件事。于是他决定不写完美的代码,而是让代码有随机出错的概率,这样有可能正好错对了,或者错的正好满足产品经理的需求了。要是错的不满足的就直接死掉好了,这样错的靠谱的就活下来了。当然对外不能这么说,显得很没技术含量的样子,就包装一下叫进化算法,这样自己不用干活了,还显得高大上了,说我的程序可以在你调研用户需求前就满足用户需求了,就再也不怕产品经理了。

上帝实乃顶尖级程序员,等我们人肉智能破解了这些代码后,能做些什么呢?实际上我们的进展还是挺快的,现在科学家们已经做出很多匪夷所思的事情了,以至于我越来越相信『二十一世纪是生物的时代』这个说法很可能是真的,等我收集一下资料下次再谈谈。


本博客已经全文RSS输出,可通过订阅 oilbeater.com/atom.xml 订阅更新。或者关注我的微博@oilbeater ,公众号『我的观点』