20年前,一些开发人员处理通过千年虫的办法就是一直推迟到……现在。

20年前,全世界庆祝新千年伊始时,全球的IT专业人员为千年虫可能爆发直冒冷汗:人们担心,如果计算机将2000年1月1日(记为01/01/00)解释为1900年的第一天,依赖两位数日期日志的重要系统会停止运行。

所幸后来没有重大事件发生,原因是开发人员看到千禧年即将到来、做好了准备。但是20年后,很显然一些人采用了图方便的权宜之计,只是将这个问题推迟到了2020年。

一系列事件似乎已证实,Y2020是科技界最近的不受欢迎的余波。

比如说,一款过时的软件在新年导致支付选项无法正常使用后,整个纽约的停车计费表拒绝信用卡支付。交通运输部仍在巡查纽约市,对14000只停车计费表逐一手动更新,戏称该问题是“Y2K2X软件故障”。

2K制作的一款摔跤游戏(居然取名为WWE 2K20)新年才过几秒钟就出现了崩溃;众多游戏玩家跑到社交媒体上吐槽,指出将日期改为前一天就可以解决崩溃问题。

虽然官方并未将其归因于Y2020漏洞,但汉堡地铁系统的故障在新年软件更新失败后阻碍了交通。

那么,为什么计算机系统面对20年前的千年虫突然束手无策?在一些情况下,它可能归结为一种名为“关键年”(pivot year)的技术,许多开发人员早在2000年就采用这种技术来处理千年虫。

假设你是一家创办于1920年的机构,可以假设你没有在此之前的任何信息。因此,在两位数日期记录系统中,“20”成为你的关键年。这意味着含有“00-20”之间的两位数年份的数据将被处理成2000年后,而20-99之间的年份将被解释为指上个世纪。

当然,不是所有的公司和组织都创办于1920年,但20年前,2020年似乎还遥远得很,许多开发人员仍选择20作为关键年,想当然地认到现在大多数代码和遗留系统将被替换。

那时候Greg Sternberg是一名开发人员兼顾问。他为多家金融公司工作,“关键年”技术是一种权宜之计,通常用于争取时间。

他说:“很多时候我被告知,‘该程序不可能在2020年还会运行。’而在许多情况下仍会运行,而同样许多程序驻留的时间比最初预期的要长。”

“做出短期决策可能是当时最快捷的方法,可能这些方法更方便。但是方便通常意味着以后会找你的麻烦。”

这倒不是说大多数组织都选择了关键年这个策略。长期解决千年虫问题的另一种方法是重写编程系统的所有组件以及重写所有数据库和数据源,以便它们使用四位数的年份。

这花费了时间和大量资金;确切地说,全球共花费了3000亿美元至5000亿美元。然而,这正是2000年1月1日子夜钟声敲响后没有出现技术系统完全瘫痪的原因,以至于千年虫常常被称为是危言耸听的流言。

Sternberg说:“我们没有意识到这个问题。一些程序员多年来努力解决这个问题。坦率地说,他们是无名英雄。”

但是对于只是将这个问题推迟了几十年的那些人来说,问题才刚刚又开始出现。

声明:本文来自云头条,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。