#21日图形卡挑战#
快要进入2000年的时候,电脑出了问题。就是著名的千年虫事件。
“千年虫”不是现实生活中我们看到的虫子,而是计算机系统因时间障碍而产生的虫子。
从1999年到2000年,计算机没有意识到bug这次的变化,导致了系统崩溃。
至于为什么会出现“千年虫”,这要从计算机的诞生开始。
时间回到1960年,当时计算机的存储设备非常昂贵,很多大公司负担不起。
5MB磁盘一年需要35000美元的租金,只能出租。
所以程序员写代码的时候,只能尽量简化所有的字符。
被誉为软件之母的格雷斯霍夫(美国计算机科学家)提出,通过6位数的表达时间,可以节省存储设备空间。
例如:1960年8月11日,可以缩写为600811。
霍夫女士发明的这种写法确实节省了存储空间,很快被人们接受和推广。
但是这种写法有先天缺陷。也就是说,年份前两位数将基本缩写。
当时缩写的是19XX年中的19年,时间到了2000年,节目无法准确地表达时间。
例如:2000年1月1日,缩写为6位数的是000101。
电脑会怀疑人生。如何回溯时间?
然后,计算机系统可能出现故障。
例如,程序是在1999年预设的,一年后自动删除文件。
2000年,关于节目回到了1900年,此时没有删除或删除文件吗?
像这样的问题导致的计算机故障就是“千年虫”的问题。
当人们广泛使用6位数字来表示日期时,当时一位计算机科学家敏锐地注意到,到2000年可能会出大事,他就是鲍勃贝尔默。
他在企业、大学、政府、机关之间奔波,呼吁人们防备“千年虫”。
但是鲍勃贝尔默的声音没有引起人们的注意,相反,人们认为他是杞人忧天。
当时人们认为这个程序不能用2000年。
以后存储设备成本会降低,所以如果存储空间充足,就不会再用6位数了。(大卫亚设)。
所以没有人改变这个写法。
这个问题一直拖到1990年,计算机行业才开始重视,在新推出的程序中采用8位数的写法。
但是由于以前的延误,麻烦很快就来了。
因为有很多电脑在运行旧程序,特别是需要考虑耐久性和稳定性的行业。
例如,交通系统、医药业、税务系统、电力系统、通信业、保险业、金融业等这些行业的计算机都在使用6位数表达时间的老程序。
这意味着,“千年虫”一旦发作,就会对人们的生活产生非常不舒服的影响。
人们为了避免“千年虫”发作,开始了计算机历史上最大规模的bug修复工作。
程序员加班重写程序的代码。
但是程序员很快发现,使用6位数表达时间的程序太多,如果都要重写的话,在2000年到来之前无法完成的问题。
所以他们做出了机智的选择,只重写重要行业的计算机程序,其他计算机的旧程序采用方便快捷的Windowing恢复方法。(威廉莎士比亚(Windows))。
ca3734acd188d2?from=article.detail&_iz=31825&index=5" width="640" height="427"/>简单来说,Windowing修复法就是通过更改时间窗口,只计算1920-2020之间的年份。
因为已经把1900年排除在外,00这两个数字只能代表2000年,所以计算机在时间的表达上就不会存在歧义。
这个方法不需要把六位数时间代码更改为八位数,因此能大大加快bug修复进度。
在随后的时间里,程序员们利用Windowing,修复了世界上80%的计算机,基本完成除虫行动。
当2000年的钟声敲响后,除了一些个人计算机崩溃以外,总体上还是相安无事的。
但是,还有其他与“千年虫”类似的程序bug,并未因此放过人类。
它们一直潜伏在计算机当中,寻找合适的机会发作。
上面提到修复“千年虫”的方法,只是简单把程序的时间计算区间调整为1920-2020年。
因为人们觉得到了2020年,大家应该都换新电脑了。
大家也许会说这个想法似曾相识,没错,这是人们又在自以为是地拖延问题。
因为到了2038年,有可能再次发生类似“千年虫”的事件,这就是“2038年问题”。
大家在平时或许有听说过,计算机的操作系统有32位和64位之分。
现在大多数计算机采用Unix时间戳的计时方法,简单来说就是:以1970年1月1日0时0分0秒为起点,然后通过计算秒数来算出当前时间。
比如:2021年5月7日15:00:00,换算一下就是1620370800秒。
由于32位操作系统所能计算的秒数有限,到2038年1月19日3:14:07,就会达到极限。
当操作系统所计算的秒数超过上限后,会自动把日期跳回到1901年,然后各种程序因为时间错乱而导致崩溃,跟之前的“千年虫”发作时类似。
理论上到了2038年,人们应该淘汰掉了32位操作系统,转而使用没有“2038年问题”的64位操作系统。
但是从前面的“千年虫”事件来看,没准还有变数,说不定最终还得程序员想办法去解决。
所以说,请大家对身边的程序员好一点,因为他们不仅要跟发际线、甲方斗争,还要为了拯救世界跟时间代码战斗。
好了,本期就到这里了,欢迎大家在评论区留下自己的看法。
我是月林科普,关注我,每天分享好玩有趣的科普知识。
1.《【2038年】程序员揭示什么是“千年虫”事件,什么是“2038年问题”》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【2038年】程序员揭示什么是“千年虫”事件,什么是“2038年问题”》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/2971665.html