超驗駭客中提到的千年蟲問題當年是如何解決的?
看問題,題主似乎是認為在2000年到來的前幾天,集合全人類的智慧一舉解決了這個問題?
不是的,Y2K問題從80年代就開始有人著手解決了,用了整整20年的時間(可能更多?)一點一點的替換掉了有BUG的系統……
當然到最後也有沒替換乾淨的,就出各種幺蛾子事了
於是現在我們面對著2038年蟲……
這個也在大致10年前開始,各大企業開始著手解決,時至今日民用系統大部分已經解決了這個問題,剩下來的多是難以替換的嵌入式系統和工業控制等領域
沒事,我們還有20年可以用呢……
只能希望2038年的時候沒有關鍵系統依然運行著有2038年蟲的系統了
Millennium bug = Y2K
是指在某些使用了計算機程序的智能系統(包括計算機系統、自動控制晶元等)中,由於當時計算機的存儲器成本很高,所以其中的年份只使用兩位十進位數來表示,因此當系統進行(或涉及到)跨世紀的日期處理運 算時(如多個日期之間的計算或比較等),就會出現錯誤的結果,進而引發各種各樣的系統功 能紊亂甚至崩潰。
(2000年1月3日 由於 Millennium bug 程序錯誤的顯示為1900年1月3日)
當年 Millennium bug 所帶來的影響的確不小,當時的解決方法:
對於程序來說,就是在編寫程序時拋棄當時從60年沿襲下來的傳統--用兩位數表示日期中的年,例如「1-9-8-8」年就用「8-8」表示。
轉而用四位數表示,日期擴大到包括世紀。
這被認為是「純粹」的解決方案,明確了程序日期的編寫格式,幾乎是永久性地「解決了戰鬥」(除非你能活到xxxxx年)同時也易於維護。對於資料庫的話,也採用了類似的解決辦法。
然而,這種方法是昂貴的,當年需要改大量的程序同時進行大量的測試和轉換工作,通常影響到整個系統。有點像「重新編寫世界的節奏」,花費的確不菲。
簡單舉兩個當年 Millennium bug 干擾生活的例子 :
1.假如當年有中國移動的話,你在1999年12月31日23:59分用運營商是中國移動的電話打了三分鐘的電話,而當時的計費系統恰好存在這個大 Bug,第二天你就會接到 10086 MM 給你打電話哦,叫你去看看賬單,你就會發現:次奧,話費多的連房子賣了都賠不起。!!!!
因為電話局的賬單可能顯示為(100年-3分鐘);
《Type Systems for Programming Languages》的第一章,提到了一種「Y2K conversion tool」,可惜沒有進一步說明。
推薦閱讀:
※如何看待加勒比海盜5的爛番茄開局?
※約翰尼德普為什麼和蒂姆波頓感情那麼好?兩人還有什麼關係?
※怎麼看普叔和Amber Heard的訂婚?
※如何結識強尼德普?
※如何看待約翰尼·德普說要暗殺美國總統特朗普?
TAG:計算機 | 約翰尼·戴普JohnnyDepp |