词条 | 2000年问题 |
释义 | 介绍2000年问题(Year 2000 Problem,简称Y2K),台湾称千禧虫危机,香港则常称为千年虫问题,是指由于计算机程序设计的一些问题,使得计算机在处理2000年1月1日以后的日期和时间时候,可能会出现不正确的操作,从而可能导致一些敏感的工业部门(比如电力,能源)和银行,政府等部门在2000年1月1日零点工作停顿甚至是发生灾难性的结果。 2000年问题在英文中通常缩写为Y2K。其中Y表示“year”也就是年,而K则表示拉丁前缀“kilo”,表示1000。Y2K或者就是指2000年。 一般来说,由于计算机程序中使用两个数字来表示年份,如1998年被表示为“98”、1999年被表示为“99”;而2000年被表示为“00”,这样将会导致某些程序在计算时得到不正确的结果,如把“00”误解为1900年。在嵌入式系统中可能存在同样的问题,这有可能导致设备停止运转或者发生更加灾难性的后果。 由于世界上各地的政府和企业都对两千年问题给予了足够的关注,1999年1月1日到2000年3月1日并没有出现大范围的计算机故障。 程序问题两千年问题始于1960年代,当时计算机内存和外部存储介质的成本很高,大多数数据处理需要借助于用穿孔卡片,它用80行文本表示所储存的数据。那个时候的编程语言,如COBOL和RPG,使用ASCII码和EBCDIC编码表示数据。如果用四位数字表示年份,就要多占用储存器空间,就会使成本增加,因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份,随着计算机技术的迅猛发展,虽然后来存储器的价格降低了,但在计算机系统中使用两位数字来表示年份的做法却由于思维上的惯性势力而被沿袭下来。对大多数程序员来讲,他们并不认为所编写的软件会持续使用很多年。 具体来讲,两千年问题要解决的事项包括以下几个要点: 软件在特定的日期会否出现运作错误。要留意的日期包括以下几个日子:1999年1月1日、1999年4月9日(1999年的第99日)、1999年9月9日、1999年12月31日、2000年1月1日、2000年2月28日和2000年2月29日软件会不会利用特定的日期格式来表示档案完结,或档案已删除。软件会否出现错误的日期,如“19100年”或“3000年”。两千年问题是由Bob Bemer在1958年第一次提出的。在其后的二十年里,他用了很大的努力,希望政府、企业和国际组织(如IBM和ISO)来关注这个问题,但反响寥寥。直到2000年将要到来的时候,人们才感觉到两千年问题的紧迫性。于是社会和政府都投入了大量的人力和物力来避免发生大规模的计算机灾难。而从现在来看,这些努力也取得了相应的成果。 中华民国88年(1999年)12月30日,立法院制定《千禧年信息年序争议处理法》8条。次日总统 (88) 华总一义字第8800318870号令制定公布全文8条,并自公布日起施行。第一条(立法目的):“为因应公元二千年信息年序错置危机,鼓励公开信息,平衡消费者权益与事业责任,迅速妥适解决纷争,特制定本法;本法未规定者,适用其他有关法律之规定。”第七条(适用时间)第一项:“本法适用于中华民国九十二年一月一日以前所发生之信息年序错置。”第七条第二项:“第三条及第四条之规定,于本法施行前已成立之契约,亦适用之。” 问题的引申解决两千年问题不是一朝一夕的事情。有些程序可能会免在2000年出现闰日而强行修改计算日期的过程。这些程序如果继续在将来的闰年使用的话,有可能会导致日期错乱。所以,我们还不要对两千年问题掉以轻心。 另一方面,对于其它使用其它历法的地区,如台湾的民国纪年或泰国的佛历,类似问题也有可能在稍后年份出现。例如:民国100年就在2011年。如果所用的软件没有解决两位年份的问题,那其实只是将两千年问题从2000年推迟11年后再发生。 对于目前在世界上广泛用作服务器软件的Unix系统来讲,由于传统的Unix系统使用32位的整型数表示日期(这个32位数字表示从1970年1月1日起至所存储日期过去了多少秒),因此在2038年日期将会被卷回,这类似于两千年问题。时间将可能重新从1970年1月1日开始计算,这将可能引起世界范围的计算机故障。这被称为2038年问题。 此外仍然有一个更加有趣的问题:是否存在10000年问题。当然,在10000年时候互联网、人类文明、甚至世界都有可能不再存在。纵然这些都是可能性的问题,但无论如何,这条仍是个充满意思的问题。 所以,两千年问题的关键在于计算机日期存储的格式:时间可能是无限,但你只能够用有限的储存空间表示时间。涉及到日期的运算又是非常常见的一种运算。如果要彻底的解决这一类问题,就必须在设计硬件或者软件时候充分估计到你所设计的对象可能服务的时间。并且找到最合适的日期表示方法,从而避免在将来可能出现的问题。 问题的延续过往的程序员通过“把4位年份减去1900”这种懒惰的方法来取得2位年份的值。这种做法当延续至2000年之后,就会出现上图的后果。 另外,有不少人以为过了公元2000年之后,“千年虫”的问题就会自动消失。然而,若然没有对编程方式作合适的修订,问题在过了公元2000年依然会出现。以下为两个在公元2008年曾经出现的千年虫问题: 2008年是闰年,所以这一年有2月29日。不过,有相当数量的摩托罗拉旧款手提电话在这一天由于系统无法表示这一日,电话的日期被系统强制重置为2001年1月1日。直到现在,依然有软件利用“把4位年份减去1900”的方式来取得两位年份的做法,而不是取年份的最后两位,结果在网页上出现了右图的错误。 千年虫骗案在2000年之前,香港有不少骗徒宣称有千年虫杜虫药,诱骗对千年虫问题一知半解的民众购买(有部分不熟悉计算机的市民以为千年虫是一种类似瘟疫、传染病等病毒),是当时候典型的街头骗案,电视节目警讯亦不时提醒市民慎防骗局。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。