什么是千年蟲?
引言
今年您將會在新聞中不斷聽到關(guān)于“2000年”的“千年蟲”問題。而且在此過程中您會聽到很多互相矛盾的信息。還會有很多關(guān)于“世界末日”的奇談怪論在互聯(lián)網(wǎng)上流傳。您應(yīng)該相信什么?
在本文中,我們將討論2000年問題(也叫做Y2K問題),以便您能確切地了解將會發(fā)生什么以及將要對其采取什么措施。您還可以通過各個鏈接進行深入的探索。通過這些信息,您可以得出自己明智的結(jié)論。
什么是Y2K問題?
Y2K問題的原因很簡單。直到前不久,計算機編程人員一直都習(xí)慣于在他們的軟件中使用兩位數(shù)的占位符來表示日期中的年份。例如,典型的保險公司保單或信用卡的到期日期都以 MM/DD/YY(例如08/31/99)格式存儲在計算機文件中。編程人員這樣做有多個原因,其中包括:
- 人們在日常生活中都是這樣處理日期的。當(dāng)您用手寫支票并使用“斜杠”格式來表示日期時,你就是那樣寫的。
- 存儲2位數(shù)字要比存儲4位數(shù)字少占用硬盤空間(現(xiàn)在硬盤空間不算什么事,因為硬盤價格低廉;但是在老式的機器上這卻是個大問題)。
- 直到前不久,一些標(biāo)準(zhǔn)機構(gòu)才推薦使用4位數(shù)的日期格式。
- 沒人會想到軟件的壽命會有那么長。在1970年編寫軟件的人沒有理由相信該軟件在30年以后仍然在使用。
當(dāng)輸入“00”來代表年份時,兩位數(shù)的年份格式會給大多數(shù)程序造成問題。軟件不知道究竟應(yīng)該把“00”理解為“1900”還是“2000”。于是大多數(shù)軟件把它默認(rèn)為1900。也就是說,大多數(shù)編程人員編寫的代碼或者假設(shè)那兩個數(shù)字前面有“19”,或者根本就沒有考慮到世紀(jì)問題,因此將其默認(rèn)為“19”。這本不是問題,除非程序要執(zhí)行很多有關(guān)日期的計算。例如要計算您的年齡,程序?qū)⑷〗裉斓娜掌?,然后從中減去您的出生日期。如果今天的日期和您的出生日期不是跨越不同的世紀(jì)的話,這個減法會很正常的運算。如果跨越不同的世紀(jì),則這個運算將不會正常運行。例如,如果程序認(rèn)為今天是00年1月1日,而您的出生日期是65年1月1日,則它可能會算出您今年是-65歲而不是35歲。因此,日期計算得出錯誤的輸出,軟件崩潰或產(chǎn)生錯誤的結(jié)果。
需要認(rèn)清的重要一點是,問題的所在僅此而已。這就是2000年問題的全部內(nèi)容。很多編程人員在他們的程序中使用兩位數(shù)來表示年份,因此程序的日期計算在2000年1月1日將不能得出正確的答案。問題僅此而已。
顯然,解決方案是修復(fù)這些程序,使其能正常運行。標(biāo)準(zhǔn)解決方案有下面幾個:
- 改寫軟件代碼,使軟件能理解像00、01、02等這樣的年份指的是2000年、2001年、2002年等。
- 通過使用4位占位符來表示年份并且把所有軟件的代碼改寫為能處理4位數(shù)的日期來“真正解決問題”。(關(guān)于此問題的有趣思考——為什么使用4位數(shù)來表示年份?為什么不用5位數(shù),甚至6位數(shù)?因為大多數(shù)人都會認(rèn)為不會有人在距今8,000年的時間后仍然使用那個軟件,這似乎像是合理的假設(shè)?,F(xiàn)在您可以明白我們是如何陷入Y2K問題的了。)
這些修復(fù)方法從概念層面上看很容易解決——找到代碼,找出每個日期計算并將其更改為能正確處理日期就行了。問題在于在軟件中有幾百萬個地方需要修復(fù),每次修復(fù)不得不用手工進行,隨后還要進行測試。例如,一家保險公司可能有2千萬或3千萬行代碼在執(zhí)行其保險金計算。在代碼內(nèi)部可能有10萬或20萬個日期計算。根據(jù)代碼的編寫方法,編程人員可能不得不用手工進入代碼,并修改程序中使用日期的每個點。隨后他們還必須測試每個更改。在大多數(shù)情況下測試是個難題——可能需要很長時間。
假設(shè)每個更改并測試需要一天,并且需要進行10萬次更改,而一個人一年工作200天,則這意味著需要500人一年的時間才能完成所有這些更改。再假設(shè)多數(shù)公司沒有500名閑置的編程人員在那里坐上一年來做這件事,并且公司不得不雇用這些人來從事這件事,您就會明白為什么修復(fù)這個問題的代價會如此昂貴。假設(shè)一個編程人員的費用是一年15萬美元(包括一切費用,如編程人員的薪金、福利、辦公空間、設(shè)備、管理、培訓(xùn)等),您就會明白,若要修改一個大型程序中的所有日期計算可能要花掉公司幾千萬美元。
存檔版本
雖然Y2K問題在2000年1月來了又走了,但我們?nèi)詫⒈疚淖鳛椴┞劸W(wǎng)美國站的存檔版本保存起來,因為它有歷史價值。本文發(fā)表于1999年初,當(dāng)時正值媒體上Y2K恐慌達(dá)到高潮之時,本文以一句“實際上什么也不會發(fā)生”而受到人們的關(guān)注?;叵肫饋恚蔷湓捦耆_,但在1999年1月,卻肯定不是主流媒體所描繪的景象。博聞網(wǎng)美國站曾因這條直白的預(yù)測而收到過一些言詞激烈的電子郵件。
2000年1月1日將會發(fā)生什么
2000年1月1日,沒有經(jīng)過修復(fù)的軟件將停止工作或產(chǎn)生錯誤的輸出。重要的問題是,“據(jù)我們所知,那將給世界帶來多大影響?”
有些人預(yù)測世界末日將要來臨。例如,世界范圍的停電、交通運輸基礎(chǔ)設(shè)施完全癱瘓(意味著食品無法運到商店,等等)、飛機從天空中墜落等諸如此類的情景都是這些人的預(yù)測。這種預(yù)測說社會結(jié)構(gòu)將會崩潰、各地的人民將發(fā)生騷亂、世界將徹底毀滅。當(dāng)然,進行這些預(yù)測的人往往是:A)民兵組織的成員,B)生存主義者,C)宗教狂熱者。識別這些預(yù)言的來源很重要。
實際上什么也不會發(fā)生。出現(xiàn)一些出乎意料的問題和解決這些問題可能會造成一兩個星期的不方便。除此之外不會有其他影響。這是一個很容易作出的預(yù)測,因為:
- 大多數(shù)公司和政府機關(guān)將在1999年年底之前修復(fù)他們的軟件,或者準(zhǔn)備好變通方案。否則,他們就要關(guān)門歇業(yè),這是促使完成這項工作的一個有力動機。
- 無論我們覺得我們對計算機的依賴程度有多大,大多數(shù)日常事務(wù)還是由人來完成的,而不是由硅來完成的。以食品為例,西紅柿和生菜將繼續(xù)生長、采摘它們的人將繼續(xù)采摘、罐頭食品廠將繼續(xù)制造罐頭、卡車司機將繼續(xù)駕駛卡車、食品雜貨店將繼續(xù)出售食品。換句話說,即使有一些計算機停止工作,世界也不會因此而停止。
- 一些公司將無法協(xié)調(diào)其運作,因此將會出現(xiàn)問題。它們將關(guān)門歇業(yè)。這是正常的資本主義制度在起作用。隨著優(yōu)勝劣汰的進行,可能會有一點擾亂,但除此以外還會有什么別的新鮮事呢?
另外值得一提的是,我們始終都在經(jīng)歷不方便的事,但它對我們的影響很小或根本沒有影響。例如,當(dāng)UPS(美國聯(lián)合郵包服務(wù)公司)在1997年罷工的時候,它在美國關(guān)閉了大約80%的包裹投遞基礎(chǔ)設(shè)施。世界末日并沒有來臨——所有人都改為使用郵局和Fedex公司。1999年1月3日,芝加哥和底特律經(jīng)歷了30年來最嚴(yán)重的一場暴風(fēng)雪。這場暴風(fēng)雪關(guān)閉了全國的航空運輸、推遲了底特律汽車展的開幕、使成千上萬的人陷于困境。然而我們都設(shè)法從困境中挺過來了。2000年1月1日將會有一些公司遇到問題。但許多其他公司不會出問題。困難會給人造成不便,但僅此而已。兩星期后我們就會克服困難。它與暴風(fēng)雪或大罷工沒什么不同——我們能找出解決問題的辦法,生活將一如既往。
圍繞著2000年問題,有人用了很多嚇人的花招和夸張的手法。所有這些花招和夸張都使用了一個相當(dāng)廣泛的假設(shè),那就是從此以后人們再也不能做他們的工作了。需要認(rèn)清的重要一點是,即使在2000年1月1日那天世界上有很多計算機突然關(guān)閉,其總的影響也是微乎其微的,因為人們知道該如何做事。讓我告訴你為什么:
- 假設(shè)在美國所有的自動取款機都停止了工作。但是出納員仍然在,你可以在正常的營業(yè)時間到銀行找出納員辦理存款和取款。
- 假設(shè)UPS的所有計算機都關(guān)閉了。UPS是由一群駕駛棕色卡車到處跑的人組成的,他們都會讀地址標(biāo)簽。包裹仍然可以正常投遞。
- 假設(shè)商店里所有的條形碼閱讀器都停止了工作。但是出納員仍然可以鍵入價格。
- 假設(shè)聯(lián)邦航空管理局的所有計算機都關(guān)閉了,并且所有飛機上的自動駕駛儀的計算機也停止了工作。但航空管理人員是人,不會停止工作,而且飛行員仍然可以駕駛飛機。也許我們做不到在繁忙的機場上每分鐘降落兩架飛機,但是飛機仍然可以飛行。
- 關(guān)于Y2K問題所用的嚇人花招之一是“電力網(wǎng)癱瘓”。假設(shè)某地的電力網(wǎng)出了問題。能勝任管理和修理供電網(wǎng)絡(luò)的人有成千上萬,這些人就是每次發(fā)生颶風(fēng)、冰雹等災(zāi)難后修復(fù)電力網(wǎng)的人。另外需要注意的重要一點是,電力網(wǎng)并不是什么神奇的東西。請閱讀電網(wǎng)工作原理以了解相關(guān)信息。電力網(wǎng)是由無源線路和變壓器組成的。在2000年1月1日,電子仍將在線路中流動。
在末日論者之中有一種設(shè)想,即2000年1月1日所有計算機都將由于某種原因出現(xiàn)故障(這種說法很愚蠢),而且所有人也都會以某種方式“出問題”。如果你想一想,就能看出那是多么荒謬。我們都知道如何做自己的工作,我們誰都想繼續(xù)自己的生活。在2000年1月1日,我們并不會有什么不同。我們將乘自己的汽車,我們將要去買東西。賣東西的人仍將希望出售貨物,這樣他們就能掙錢。這是永遠(yuǎn)不會變的。
評論