看到一篇不错的文章,与大家分享下。
----------------------------------------------------
元旦到来,炮竹声声,辞旧迎新,喜气洋洋。
然而我却高兴不起来,又老了一岁,离死又近了一年!
虽然说得不吉利,但却是事实。灵丹妙药只能让人早死,体格强壮并不增寿延年,求佛信神更是自欺欺人。我几十年来默默研究,但结果却一次次让人失望。
原来人以及每一个高等生物都有“设计寿命”,大多数器官都没有再生能力,甚至没有自我修复能力。随着年龄的增长,功能逐步衰退。最核心的器官,大脑,更是连细胞的再生能力都没有,每天死掉
10
万个细胞,成年后,大脑就进行性的不断萎缩。死亡,不可抗拒!
我绝望了,女娲造人,水平不高。
我开始研究进化论。进化论告诉我们,一个物种要生存,必须与时俱进。这一点很容易接受,因为自然环境在变化,其他物种在变化。但为什么不是这个物种的每个个体“与时俱进”,而是不断的用新一辈替换老一辈?君不见要让一个新的个体成长到成年是多么困难,让老一辈死掉对一个物种来说是多大的浪费。大自然几亿年的生物进化,为什么选择了这样的方案?为什么物种的生存要以其个体的死亡为代价?为什么不是“适者生存”,而是“适者的后代生存”?
直到我做了多年的软件,才终于明白了这里的道理。
我早期的程序大多是用原有程序改写而成。渐渐的,我发现,改程序越来越不容易,当程序大到一定程度后,改写不如重写。后来,我进入了专业软件公司,一位前辈告诉我,早在
60
年代,
IBM
就有专家得出结论,如果对一个软件的改动超过
15%
,则改写不如重写。
原来,跟人一样,软件也会死亡!或许,我们可以从这里入手,搞清人为什么会死亡。
如果我们要制作一个有
N
个对象构成的软件,第二个对象需要关心与第一个对象的关系,第三个对象需要关注与第一、第二个对象的关系,第
n
个对象需要关注(
n-1
)个关系。或者说,在构筑新软件的过程中,进行一步的难度正比于
N
,或者说正比于系统的复杂度。
如果我在老程序上改动一个对象,则要改动(
n-1
)个关系,改动(
n-1
)对象,而这(
n-1
)个对象又要牵扯
(n-2)
关系和对象,推延下去,在“完全耦合”的前提下,改动一个对象需要对系统中所有对象和所有关系都改动一遍。也就是说,进行一步的难度正比于
N
平方!这就是为什么对于强耦合复杂系统,修改往往不如重做,这一点结论适用于软件,也适用于生物界。
看来女娲造人时作出了最佳选择,因为人是一个强耦合复杂系统,改进一个成年人要比重新培养一个孩子困难得多。要让人类发展,只好让人死亡。
这让我想起了作人工智能软件时的经历。我们当年做的智能软件要用大量数据“训练”。从一个尝试解开始,通过一次又一次的迭代,每一次迭代生成新一代的尝试解,扔掉上一代的尝试解。这样看来,我们每个人只是人类在适应环境的过程中的一个尝试解。我的寿命,只是构筑、测试我这个尝试解所需要的时间。复杂的生物、生存方式应该有更长的寿命。长期稳定环境下的生物也应该有更长的寿命。
总结之,我之所以不能长生不老,是因为(
1
)我是强耦合构造(
2
)我只是一个尝试解。
但是,我还是想长寿!只要能长寿,我愿意答应任何要求!
冬日细雨中突然炸出一声雷响,吓得我手足无措,魂不附体。那是女娲的声音,“尝试弱耦合”。
(From
http://gocom.primeton.com/
)