法布爾的松毛蟲圓圈和死循環
法國的法布爾是個昆蟲的觀察大師,不過,他的生物理論水平很低。他曾經用自己想到的例子,挖苦達爾文的演化論。不過,他實在沒有理解達爾文理論的硬核部分。
他有一篇專門描述松毛蟲行為的文章。我簡單敘述如下。
松毛蟲行走時,一定排出單列縱隊。最前面的一隻是領隊的。領隊的選取是隨機的。每隻松毛蟲走時吐出很細的絲線,後面的就頭頂着前面的尾,沿着地上的絲線行走。就是兩隻松毛蟲也一定遵循同樣的規則。只有前面的那隻領隊的,走時,經常要四處探頭,尋找路線,後面的只跟着前面的尾巴就行了。
松毛蟲隊伍絕對不會原地後轉,沿着絲線路往回走。
一天,法布爾在院裡花盆下面的一隊松毛蟲爬上了花盆。法布爾決定作一實驗。當松毛蟲隊伍沿着花盆行走,隊伍在沿上形成一個閉合的圓圈時,他用毛刷子把後面多餘的毛蟲掃掉。這樣,每隻松毛蟲都認為自己不是領隊的,緊跟着前面的尾巴前進。
松毛蟲的行走規則就是:跟着前面的尾巴,一直前進。
計算機程序中,一個循環程序,如果設定的跳出循環的條件永遠無法滿足,那麼,該循環就永遠循環下去,沒有停止的可能。俺曾故意編造了這樣的程序,為了顯示程序在運行,比方設計其運行結果是要輸出某種數值,一運行該程序,發現計算機顯示屏上,數據一閃而過,像流水一樣,飛速前進,永無止境。這就是計算機進入了死循環的結果。要想停止該程序的運行,必須強制中斷運行,就是“殺死”該程序。
那麼,松毛蟲的死循環會怎樣結束?
松毛蟲隊伍第一天裡走了十幾個小時,不停止。晚上,溫度低,松毛蟲累了,時走時停。最後,捲曲了身子,停下取暖。第二天,溫度上升了,松毛蟲隊伍再次轉圓圈。
第三天,松毛蟲和第二天一樣轉圓圈。不過,晚間很冷,盆沿上的毛蟲分成兩堆,擠在一起取暖。
第四天,幾乎還是一樣的。
後來的一天,晚間很冷,松毛蟲擠在一起,有幾隻被擠出了花盆沿。那幾隻跟着一位新領袖,下去了。餘下的毛蟲,仍然在轉圓圈。因為少了7只毛蟲,毛蟲隊伍在花盆沿上不再是一個圓圈,有了缺口。這樣,毛蟲隊伍就有了一個領隊的。
在實驗的第八天,天氣很熱,毛蟲隊伍在領隊的帶領下,離開了那條絲線圓圈,下到了盆底下。最後,回到了毛蟲巢里。
毛蟲不是機器,總會打破規則,最後才衝破了死循環,回到了家裡。
法布爾估算了一下,那隊松毛蟲大概共走了48小時,行進了250米左右。不過,他的實驗也證實了,毛蟲在8天的時間裡,沒有吃任何食物和水,也沒有餓死。
計算機進入了死循環後,永遠運行,最後的結果會怎樣?應當是在相當的長的時間裡,某部分硬件壞掉,程序停止。或者,硬件沒壞,但程序自己癱瘓了。
|