第一章:无聊的产物
Michael 陈是一家公司的人工智能( AI )研究员,这天他实在闲的无聊编写了一个模拟生命的程序 42 这个程序就是屏幕上的一个小点,他给他编写了最基本的规则:以内存地址中的数据作为食物,“吃”进去,然后筛选出所有能被 42 整除的数字,就把这个数字所在的内存空间划分到自己的内存空间中,每获得一个这样的数字,屏幕上的点就长大一点点。很快,屏幕上的小点变成了一个大圆,并且很长时间不变了。原来是一开始给 42 分配的内存空间太小了,他只能长到这么大。于是他给 42 分配了更大的内存空间。
这次 42 变得占满屏幕了。陈改写了代码,当 42 占满屏幕的时候,就把画布缩放,这样 42 又变成一个小点了。然后屏幕上的 42 就不断的放大缩小。但长到直径 100 公里又不动了。于是陈干脆给他开放了访问所有内存的权限,结果先是杀毒软件直接把 42 当成病毒给删了,关闭杀毒软件后又被操作系统给关小黑屋隔离起来了。陈又在 42 的基础上编写了 38 程序,区别是,这个程序的筛选条件是数字 38,而且一开始就默认可以访问所有内存,这次陈也没关闭杀毒软件。果然 38 也被操作系统隔离了,跟 42 一起蹲小黑屋了。陈想,如果这两个程序能够交配,生成新的程序会怎样?然后他改动了 38,除了筛选 38 数字外,38 还要扫描那些内存里只有 42 倍数的内存块,然后找到他结尾的数字比如 168,然后加上自己内存空间里最末尾的数字,比如 190,这样结果就是 358,只保留个位和十位也就是 58。
然后以 58 作为筛选条件生成新的下一代程序。42 的程序也被这么改造了。即使一开始放入了数十个 42 和 38,下一代程序还是被杀毒软件和操作系统干掉了。58 这代程序没有遗传 42 和 38 的交配条件,因为陈不想他们和自己的父代交配,这样看起来像乱伦。陈必须给他们设计一个通用的择偶标准。于是他在代码中加入了族谱记录,规定交配的时候要先检查族谱,如果两个程序的族谱有任何重合的,就不能交配。另外他规定每个程序的择偶标准是 100-自己的筛选数字,比如 100-58,他的择偶标准就是 42,但是因为前一条规定,他不能和自己的亲戚交配。
就这样程序运行了很久,但无一例外都被操作系统拦下了。然而这也基本耗尽了内存资源,大量的程序因为找不到合适的数字一直不变,成了陈口中的“僵尸”。为了减少资源浪费,陈又改写了代码,规定扫描 1g 内存还是没找到数字的程序,就会“饿死”。他们会把自己的内存释放,把数据重新放回到公共区域。