法布尔的松毛虫圆圈和死循环
法国的法布尔是个昆虫的观察大师,不过,他的生物理论水平很低。他曾经用自己想到的例子,挖苦达尔文的演化论。不过,他实在没有理解达尔文理论的硬核部分。
他有一篇专门描述松毛虫行为的文章。我简单叙述如下。
松毛虫行走时,一定排出单列纵队。最前面的一只是领队的。领队的选取是随机的。每只松毛虫走时吐出很细的丝线,后面的就头顶着前面的尾,沿着地上的丝线行走。就是两只松毛虫也一定遵循同样的规则。只有前面的那只领队的,走时,经常要四处探头,寻找路线,后面的只跟着前面的尾巴就行了。
松毛虫队伍绝对不会原地后转,沿着丝线路往回走。
一天,法布尔在院里花盆下面的一队松毛虫爬上了花盆。法布尔决定作一实验。当松毛虫队伍沿着花盆行走,队伍在沿上形成一个闭合的圆圈时,他用毛刷子把后面多余的毛虫扫掉。这样,每只松毛虫都认为自己不是领队的,紧跟着前面的尾巴前进。
松毛虫的行走规则就是:跟着前面的尾巴,一直前进。
计算机程序中,一个循环程序,如果设定的跳出循环的条件永远无法满足,那么,该循环就永远循环下去,没有停止的可能。俺曾故意编造了这样的程序,为了显示程序在运行,比方设计其运行结果是要输出某种数值,一运行该程序,发现计算机显示屏上,数据一闪而过,像流水一样,飞速前进,永无止境。这就是计算机进入了死循环的结果。要想停止该程序的运行,必须强制中断运行,就是“杀死”该程序。
那么,松毛虫的死循环会怎样结束?
松毛虫队伍第一天里走了十几个小时,不停止。晚上,温度低,松毛虫累了,时走时停。最后,卷曲了身子,停下取暖。第二天,温度上升了,松毛虫队伍再次转圆圈。
第三天,松毛虫和第二天一样转圆圈。不过,晚间很冷,盆沿上的毛虫分成两堆,挤在一起取暖。
第四天,几乎还是一样的。
后来的一天,晚间很冷,松毛虫挤在一起,有几只被挤出了花盆沿。那几只跟着一位新领袖,下去了。余下的毛虫,仍然在转圆圈。因为少了7只毛虫,毛虫队伍在花盆沿上不再是一个圆圈,有了缺口。这样,毛虫队伍就有了一个领队的。
在实验的第八天,天气很热,毛虫队伍在领队的带领下,离开了那条丝线圆圈,下到了盆底下。最后,回到了毛虫巢里。
毛虫不是机器,总会打破规则,最后才冲破了死循环,回到了家里。
法布尔估算了一下,那队松毛虫大概共走了48小时,行进了250米左右。不过,他的实验也证实了,毛虫在8天的时间里,没有吃任何食物和水,也没有饿死。
计算机进入了死循环后,永远运行,最后的结果会怎样?应当是在相当的长的时间里,某部分硬件坏掉,程序停止。或者,硬件没坏,但程序自己瘫痪了。
|