俄罗斯程序员弗拉迪米尔·伯克希尔科提醒了我,单单为了美而进化可能就是一个够远大的目标了。伯克希尔科和他的同伴阿列克谢·帕杰诺夫(他编写了让人上瘾的电脑游戏俄罗斯方块)设计了一个非常强大的繁育虚拟水族馆的程序。伯克希尔科告诉我,“刚开始时我们并没打算使用电脑来生成什么很实用的东西,而只是想得到非常漂亮的东西。”伯克希尔科和帕杰诺夫一开始并没有打算创造一个进化世界。“我们从花道——日本的插花艺术开始起步。原本想做出某种电脑花艺的东西,而且是活的,是动的,永远不会重复自己。”由于电脑屏幕“看起来像一个水族馆,我们决定做一个可以由用户定制的水族馆。”
用户们把多彩的鱼类和摇曳的海草恰当地搭配,填充进屏幕水族馆,从而也当了一把艺术家。他们会需要大量不同的生物体。为什么不让水族馆爱好者们繁育自己的品种呢?于是“电子鱼”应运而生,而俄罗斯人也发现他们是在玩一个进化游戏。
电子鱼是一个程序怪物。这个程序主要是在莫斯科编写的。那时俄罗斯大学里往往整个数学系的人都失业了,而一个聪明的美国创业家可以用雇用一位美国黑客的薪水让这一整帮人为他做事。多达50名为电子鱼编写代码的俄罗斯程序员重新发现了计算进化的方法和威力,而他们对道金斯、拉萨姆和西姆斯的工作一无所知。
电子鱼的商业版本于1993年由美国软件商Maxis发行。它将拉萨姆在IBM大型机上和西姆斯在连接机上运行的那种华丽的虚拟繁育程序浓缩到了家用电脑上。
每一条电子鱼有56个基因,800个参数。(好大的一个库啊!)多彩的鱼在虚拟的水下世界逼真地游来游去,会像鱼一样地轻拂鳍尾来个转身。它们在一缕缕海藻(也是由程序繁育的)中无休止地来回穿梭。当你给它们“喂食”时它们就成群地围在食物周围。它们永远不会死。当我第一次从十步外看到一个电子鱼水族馆时,竟以为它是一段真实水族馆的视频。
真正有趣的部分是繁育鱼类。首先我在这片电子鱼的海域里随意地撒下一网,以捞起几条奇异的鱼来做亲本。不同的区域藏着不同的鱼。这片海域就是一个鱼类的形式库。我抓到两条鱼并把它们拖了上来:一条胖胖的,身体呈黄色,间有绿色的斑点,背鳍单薄,上唇突出(这是妈妈);另一条小个子家伙,体态像鱼雷,蓝色,长着中式帆船帆一样的背鳍(这是爸爸)。我可以选择任意一种进化方式:既可以从那条胖鱼或那条小蓝鱼中任选一条进行无性繁殖,也可以让这一对儿进行交配,从它们繁育出的后代中挑选。我选择了交配。
就像其他人工进化程序一样,有十几个变异后代出现在屏幕上。变异的程度可以通过旋钮来调整。我把注意力放在鱼鳍上,选择了一条有着巨鳍的鱼,并使每一代的体态都朝着越来越华丽、越来越庞大的鳍进化。我生成了一条看起来周身长满鳍的鱼,背、腹、侧面都有。我把它从孵化器里移出来,在扔进水族馆之前进行了动画模拟(这个过程可能需要几分钟或几小时,取决于电脑运算速度)。经过了许多代的演化,我得到的这条鱼是如此之怪异,以至于不能再进行繁育。这也是电子鱼程序用来保证鱼之为鱼的手段。我已经处于库的边缘,超出这个边界的形式就不再是鱼了。电子鱼程序无法渲染那些非鱼类生物,也无法让那些太过异类的鱼动起来——让一条怪物游起来实在有些强人所难。(鱼的各部分比例要符合常规,这样游动起来才有真实感。)用户们乐此不疲地试图弄清楚鱼和非鱼的界限以及是否有什么漏洞可钻,这也正是这个游戏的一部分。
要存储整条鱼的信息会占用过多的磁盘空间,因此程序只存储基因本身。这些微小的基因种子被称作“鱼卵”。鱼卵比鱼要小250倍。电子鱼的狂热