我估计很多年轻的朋友应该都没听说过千年虫问题吧?简单给大家聊一下。
从定义上来讲,所谓的千年虫问题说白了就是程序处理日期恶性Bug,并不是后来广为流传的计算机病毒。
早古时期计算机存储成本极其高昂,所以设计者在计算机中记录年份时往往只记录后两位数,比如1997年会记录为“97”。后来存储成本不断下降,但这种记录方式却被保留下来,这也成为后来千年虫问题的病灶所在。
到了2000年,计算机记录下的数字为“00”,但是“00”会被默认识别为1900年。这就很尴尬了,我不说那些国防科技高精尖项目,如果这么整就连最基础的民生领域都会大受影响,举两个最为知名的例子。
比如你的钱存在银行里,2000年过后利息会被算成负数,甚至会导致账面信息混乱清零;再比如你在1999年岁末和爱人煲电话粥一直打到2000年伊始,你的通话时间会被记录为-100年,时光倒流导致话费计算系统崩溃……
大家不要以为这种日期处理错误是小事儿,拿苹果来讲,早些年iOS的Unix时间戳认定1970年1月1日0点0分0秒为时间原点,很多用户发现只要把iPhone日期设置为1970年原点之前再关机的话,手机就会直接变砖。当时很多乐子人发现这一Bug后跑到苹果体验店做实验,全球有大量演示机器遭殃。苹果的技术团队算是第一梯队吧?当时照样被搞得焦头烂额,过段时间升级系统才解决问题。
说回千年虫问题,当时大多数国家都在积极改变机制力图一劳永逸解决问题,但日本的技术人员很鸡贼啊。他们决定使用昭和年号记录日期,空想一个昭和100年(即2025年)出来,这样可以把问题足足延后25年。
时间过得可真快,一晃眼2025年就要到了。