一个Bug让人类科技倒退几十年?

简介: 一个Bug让人类科技倒退几十年?

大家好,我是良许。前几天在直播的时候,问了直播间的小伙伴有没人知道「千年虫」这种神奇的「生物」的,居然没有一人能够答得上来的。所以,今天就跟大家科普一下这个人类历史上最大的 Bug 。微信图片_20220420101934.jpg

1. 全世界的恐慌

一个Bug会让人类的科技倒退几十年?这不是危言耸听,而是真实存在的历史。1999 年的跨年夜,人们集体陷入恐慌,大家忙着取现金,忙着屯粮,还有人钻进山洞避难,他们感觉世界末日即将到来。进入新千年本来是一件非常值得纪念的日子,毕竟这辈子这样的机会也不多,但为何全世界却乱成了一锅粥呢?引起这场混乱的主角,就是著名的「千年虫」。

2. 什么是千年虫

现在新一代的程序员大多是 95 后或 00 后,千年虫来袭的时候他们要么还没出生,要么还在玩泥巴,所以对这场混乱几乎没有任何感知。所谓的千年虫,并不是一种生物,而是一种计算机 Bug 。那这又是一种怎样的 Bug ,为何又造成如此大的混乱呢?简单来讲,千年虫是由于计算机内部时间的存储不合理,导致时间紊乱,从而计算机罢工。1999 年到 2000 年虽然只隔了一年,但实际上这是世纪交替,导致系统时间错乱,随后崩溃。而这些都是有历史渊源的。计算机刚诞生的时候,由于技术的限制,导致计算机存储设备非常昂贵。而且贵也就算了,这些存储设备的容量偏偏又非常小(也是没办法的事),所以程序员们在写代码的时候,真的是对每个字符都要精打细算。

想想现在的程序员,可以随意分配内存空间,不为存储而发愁,真的是太幸福了。

为了节约内存,有位靓女想出了用 6 位数表达时间的办法,比如 1989 年 10 月 1 日就写成了 891001 。这位靓女,就是软件之母的格雷斯霍珀。也就是她,发现了人类历史上的第一个 Bug ,同时也制造了人类历史上最大的 Bug 。微信图片_20220420101939.jpg

当然,这里并不是在贬低她,在软件行业她给世人做出的贡献都是有目共睹的。更何况,哪个程序员没写过 Bug ?

霍珀发明的 6 位数时间记录法由于十分简单并且非常省内存,所以大家都纷纷微信图片_20220420101942.jpg效仿。也正是这 6 位数时间记录法的大规模使用,使得千年虫开始悄悄埋伏在人类社会,只等千禧年开始反扑人类。有计算机常识的小伙伴应该很快发现,这种时间记录法由于年份的前两位被抹去(如 1989 年直接记为 89 ),这就会造成在进入 21 世纪时,出现时间回退的现象。也就是说,在 2000 年的时候,计算机会认为当前是 1900 年,时间混乱就会由此而产生。在编程世界里,时间是个非常重要的参数,有很多业务是依赖时间而开展的。一旦时间错乱,可能会引起各种各样莫名其妙的故障。这就是著名的千年虫问题。

3. 危机埋伏

实际上,在上世界五十年代末的时候,有位叫鲍勃贝默的计算机科学家就发现了这个隐藏的大问题,于是他就开始到处奔走,想让大家认识到这件事情的严重性。但是,他的声音并没有受到太多关注,原因很简单,那时候距离千禧年还有四十多年,大家觉得还遥遥无期,自己可能都活不到那个时候,以后的事情就交给后人解决吧。而且,6 位数时间记录法已经大规模使用了,新写的代码都要考虑与老程序兼容。如果换成其它时间表达法,那么工作量就会十分巨大。

微信图片_20220420101945.jpg

时间就这么很快进入到 20 世纪 90 年代,已经越来越多人开始意识到了这个问题的严重性。特别是 1999 年,因为计算机的误判,分别在三个日子出现大规模 bug 现象,这似乎在提醒人们千年虫造成的影响将更为严重。在当时,计算机虽然没有大量普及到普通人,但银行、证券公司、股票交易所、工厂、机场、发电站,甚至是核弹发射井,都已经大量使用计算机,而且都几乎埋伏着千年虫。要知道,这些都关乎人类的命脉。一旦千年虫发作,你的银行账户会被清零,交通也会混乱,电力水利系统瘫痪,飞机航线消失,最可怕的是核电站相当于核弹爆炸的效果,直接经济损失不会小于 1.6 万亿元。恐慌于是就开始在全球蔓延,大家赶紧把现金从银行取出来,食物、生活用品,也都被哄抢一空,更有甚者,都已经找好了附近的防空洞,仿佛新的世界大战一触即发。微信图片_20220420101948.jpg

4. 应对千年虫

所以,千年虫一旦发作,让人类科技倒退几十年绝对不是笑话,严重的话可能将直接毁灭人类文明!于是,为了应对千年虫的出现,各国政府投入了大量的人力物力,想尽各种办法来阻止千年虫的出现。程序员们熬夜加班,一点点重写有问题的代码。这时候,别说 996 了,为了人类命运,007 也是在所不辞。但是,由于时间紧迫,工作量巨大,想要在 2000 年前修复完所有的代码,是不可能的一件事情。所以,程序员们只重写了那些简单又很关键的程序。而剩下的程序,则采用 windowing 修复法,也就是将时间框定在 1920 年至 2020 年,这样 00 就只能代表 2000 。大家也想到了,这其实就是将千年虫爆发时间往后延长了 20 年,像不像你改 Bug 的样子?但在时间异常紧迫的情况下,这也是不得己的事情。采用这种修复法,程序员修复了 80% 的 Bug ,也算是应对千年虫取得了阶段性的胜利。微信图片_20220420102205.jpg

但毕竟没有 100% 消除千年虫,大家依然没有完全放下心来。所以为了应对很多不确定因素,政府、机构纷纷出来了很多政策,以降低千年虫可能造成的影响。

5. 千年虫造成的影响

时间到了 1999 年的最后几秒,大家都紧张到了极点。直到钟声敲响后,人们发现,经济没有崩溃,交通依然正常,导弹没有飞来,几亿颗悬着的心终于放下来了。千年虫虽然没有大规模爆发,但依然如期而至。就比如冈比亚,由于缺乏外界的援助,政府机构的计算机受到千年虫袭击而瘫痪,冈比亚政府宣布当天(周一)为非工作日,以暂时减轻出事机关所要承受的压力。除此之外,全球各国都受到了千年虫不同程度的影响。但相比于人类毁灭,这点损失已经算是非常小的了。

微信图片_20220420101951.jpg

6. 卷土重来的千年虫

前面提到,为了应对千年虫,程序员采用了 windowing 修复法。而这种修复治标不治本,只是将千年虫爆发时间延后了 20 年而已。所以在 2020 年时,除了新冠这个大病毒之外,千年虫这个老病毒又卷土重来了。所幸在这 20 年间,人们没有忘记这个千年虫,都做了充足的准备,没有造成重大损失,所以当年大家对千年虫的感知不大。

也有可能是因为大家的关注点都在疫情上了吧。

除了这种 6 位数时间表达法造成的重大 Bug ,还有一种更隐蔽的 Bug ,那就是 2038 年问题。这种问题又是如何出现的呢?学计算机的朋友都知道,计算机的计时基点是 1970 年 1 月 1日,我们电脑内部时间就是统计从这个基点到现在为止过去了多少秒。而当时,都是 32 位操作系统,所能表达的极限是 2147483647 (第一位是符号位),换算成时间的话就是 2038 年 01 月 19 日 03 时 14 分 07 秒。

微信图片_20220420101954.jpg

应对这个问题,就是扩展 Unix 时间长度,用 64 位表示,最大可以表示 292,277,026,596 年 12 月 4 日 15 时 30 分 08 秒。而在那个时候,人类的文明还有没有存在都是个问题。

7. 千年虫对程序员的教训

在编程世界里,关于时间的表达都是非常重要的,轻则程序运行异常,重则会出现千年虫类似的重大 Bug 。所以有关于时间的一些业务处理,都要十分慎重再慎重。当年我还在职场的时候,有个业务就是关于时间的校正。为了保证时间的准确性,我们采用了 4 种时间验证法(GPS时间、固件时间、内存时间、系统运行时间),彼此互相验证,减少出错的可能。所以,程序员真正的战场是在代码里,而不是甲方,也不是产品经理。手里的键盘就是我们的武器,程序设计就是我们的秘密,一个个 Bug 就是我们的敌人!珍惜你身边的每一位程序员,也许将来他们就是拯救世界的主角!

目录
相关文章
|
1月前
|
机器学习/深度学习 算法 搜索推荐
面对chatGPT,冷静比鸡血更重要!
【2月更文挑战第6天】面对chatGPT,冷静比鸡血更重要!
45 0
|
人工智能 搜索推荐 机器人
ChatGPT掀起波澜,人工智能最有可能取代的10种工作
ChatGPT掀起波澜,人工智能最有可能取代的10种工作
137 0
|
人工智能 量子技术 区块链
高光、失误与修正,昔日的人工智能王者 IBM 如何找回“失去的十年”?
IBM 曾经是人工智能之王,首席执行官 Arvind Krishna 正试图夺回这一头衔。
133 0
|
人工智能 安全 数据挖掘
人工智能和行为科学如何解决疫苗犹豫问题
Fractal Analytics公司的联合创始人RamPrasad讨论了人工智能如何帮助识别问题领域以及行为科学如何在理解个人延迟免疫接种方面发挥关键作用。
295 0
人工智能和行为科学如何解决疫苗犹豫问题
|
机器学习/深度学习 存储 人工智能
从这个愚人节视频看人类意识上传研究
在生物进化的路途中,某些原始人可能是第一个认识到自己有一天终将死去的动物。而人类终其一生都在应对终将一死的现实。许多人向宗教寻求来生的慰藉,而有些人则希望能够逃离死亡,从庞塞德利昂对青春之泉的探寻,到现在流行的思维复制和意识上传。
169 0
从这个愚人节视频看人类意识上传研究
|
人工智能 安全 算法
人工智能取代人类的工作的恐惧被夸大了吗?
人工智能(AI)正在改变美国和全球各地未来的工作,那么你的工作安全吗?如今,人们不难理解为什么有那么多人担心人工智能会取代他们的工作岗位。似乎每个月都有调查报告发出警告,这些报告估计将有多少工作人员会失业。
165 0
|
机器学习/深度学习 人工智能 编解码
小伙用智能 AI 修复100 年前京城的老视频
近日,一个“修复老北京街道”的视频刷屏全网。一段由加拿大摄影师在 100 年前的北京被 AI 修复后,活灵活现地展现在人们面前,一百年前人们打招呼的方式、使用的乐器、交通工具,在这段视频中,都清晰可见。
1171 0
小伙用智能 AI 修复100 年前京城的老视频
|
人工智能 自动驾驶 安全
人类拥有智慧和愚蠢两面,AI 要类人,愚蠢是否也必不可少?
[ AI科技评论](https://mp.weixin.qq.com/s/VHkVRy8CpQ526MBDYDxTXQ)
|
机器学习/深度学习 人工智能 自然语言处理
为什么AI没能让人类失业?
我们听了这么久有关「AI取代设计师」、「AI取代写作者」、「AI取代画家」、「AI取代司机」……的论调。然而时至今日,我们发现实际上,目前还没有一个职业「真正」被取代。
|
传感器 人工智能 自动驾驶
可怕!20种最先进的机器人,感觉有点吓人!
随着科技的发展,机器人必然逐渐进入我们的生活,甚至在许多领域替代人类。