15.9 工程霸权的终结

丹尼·希利斯也得出了相同的结论。他很认真地表示,想让自己的「连接机」进化出商务软件。「我们想让这些系统解决一个我们只知如何陈述却不知如何解决的问题。」一个例子就是如何编写出数百万行驾驶飞机的程序。希利斯提议建立一个群系统,以进化出「驾驶技巧」更优秀的软件,系统中有一些微小的寄生虫程序会试图坠毁飞机。正如他的实验所展示的,寄生虫会促使系统更快地向无差错和抗干扰强的导航程序收敛。希利斯说:「我们宁肯花更多时间在编制更好的寄生虫上,也不愿花上无数个小时去做设计代码和查错这些事情。」

即使技术人员成功地设计出一款庞大的程序,譬如导航软件,要想对其进行彻底的测试也是不可能的。但进化出来的东西则不同。「这种软件的成长环境里充斥着成千上万专职的挑刺者,」希利斯说着,又想起了自己的寄生虫,「凡是在它们手下躲过一劫的,都经受住了严酷的考验。」除了能够创造我们制造不出来的东西以外,进化还有一点值得夸耀:它能造出来缺陷更少的东西。「我宁愿乘坐由进化出来的软件驾驶的飞机,也不愿乘坐由我自己编制的软件驾驶的飞机。」作为一名非凡的程序员,希利斯如是说道。

广告:个人专属 VPN,独立 IP,流量大,速度快,连接稳定,多机房切换,每月最低仅 5 美元

长途电话公司的呼叫路由程序总共有200万行代码。而这200万行代码中的三行错误代码就导致了1990年夏天全国电话系统的连锁崩溃。现在,200万行已经不算多了。装载在海军海狼潜艇上的作战计算机包含了360万行代码。1993年微软发布的新操作系统「NT」总共包含400万行代码。一亿行的程序也离我们不远了。

当计算机程序膨胀到几十亿行代码时,仅仅是维护程序、保持正常运行本身就会成为一个主要负担。有太多的经济活动和人的生命会依赖于这种数十亿行的程序,因此不能让它们有哪怕片刻的失效。戴维·艾克利认为,可靠性和无故障运行时间将成为软件最首要的任务。「我敢说,对真正复杂的程序来说,仅仅是为了存活下来就要消耗更多的资源。」目前,一个大型程序中只有一小部分致力于维护、纠错和清理工作。「将来,」艾克利预言道,「百分之九十九的原始计算机周期都将被用在让这个怪兽自我监视以维持其正常运转上。只有剩余的百分之一将被用于执行用户任务——电话交换或其他什么。要知道,这个怪兽只有活下来,才能完成用户任务。」

随着软件越来越大,生存变得越重要,同时也越来越困难。要想在日复一日的使用中存活下来,就意味着必须能够适应和进化,而这需要做更多的工作。只有不断地分析自己的状况,修正自己的代码以适应新的需要,净化自己,不断地排除异常情况,并保持适应与进化,程序才能生存下来。计算必须有生命力和活力。艾克利称之为「软件生物学」或「活力计算」。程序员即使24小时都开着寻呼机,也不能确保数十亿行的代码能够不出故障。人工进化也许是唯一能使软件保持生命力和活力的方法。

人工进化是工程霸权的终结。进化能使我们超越自身的规划能力;进化能雕琢出我们做不出来的东西;进化能达到更完美的境界;进化能看护我们无法看护的世界。

但是,正如本书标题所点明的,进化的代价就是——失控。汤姆·雷说道:「进化系统的一个问题就是,我们放弃了某些控制。」

丹尼·希利斯所乘航班的驾驶程序是进化出来的,没有人能弄懂这个软件。它就像一团千丝万缕的乱麻,也许真正需要的只是其中的一小部分,但是它能够确保无故障地运行。

艾克利的电话系统是由进化出来的软件管理的,它是「活」的。当它出问题时,没有人能排除故障,因为程序以一种无法理解的方式埋藏在一个由小机器组成的未知网络中。不过,当它出问题时,它会自行修复。

没有人能把握住汤姆·雷的培养液的最终归宿。它们精于设计各种小技巧,却没人告诉它们下一步需要什么技巧。唯有进化能应付我们所创造的复杂性,但进化却不受我们的节制。

在施乐公司帕洛阿尔托研究中心,拉尔夫·默克勒[1]正在制造能够自我复制的极小分子。由于这些分子的尺度为纳米级别(比细菌还小),因此这种技术被称为纳米技术。在不久的将来,纳米技术的工程技能与生物技术的工程技能将趋于一致:它们都把分子看成是机器。对纯粹的生命来说,纳米技术可以看作是生物工程;对人工进化来说,纳米技术则等同于生物分子。默克尔告诉我,「我可不想让纳米技术进化。我希望把它限制在一定的框架内,并且受到国际公约的制约。对纳米技术来说,最危险的事情莫过于交配。是的,我想,应该有个国际公约来限制在纳米技术中使用交配。一旦交配,就有了进化;只要进化,就会有麻烦。」

进化并未完全超脱我们的控制;放弃某些控制只不过是为了更好地利用它。我们在工程中引以为傲的东西——精密性、可预测性、准确性以及正确性——都将为进化所淡化。

而这些东西必须被淡化,因为真实的世界是一个充满不测风云的世界,是一个千变万幻的世界;生存在这个世界里,需要一点模糊、松弛、更多适应力和更少精确度的态度。生命是无法控制的;活系统是不可预测的;活的造物不是非此即彼的。谈起复杂程序时,艾克利表示:「『正确』是水中月,是小系统的特性。在巨大的变化面前,『正确』将被『生存能力』所取代。」

当电话系统由适应性很强的进化软件来运行时,是没有一种所谓的正确方式的。艾克利继续道:「说一个系统是『正确的』,听起来就像是官话、空话。人们评判一个系统,是根据其对意外情况的反应力以及应对措施的创造性。」与其正确,不如灵活,不如耐久;所谓「好死不如赖活」。艾克利说:「小而专且正确的程序就像蚂蚁,对身处的世界茫然无知;而反应灵敏的程序往往是失控的庞然大物,仅把百分之一的精力花在你要解决的问题上。孰优孰劣,不言自喻。」

有一次,在斯图亚特·考夫曼的课上,一个学生问他,「对于你不想要的东西,你的进化是如何处理的?我知道你能让一个系统进化出你想要的东西,可是,你又怎么能肯定它不会制造出你不想要的东西?」问得好,孩子。我们能足够准确地定义我们想要的东西,从而将它培育出来。然而,我们往往不知道我们不想要什么。即使知道,这些不受欢迎者的名单也长得不切实际。我们怎样才能剔除那些不利的副作用呢?

「你做不到的。」考夫曼坦率地回答。

这就是进化的交易。我们舍控制而取力量。对我们这些执着于控制的家伙来说,这无异于魔鬼的交易。

放弃控制吧,我们将人工进化出一个崭新的世界和梦想不到的富裕。放手吧,它会开花结果的。

我们曾经抵制住过魔鬼的诱惑吗?

拉尔夫·默克勒(Ralph Merkle):1979年获斯坦福大学电机工程博士学位。2003到2006年间任乔治亚理工大学计算教授。研究范围包括纳米技术、分子机械臂、自复制,等等。1998年获费曼奖;此外还曾因参与发明公钥密码系统获两个奖项。