2000年问题
此條目需要补充更多来源。 (2019年7月28日) |
2000年问题(英語:Year 2000 Problem,簡稱:Y2K),中國大陸及香港常称千年虫问题[1][2][3],台湾則称千禧蟲危機[4],是一个计算机程序在日期表达上的设计缺陷,该缺陷会导致计算机错误识别2000年及之后的年份,从而导致其日期识别紊乱,使得计算机执行任何与时间相关的任务时都会出错,进而影响整个系统的运行。该问题主要涉及到许多老旧的计算机,为了节省存储空间,它们的程序普遍采用6位数字来存储时间,只取四位年份数字中的后两位数字用于表示年份。这种做法使得计算机无法识别和更变前两位年份,从而导致了年份的误读[5][6][7][8][9]。很多这些老旧的计算机直到临近2000年时都还工作在政府部门、军队、基础设施与许多重要行业当中。一旦工作在这些领域的计算机出现问题,将可能导致从停水、断电,银行瘫痪到核电厂事故和军械失控等一系列灾难性的后果[10][11][12][13][14]。
自20世纪90年代开始,2000问题逐渐透过媒体的传播引起了人们的关注,同时也引发了大众恐慌。针对该问题进行的全球性大规模修复行动也随之开始,全世界为修复2000年问题前后累计投入了3080亿美元[15],而在持续数年的修复之后,该问题最终得到了有效解决,没有在新千年到来之际大规模爆发[16][17][18]。
程序问题
两千年问题始于1960年代,当时计算机内存和外部存储介质的成本很高,大多数数据处理需要借助穿孔卡片。為了節省硬體成本,葛麗絲·霍普在Harvard Mark I上以6位數字來儲存時間,即年、月、日各兩位。這個習慣被COBOL繼承下來,傳播到整個電腦程式界。
当时的编程语言,如COBOL和RPG,使用ASCII和EBCDIC编码表示数据。如果用四位数字表示年份,就要多占用存储介质空间,使成本增加;因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。随着计算机技术的迅猛发展,存储介质的价格逐步下降,但在计算机系统中使用两位数字来表示年份的做法却由于惯性思维而被沿袭下来;对大多数程序员来说,他们并不认为其所编写的软件会持续使用很多年。
但是正是这种思維導致了千年蟲問題。
具体来讲,两千年问题要解决的事项包括以下几个要点:
- 软件在特定的日期会否出现运作错误。要留意的日期包括以下几个日子:
- 软件会不会利用特定的日期格式来表示档案完结,或档案已删除。
- 软件会否出现错误的日期,如“19100年”或“3000年”。
两千年问题是由鮑伯·貝默在1958年第一次提出的。在其后的二十年里,他用了很大的努力,希望政府、企业和国际组织(如IBM和ISO)来关注这个问题,但反响寥寥。直到2000年将要到来的时候,人们才感觉到两千年问题的紧迫性。于是社会和政府都投入了大量的人力和物力来避免发生大规模的计算机灾难。而从现在来看,这些努力也取得了相应的成果。
问题的引申
有些程序可能会免在2000年出现闰日而强行修改计算日期的过程。这些程序如果继续在將來的閏年使用的话,有可能会导致日期错乱。
另一方面,对于使用其它历法的地区,如台湾的民国纪年或日本的和曆,类似问题也有可能在之后的年份出现。例如:民国100年就在2011年。如果所用的软件没有解决两位年份的问题,那其实只是将两千年问题從2000年推迟11年後再发生。
对于目前在世界上广泛用作服务器软件的Unix系统来讲,由于传统的Unix系统使用32位的整型数表示日期(这个32位数字表示从1970年1月1日起至所存储日期过去了多少秒),因此在2038年日期将会被卷回,这类似于2000年问题。时间将可能重新从1970年1月1日开始计算,这将可能引起世界范围的计算机故障。这被称为2038年问题。
此外仍然有一个问题:是否存在10000年问题。當然这是一个遥不可及的问题。
问题的延续
有些程序可能会免在2000年出现闰日而强行修改计算日期的过程。这些程序如果继续在將來的閏年使用的话,有可能会导致日期错乱。
另一方面,对于使用其它历法的地区,如台湾的民国纪年或日本的和曆,类似问题也有可能在之后的年份出现。例如:民国100年就在2011年。如果所用的软件没有解决两位年份的问题,那其实只是将两千年问题從2000年推迟11年後再发生。
对于目前在世界上广泛用作服务器软件的Unix系统来讲,由于传统的Unix系统使用32位的整型数表示日期(这个32位数字表示从1970年1月1日起至所存储日期过去了多少秒),因此在2038年日期将会被卷回,这类似于2000年问题。时间将可能重新从1970年1月1日开始计算,这将可能引起世界范围的计算机故障。这被称为2038年问题。
此外仍然有一个问题:是否存在10000年问题。當然这是一个遥不可及的问题。
问题的延续
有觀點認爲過了公元2000年之後,「千年蟲」的問題就會自動消失。然而,若然沒有對編程方式作合適的修訂,問題在過了公元2000年依然會出現。以下為兩個在公元2008年曾經出現的千年蟲問題:
- 2008年是閏年,所以這一年有2月29日。不過,有相當數量的摩托羅拉舊款手提電話在這一天由於系統無法表示這一日,系統將電話的日期強制重置為2001年1月1日。
- 在现代浏览器和網頁設計中,如需將年份簡寫爲兩位數字,通常直接取年份的最後兩位(如將2021年簡寫爲「21」)。但如使用已废用的JavaScript“.getYear()”函数,利用「把4位年份數字減去1900」的方式來取得兩位年份數字,則会出现“不正常”的结果,例如将2021年显示为“121”。
日本平成时代的结束与新千年虫
1999年年底,在全世界程序员在为千年虫问题焦虑的的时候,日本程序员却灵机一动:如果继续沿用昭和(1926年开始)年号的话,千年虫会足足延后25年(延至2025年)。如此之长的时间足够解决这次的问题了。然而日本在2019年改元为令和时,不但要更改年号,而且昭和时代年号计算的“新千年虫”(昭和100年)马上就要来临(昭和100年問題)。因此有程序开发人员在Twitter上抱怨难以维护这些老旧计算机代码问题。[19][20]
千年蟲騙案
在2000年之前,香港有不少騙徒宣稱有千年蟲蛀蟲藥,誘騙對千年蟲問題一知半解的民眾購買(有部分不熟悉電腦的市民以為千年蟲是一種類似瘟疫、傳染病等病毒),是當時典型的街頭騙案,電視節目《警訊》亦不時提醒市民慎防騙局。[21][22]
参看
参考文献
- ^ 香港金融管理局. 香港金融管理局 - 扑灭「千年虫」. 香港金融管理局. [2023-02-20]. (原始内容存档于2023-03-06) (中文(中国大陆)).
- ^ 梁光漢. 認識「公元2000問題」刻不容緩. 香港电台. 1998-06-15 [2024-11-25]. (原始内容存档于2022-07-02) (中文(香港)).
- ^ 姜岩. “千年虫”问题引出的思考. 光明日报. 2000-01-03 [2024-11-25] (中文(中国大陆)).
- ^ 開箱老照片》20世紀最後一天 各界嚴陣以待千禧蟲危機. 中央通讯社. 2023-12-31 [2024-11-25] (中文(臺灣)).
- ^ Feder, Barnaby J. For Computers, the Year 2000 May Prove a Bit Traumatic. The New York Times. 1988-05-07 [2023-03-12]. (原始内容存档于2023-03-12) (美国英语).
- ^ Peter de, Jager. Doomsday 2000. Computerworld (IDG Enterprise). 1993-09-06, 27 (36): 105-108. ISSN 0010-4841.
- ^ Ullman, Ellen. The Myth of Order. Wired. 1998-04-01. ISSN 1059-1028 (美国英语).
- ^ Bristoll, Scott. The Year 2000 and Computers:What's All the Fuss About?. Cincinnati Enquirer. 1999-01-16. (原始内容存档于1999-01-17) (英语).
- ^ Li, Feng; Williams, Howard; Bogle, Martin. The ‘Millennium Bug’: its origin, potential impact and possible solutions. International Journal of Information Management. 1999-02-01, 19 (1). ISSN 0268-4012. doi:10.1016/S0268-4012(98)00043-7.
- ^ Anson, Robert Sam. 12.31.99 The Y2K Nightmare. Vanity Fair. 1999-01 [2024-11-25] (美国英语).
- ^ Ch, Rajiv; rasekaran. Big Glitch at Nuclear Plant Shows Perils of Y2K Tests. Washington Post. 1999-03-07 [2023-03-19]. ISSN 0190-8286. (原始内容存档于2023-03-14) (美国英语).
- ^ U.S. and Russia Agree on Joint Defense Against Y2K Debacles. archive.nytimes.com. [2023-03-12]. (原始内容存档于2023-03-12).
- ^ Kraig, Michael. Safe or sorry: The "Y2K problem" and nuclear weapons. Bulletin of the Atomic Scientists. 1999-03-01, 55 (2). ISSN 0096-3402. doi:10.2968/055002009.
- ^ Levy, Steven. The Day The World Shuts Down. Newsweek. 1997-06-01 [2024-11-15] (英语).
- ^ Y2K: The good, the bad and the crazy. Computerworld. 2009-12-28 [2024-11-25]. (原始内容存档于2010-01-01) (英语).
- ^ Y2K bug fails to bite. BBC. 2000-01-01 [2024-11-16]. (原始内容存档于2023-03-12) (英语).
- ^ Lohr, Steve. '00 Computer Glitches Are Mostly a No-Show. The New York Times. 2000-01-01 [2023-03-12]. (原始内容存档于2023-03-12) (英语).
- ^ Y2K bug declared New Year's Day loser, but could make comeback Monday. CNN. 2000-01-01 [2023-03-12]. (原始内容存档于2023-03-12) (英语).
- ^ 明明才2019年,日本却又要面对千年虫问题?岛国程序员崩溃_网易订阅. dy.163.com. [2019-07-28]. (原始内容存档于2019-07-28).
- ^ 为什么改元“令和”,竟然成了日本程序员的魔咒?. tech.ifeng.com. [2019-07-28]. (原始内容存档于2019-07-28).
- ^ 福州晚報. web.archive.org. 2016-03-05 [2019-07-28]. 原始内容存档于2016-03-05.
- ^ 留心今年骗徒十大骗术. web.archive.org. 2016-03-05 [2019-07-28]. 原始内容存档于2016-03-05.