搜尋

關 於 本 書

‧內容簡介
‧作者簡介
‧目 錄

線 上 試 閱

果芸序
吳思鍾序
康之政序
劉一賜序
自序
策劃序
書摘 1
書摘 2
Y2K 之 Q & A

資訊科技

【類別最新出版】
ChatGPT:AI革命
區塊鏈完全攻略指南:區塊鏈是什麼?會如何改變我們的工作和生活?
初學Jetson Nano不說No-CAVEDU教你一次懂
Arduino首次接觸就上手(套件組合)
百萬粉絲經營法則:30天3步驟打造社群經濟力,在社交平台擁有百萬追蹤數


Y2K完全求生手冊(DH0078)

類別: 行銷‧趨勢‧理財>資訊科技
叢書系列:BIG系列
作者:李建良
策劃:呂亮震
出版社:時報文化
出版日期:1999年05月24日
定價:250 元
售價:198 元(約79折)
開本:25開/平裝/264頁
ISBN:9571329096

已絕版

 轉 寄 給 朋 友

 發 表 書 評 

 我 要 評 等 

Share/Bookmark

線 上 試 閱

 

果芸序吳思鍾序康之政序劉一賜序自序策劃序書摘 1書摘 2Y2K 之 Q & A



  書摘 1

何謂千禧蟲危機

釋疑

如果您到現在還不知道什麼是千禧年電腦危機,那您可真的是孤陋寡聞了!隨著時間的逼近,加上各大媒體的報導,大多數人都應該已經知道時序走到公元 2000 年的時候,電腦將會因為軟、硬體的問題沒辦法順利跨過,造成電腦計算錯誤,衍生出一堆又一堆的問題。這樣的說法相信您早就聽說過,但恐怕很多人還是認為「千禧蟲真的有這麼嚴重嗎?」

是你們這群所謂的「電腦專家」在嚇唬我們這些不懂電腦的人,趁機想撈錢吧?!

我們想藉此機會再次告訴各位:千禧蟲確實存在,不是嚇唬各位的。如果大家再這樣輕忽下去,後果可能會嚴重的超乎大多數人的預期程度。

想解決千禧蟲的問題絕對不是靠幾個電腦工程師就可以搞定的。沒有投入大量的時間、金錢、人力,要想把這個棘手的千禧蟲問題解決恐怕相當困難。依美國估計,單單是美國政府部門花在千禧蟲的防治上就要花掉 47 億美金,還只期望屆時能讓重要的系統維持正常運作(根據 3 月 19 日聯合報第 11 版的報導,美國聯邦機構的預算已經提高到 68 億美元,而且仍繼續追加中)。

一般人使用電腦,總覺得電腦好像是無所不能,做什麼都快又好,是一個非常好的幫手。其實呢?電腦不過是一個比較複雜,功能比較強大的工具罷了,雖然電腦不會累,不會罷工,不會要求休假、退休金、員工福利,但是它可不像人這麼有彈性。我們就以大家日常都能看得到的個人電腦舉例,看看日期到底是怎麼表現出來的?

現在大家都已經習慣使用二位數的年份來代表西元年份。我們常常說今年是 99 年,去年是 98 年,我們已經進入 90 年代的尾聲等等,大家都很清楚我們指的是 1999、1998 以及 1990 年。如果要我們換算 1998 年是民國幾年,很簡單,因為我們知道民國 1 年是西元 1912 年,換句話說民國與西元相差 1911 年,只要計算 1998 減 1911,就可以知道 1998 年是民國 87 年,那麼電腦是怎麼知道的?當然是程式設計師,要電腦將西元年份減去 1911 或是 11 而得來的,當公元 2000 年來臨時會怎麼樣呢?如果你的電腦時鐘記錄的時間是正確的話,應該是 2000 減 1911,得到民國 89 年,可是早期乃至於一、二年前的個人電腦,對於日期處理是只儲存後兩位數(因為前二位一直都是 19),換句話說 1999 年 12 月 31 日午夜之後,年份後兩位會變成 00,前兩位卻還是 19,於是 2000 年的 1 月 1 日,電腦一開機,日期就成了 1900 年 1 月 1 日了,這個日期是不合理的(1900 年根本就沒有電腦存在),所以大部分的電腦會把年份調回到 1980 或者是 1990 不等(看當初電腦對於不合理是如何設計),電腦可不像人腦:進入 2000 年之後,要是一個人看到今年是 1900 或是 1980、1990 年的話,他一定會知道這是錯誤的年份,然後自己改用 2000 年來計算。換句話說,人腦天生就具有自我更正程式(行為模式)的能力,換成電腦呢?電腦只會根據程式設計師當初的設計方式執行程式,完完全全一板一眼的照著規定做,完全不知道變通,除非當初程式設計師有考慮到這樣的情況,將處理這種錯誤年份的程式也寫進去(當然我們知道大部分的程式設計不可能考慮到這種狀況,當年有考慮的話,那今天早就沒有千禧蟲的問題了!),那麼電腦程式照做的話會得到今年是民國幾年呢?

請看下表:

正確年份
系統給的錯誤年份
減去 11
減去 1911
2000
1900
-11
-11
2000
1980
69
69
2000
1990
79
79

根據這樣算出來的結果,想得知今年是民國幾年就錯得一塌糊塗,若是再依據這樣的結果,再去推算員工年資能不出問題嗎?更何況年份原本不應該有負數,很多程式也可能根本不考慮這種可能性,一旦年份算出負數來,很可能就直接當機,不動了!

千萬不要以為你的電腦資訊系統是採用民國年就不會出事,前面我們已經看到民國年其實只是透過一段小程式計算得來的,沒有計算公式,電腦根本就沒辦法知道現在是民國幾年請各位仔細想一想,電腦是那一國人發明的?即使今天的中文電腦環境,骨子裡也都是英文電腦,全都是用公元年份在計算,只是最後顯示的時候切換成民國年罷了!沒有一台電腦天生是以民國年來記錄年份的,換句話說,只要電腦的西元年份出了問題,民國年也一定出問題,除非你使用的這套軟體當年程式設計師就已經考慮到這種種可能的問題,當然這幾乎是不太可能的。如果當年程式設計界有這種念頭的話,那電腦硬體界當然也不會設計出不能順利渡過公元 2000 年的電腦硬體了!

Y2K 問題怎麼發生的?

歷史總是不斷重演。50 年代的電腦系統年份就只有一位數,因此遇上了 1960 年時,必須要全部修改程式,汰換電腦硬體,還好當時電腦的應用領域還不多,影響的範圍不大,但從那時候起電腦年份就改成兩位數了!

在 1960 年代,電腦及其相關設備是非常昂貴的,一顆 10 M 到 20 M 之間的硬碟就可以稱之為大型磁碟機,因此當時的程式設計師無不費盡心思,考慮如何有效經濟的儲存所需要的資料。在這樣資源昂貴又有限的環境下,包括硬體廠商及所有的程式設計師都養成節儉的習慣,影響所及,日期用六位數表示 DD/MM/YY 變成是當時的標準,多數電腦硬體所提供的系統日期用六位數表示年月日,許多的電腦語言如 COBOL 所提供的日期函數也是用六位數 DD/MM/YY 或 MM/DD/YY 表示。也就因為這樣,多數的程式設計師在撰寫程式時都約定俗成的採用六位數來表示日期,沒有人會認為當時所寫的系統會持續使用到公元 2000 年。換句話說,壓根就沒有人考慮到公元 2000 年 1 月 1 日在電腦系統中的日期表示為 01/01/00,將會導致 1999 年 1 月 1 日計算起來比 2000 年 1 月 1 日還大的現象。六位數的表示法使得電腦程式因誤認 2000 年為 1900 年,造成所有與日期計算之程式都出現問題,產生資訊系統混亂。這樣的問題很嚴重,可是 60 年代的工程師怎麼會想到有這種問題發生?當時一般人的想法,電腦硬體與軟體發展這麼快,辛辛苦苦開發出來的程式能不能用上三五年都還是個問題,怎麼可能會造成 2000 年的問題呢?

當時部分有先知卓見的人士提出上述問題,但是都忽略了整個大環境,沒有人認為會遇到這種問題,就好像我們已經知道要順利渡過公元 2000 年必須電腦軟硬體都用四位數年份,可是這樣做的話,到了公元 10000 年的時候也會遇上 Y10K 的問題,請問有誰會認為這個問題很嚴重,必須現在就加以解決呢?

雖然軟硬體不斷的研發、汰換,舊有的架構卻沒辦法甩掉,不管是為了和舊的資料格式相容,或者是為了和其他硬體配備、應用軟體相容,總而言之,這樣一代一代的沿用二位數的年份直到 90 年代,眼看著就要邁入 2000 年了,Y2K 的問題也將隨之產生,不管是個人電腦或大型電腦的系統程式,只要是用二位數表示年份的檔案,或是資料庫都會發生問題。會發生什麼問題呢?電腦所有和時序直接、間接的功能,如日期的運算、排序、邏輯比較、顯示等,都將無法處理或者計算錯誤。先前開發的程式系統、檔案、資料庫、電腦硬體、操作系統等,甚至衛星導航系統、電話自動撥接系統、醫療維生系統、工廠自動化裝配線、安全控管門禁、銀行金庫開啟系統、核能電廠等有嵌入式電腦晶片的機器等等,祇要涉及日期年份都可能導致資訊系統混亂,造成政府機關或工商企業單位業務上的錯亂,舉例來說:

  1. 日期計算錯誤:因為存款期間跨年變負數,使存款變貸款;退休年資因跨年限計算錯誤等等。
  2. 業務中斷:如飛機訂位系統停擺,空中導航系統停頓,機隊嚴重脫班;電話公司因當機而無法正常營運。
  3. 信用卡公司認為使用者的信用卡已逾期數十年,銀行通知你的貸款利息已經 99 年沒有繳納;政府的社會救濟、老人年金無法發放等。
  4. 銀行金庫定時鎖因為日期歸零而無法開啟;智慧型大樓電梯認為距離上次的保養維修時間過久,拒絕啟動,系統管理者無法登入系統(密碼逾期失效)。
  5. 權益受損:如國稅局電腦認為你拖欠了 99 年的稅款,寄來天文數字的補稅通知。
  6. 法律糾紛:如合約、期貨交易、存款等記錄發生錯亂引發法律糾紛。
  7. 機場、航管電腦當機,造成交通運輸問題


附註:據說全世界的飛機有 75 % 一直在空中飛來飛去,如果因為公元 2000 年的問題,所有飛機決定停飛的話,可能連機場都不夠停!<