Loading AI tools
數字和非數字文檔和數據存儲情況的問題 来自维基百科,自由的百科全书
2000年问题(英語:Year 2000 Problem),在英文中也被简称为Y2K,在中國大陸及香港常被称为千年虫问题[1][2],台湾則称千禧蟲危機[3],是指由于当时的计算机程序在日期表达上的设计问题,从而导致计算机会误读在2000年后的一些日期,并进一步导致计算机出现错误所引起的计算机问题,当时的计算机程序普遍采用6位数字来存储时间,只显示四位数字后的两位数字,但这又会导致计算机系统紊乱,使其无法区分2000年与1900年,从而导致了误读问题[4][5][6],并导致计算机紊乱。2000年问题可能会威胁到那些运行在重要行业中的计算机与大量社会基础设施,甚至影响到政府部门与军队。从而导致停水、断电,银行瘫痪,最极端的情况下,它甚至可能会导致核電廠发生事故[7],核武器与导弹失控[8][9][10]以及交通与通信的中断,并最终引发灾难性的后果[11]。
此條目需要补充更多来源。 (2019年7月28日) |
但最终,在2000年问题引起社会广泛重视后,它得到了足够的关注与处理,最终在规模庞大的修复行动后,它没有在新千年到来之际引起全球電腦系统的大规模瘫痪[12][13][14]。
两千年问题始于1960年代,当时计算机内存和外部存储介质的成本很高,大多数数据处理需要借助穿孔卡片。為了節省硬體成本,葛麗絲·霍普在Harvard Mark I上以6位數字來儲存時間,即年、月、日各兩位。這個習慣被COBOL繼承下來,傳播到整個電腦程式界。
当时的编程语言,如COBOL和RPG,使用ASCII和EBCDIC编码表示数据。如果用四位数字表示年份,就要多占用存储介质空间,使成本增加;因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。随着计算机技术的迅猛发展,存储介质的价格逐步下降,但在计算机系统中使用两位数字来表示年份的做法却由于惯性思维而被沿袭下来;对大多数程序员来说,他们并不认为所编写的软件会持续使用很多年。
具体来讲,两千年问题要解决的事项包括以下几个要点:
两千年问题是由鮑伯·貝默在1958年第一次提出的。在其后的二十年里,他用了很大的努力,希望政府、企业和国际组织(如IBM和ISO)来关注这个问题,但反响寥寥。直到2000年将要到来的时候,人们才感觉到两千年问题的紧迫性。于是社会和政府都投入了大量的人力和物力来避免发生大规模的计算机灾难。而从现在来看,这些努力也取得了相应的成果。
有些程序可能会免在2000年出现闰日而强行修改计算日期的过程。这些程序如果继续在將來的閏年使用的话,有可能会导致日期错乱。
另一方面,对于使用其它历法的地区,如台湾的民国纪年或日本的和曆,类似问题也有可能在之后的年份出现。例如:民国100年就在2011年。如果所用的软件没有解决两位年份的问题,那其实只是将两千年问题從2000年推迟11年後再发生。
对于目前在世界上广泛用作服务器软件的Unix系统来讲,由于传统的Unix系统使用32位的整型数表示日期(这个32位数字表示从1970年1月1日起至所存储日期过去了多少秒),因此在2038年日期将会被卷回,这类似于2000年问题。时间将可能重新从1970年1月1日开始计算,这将可能引起世界范围的计算机故障。这被称为2038年问题。
此外仍然有一个问题:是否存在10000年问题。當然这是一个遥不可及的问题。
另外,有不少人以為過了公元2000年之後,「千年蟲」的問題就會自動消失。然而,若然沒有對編程方式作合適的修訂,問題在過了公元2000年依然會出現。以下為兩個在公元2008年曾經出現的千年蟲問題:
1999年年底,在全世界程序员在为千年虫问题焦虑的的时候,日本程序员却灵机一动:如果继续沿用昭和(1926年开始)年号的话,千年虫会足足延后25年(延至2025年)。如此之长的时间足够解决这次的问题了。然而日本在2019年改元为令和时,不但要更改年号,而且昭和时代年号计算的“新千年虫”(昭和100年)马上就要来临(昭和100年問題)。因此有程序开发人员在Twitter上抱怨难以维护这些老旧计算机代码问题。[15][16]
在2000年之前,香港有不少騙徒宣稱有千年蟲蛀蟲藥,誘騙對千年蟲問題一知半解的民眾購買(有部分不熟悉電腦的市民以為千年蟲是一種類似瘟疫、傳染病等病毒),是當時典型的街頭騙案,電視節目《警訊》亦不時提醒市民慎防騙局。[17][18]