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