m.johnnytowncar.com.cn 1999 


再探「千年虫」

益科

正当「千禧之年」即将来临之际,一团令人扫兴的乌云--「千年虫」的乌云,却在全球上空弥漫、漂浮。有关「千年虫」的话题也变得「热门」起来。从大众媒体到专业媒体,「千年虫」知名度陡增,风头出尽,看来,千年虫真是「来者不善」。那么,它是如何危害人类,危害到底又有多大呢?

 

千年虫的本性:到处把身藏,害你没商量

 

先来看一下千年虫危害的四种表现形式:

一是表示错误。即把20xx年表示成19xx年。例如2000年,在不同的机器中,可能表示成1900年,1980年,或1990年。这种错误如果不涉及重要的计算,危害性相对还不大。

二是计算错误。这问题可就大了。假定您于1990年在银行存入一笔款项,到2000年去取款时,存期应为10年。但机器将2000年误为1900年,计算您的存期为:1900-1990=-90(年),从逻辑概念上理解,存期为负数表示您还没存钱就要取钱,银行当然不干,于是您的账号可能被电脑程序判定为「非法」而冻结甚至取消,您的存款也就连本带利被无端「吞没」了,岂不冤哉枉也!如果电脑程序将负号忽略(这种可能性很小),只看绝对值,则您的存期变成90年,您可就大发,而银行可就亏老了!这仅仅是一个局部的例子,不难设想,在全社会的范围,计算错误带来的危害性会有多大。

三是溢出错误。这种错误主要可出现在各种自动控制系统的植入式芯片中,其危害也非同小可。所谓「植入式芯片」实际上就是集成在一枚芯片中的计算机,通常也有日期时间功能。进入2000年时,年份99加1变成00,并产生一个进位。如果芯片中只有两位存放年份数据,这个进位便「无处存身」,这种情况在计算机中称为「溢出」,通常作为异常错误处理,计算机因此中断正常运行,控制系统也就瘫痪了。其后果因控制系统的用途而异,可能会引起电梯停开,生产中断,仪表失灵,导弹失控……

四是不兼容问题。这类问题可发生在新、老计算机同时使用的部门。近年来(特别是1995年以后)新推出的计算机系统通常已对千年虫采取了某种防范措施,而较早期的系统中一般未采取措施,两种系统同时工作,年份数据格式不一样,难以协调,计算机术语称为「不兼容」。这类问题一旦发生,也可导致系统不能正常运行,后果不容忽视。

再来看一下千年虫的危害有哪些特点:

一普遍性。可以毫不夸张地说,千年虫几乎「无所不在」。首先它波及地域广。由于近年来计算机的迅速普及和网络系统的飞速发展,千年虫问题对世界上几乎所有的国家产生不同程度的直接或间接的影响;其次是受害面积大。千年虫问题涉及的部门、行业很多,可以说只要是使用了计算机的地方,就或多或少地存在千年虫问题。其中以银行、军事、商业、交通、通讯、工业等部门为甚。第三,涉及机种多。只要是计算机,特别是早期的计算机,无论是巨、大、中、小型机,微型机(包括台式机,便携机,单板机,单片机),服务器,工作站等等,只要采用两位数年份,均无一幸免。

二严重性。首先是延缓经济增长。据美国联邦储备机构官员的估计,为解决千年虫问题,可能使美国经济年增长率在本世纪最后两年内每年下降0.1个百分点,劳动生产率的增长减少0.2个百分点。在瑞士召开的国际银行2000年圆桌会议上,经济学家指出,计算机2000年问题爆发后,全球发生经济衰退的可能性已达60%,甚至有发生萧条的可能性。另据有关报道,如果2000年经济衰退,估计美国国内生产总值大约下降1万亿美元,股票市场的资本额也将损失1万亿美元。同理,其他国家的经济增长速度或多或少也会降低。其次是危及世界各国的安全。世界各先进国家的战略核武器、导弹系统,无一例外均采用计算机控制。目前,美国等西方国家最为担心的是,万一俄罗斯军方由电脑控制的战略预警系统因千年虫的影响而发生误报,或发射系统出现故障导致核导弹的意外发射,后果不堪设想。反过来也一样,西方的核武器一旦因千年虫问题失控,未尝不会对他国或本国的安全构成威胁。此外,自古以来「兵不厌诈」,也不能排除在某种特定情况下,某些人以千年虫导致的失控为借口对他国发动「先发制人」的突然袭击的可能性。第三是妨碍社会稳定。如果计算机因千年虫发作而不能正常工作,除了给使用计算机的单位和部门造成直接的损失之外,还可能引发各种民事纠纷或争端,扰乱正常秩序,破坏社会稳定。

三紧迫性。不言而喻,如不事先有所防范,2000年的新年钟声一响,千年虫的发作便「势在必行」,无人可以阻止,也没有任何商量、妥协的余地。

四复杂性。千年虫问题看似简单,不就是年份的位数不够吗,把两位改成四位就是了。从微观上看,的确如此。然而从宏观上看,对于一个庞大的计算机系统来说,光是要找出所有涉及年份的地方就够花时间的了,程序的修改工作量也不小,而要验证修改的结果是否正确,甚至更加费事。这就好比一大缸米中混进了一把沙子,从米粒中挑出沙子的动作三岁小孩都会做,然而要确保把所有的沙子都挑乾净,就不是那么简单了。这还只是从技术的层面上来看,由于千年虫问题还与社会、管理、法律、心理等诸多因素密切相关,是一道十分复杂的「多元、高阶联立方程」,求解起来还真不那么容易呢。

还有一点要注意的是,到目前为止,人们谈论的千年虫的种种危害绝大部份还未「既成事实」,到底它会给人类带来多大的实际危害。要到2000年之后才能确切知道,因此又具有一定的「不可预见性」。

 

千年虫的克星:杀虫自有方,不必乱惊慌

千年虫的危害性虽然很大,只要我们引起足够的重视,要消灭它也是完全有办法的,不必谈「虫」色变,惊慌失措。

由于千年虫普遍地存在于计算机的硬件、系统软件、应用软件之中,并且涉及管理方面的诸多因素,因此杀灭它也要从以上几个层次同时下手,不能留下「死角」。同时要注意各个层次采用的日期转换方法互相一致,以免造成混乱。这是解决千年虫问题的一般原则。

至于具体的杀虫方法有很多,在硬件方面可以改用无虫害的新机器,或加插具有灭虫功能的板卡,或用软件的方法改写驻留在关键部位的程序等。在软件方面有「日期重译法」、「日期操纵法」、「日期压缩法」等。其基本思路无非都是对两位数字的年份进行某种识别和换算,最终得到正确的年份表示和年份有关的计算结果,也可以一律直接采用4位数年份。每种方法各有其优缺点,要根据具体情况灵活应用。另外要注意的是所有互相关联的系统对现行或存档的日期资料,均以同一方式演绎和理解,以免引起混乱。

为了提高灭虫工作的效率,电脑专家们又创造了很多软件工具,来帮助人们解决问题,如划定问题的范围、找出日期调用的地方、扩展日期域等。当然,软件工具也并非万能,只对解决问题起一定的辅助作用,据有关专家估计,软件工具只能承担20%-30%的工作量,降低5%的费用,起关键作用的还是人。

 

千年虫的启示:代价何其高,检讨费思量

 

据权威机构估算,为解决千年虫问题,全世界需耗费约4000亿-6000亿美元。而人类历史上两次世界大战的经济损失据统计总共是5000亿美元。可见千年虫让人类付出的代价之高!

付出了如此高昂的「学费」,我们应当从千年虫现象中学到点什么?目前为止我们所使用的计算机,无论其型号种类千差万别,都有一个共同的弱点,那就是只能在事先限定的「长度」范围内进行数据的计算和处理。每种类型的数据,数字也好,字符也好,日期也好,都有一个最大长度的限制,一旦超出这个限制,机器就无能为力了。而在实际生活中,人们所接触和处理的数据,其长度往往是难以预先限定的,这就构成了一对尖锐的矛盾。千年虫其实就是这个矛盾的必然产物。仔细想想看,即便采用四位数表示年份,千年虫是解决了,但「万年虫」又来了(四位年份最大可表示到9999),好在「一万年太久」,可以不必去管它。然而其他因数据域有限而带来的问题就未必。例如中文信息处理技术中,由于字库容量的限制,会造成要用的汉字计算机上没有的尴尬局面。这就表明,随着计算机应用的更加普及深入,现行计算机的体系结构已越来越不适应。当然,要从体系结构上对计算机进行「革命」也不是一件轻而易举的事,它涉及到方方面面的问题太多,可能需要不止一代人坚持不懈的努力。相信现在的年轻一代,将运用他们的智慧,为解决这道比千年虫更难得多的跨世纪难题作出贡献!

《百科知识》1999.9

最近更新日期:2000年01月06日
中国新闻社版权所有,转载稿件务经授权




Baidu
map