第2條忠告:人們的目光有時是很短淺的,比如英國前首相邱吉爾在第二次世界大戰結束舉認為,和平時代全世界隻需3台計算機就足夠了。千年蟲實際上是20世紀五六十年代的那些計算機專家目光短淺造成的後果。用二位數字表達年代是為了節省寶貴的內存,他們怎麼會想到2000年到來時的情景呢。盡管人類最終戰勝了千年蟲,但付出了約5000億美元的代價。
第3條忠告:千年蟲給人們帶來的思考是深遠的。一個小失誤造成了這麼大的麻煩不由得讓人們倒吸一口涼氣。站在新世紀的門檻上,可以預見科技將更迅猛地改變人們的生活、工作和思維方式。在這種情況下,人類在利用科學技術造福於社會的同時一定要慎重地考慮它的負麵影響,因為科技發展中的任何一個小失誤都可能造成巨大損失。
一個點錯小數點般的錯誤
小學生在學習小數點時,老師大都會嚴肅地告訴孩子點錯了小數點會造成嚴重後果。比如工程師設計橋梁時點錯了小數點,那麼一座大橋說不準就會坍塌。但我們很多人會想那些大工程師、大科學家們真得會那麼笨、那麼馬虎嗎?然而在人類文明飛速發展,即將步人新世紀的今天,這種小失誤造成的大麻煩就是活生生地出現在我們麵前。這就是計算機千年問題。
計算機千年問題又稱為2000年問題、千年蟲、千年炸彈。稱它為一個問題是很給麵子的一種說法,其實稱之為千年炸彈更為形象,因為新世紀的鍾聲一旦敲響,如不事先采取措施,全世界很多計算機係統就會崩潰。至於叫它千年蟲,或千年臭蟲倒是對當時計算機的設計者一個絕佳的諷刺。在計算機界人們常提起計算機病毒和臭蟲,前者是別人故意設計來幹擾或破壞計算機係統的程序,而後者則是因軟件設計者自己的失誤給計算機造成的麻煩。這如同人們吃自己做的飯菜時吃下一個臭蟲,或像自己把打落的牙吞到肚子裏一樣,有苦說不出。
什麼是計算機千年問題?簡單說就是早期的計算機用二位數字表達年代。比如把1998年表達為98年,2001年表達為01年。然而這樣計算機就無法區分2098與1998年,也無法區分2001年與1901年。由於在計算機係統中經常用日期來進行計算、比較、排序,或者根據日期決定數據是保存還是舍棄等,那麼對2000年的錯誤表示就會導致出錯,甚至會造成係統的崩潰,引起業務停頓、通信阻塞、貿易凍結等極其嚴重的後果。這樣2001年出生的嬰兒很可能被計算機認為是1901年出生的百歲老人。
其實幾十年前的工程師和科學家用二位數字表達年份並非沒有一點道理。首先,當時人們習慣那麼做,就是現在人們還常把1998年簡稱為98年;其次,這樣做可以用較少的數字表達年代,可為早期功能並不怎麼強的計算機節省存儲空間,提高運行速度;再次,當時人們也沒有想到計算機的影響會這麼大,認為車到山前必有路。當然也不能不承認,當時有人認為後人總比前人聰明,留給後人這個小問題不算什麼。
可能出乎一些人的意外,千年問題並不是等到2000年到來時才爆發。實際上千年炸彈將會提前引爆,因為很多商業預訂係統和規劃係統,比如民航訂票等往往都有一年的提前量,對於這樣的係統,到了1999年1月1日就會出現問題。另外,用二位數字表達年代造成的危害不僅僅是2000年到來的那一天,實際上1999年9月9日也是會出問題的日期,因為有些老程序中用9999作為文件結束的標誌。此外,1999年中的其他日期,也常被作為新財政年度的開始,到了這些日期都可能會引發千年問題。許多專家認為,第一批受害者那時已經趴下了,而很少有人知道這一點。
隨著計算機編程人員和工程師們對他們所編程序的各種問題的更深入的探究,他們已經清楚地認識到,千年難題並非一個獨立的事件,而是在那個災難性的日子之前數月,或在其之後數年可能出現的一係列故障的一部分。
在解決計算機2000年難題時,人們應當了解,在下述一些日子裏,日期問題有可能影響計算機的運行。