您当前的位置:IT头条网要闻正文

20年前偷闲修正的千年虫bug归来程序员该来的总会来

放大字体  缩小字体 2020-01-12 06:30:04  阅读:103+ 作者:责任编辑NO。邓安翔0215

新的十年开端了。

二十年前,在千禧之年钟声敲响的时分,许多 Y2K 应急队的程序员坐在电脑前忐忑不安,他们此前刚刚用最简单易行的 “懒人办法” 修补了一个被称为“千年虫”(Millennium Bug,又称 Y2000 problem,简称“Y2K”)的大 bug。二十年后,这群程序员老了,可是新一代的青年程序员又要为老一辈的懒散而付出代价。

据《纽约时报》报导,纽约的泊车收费表从 2020 年 1 月 1 日开端不支持信用卡付款,整个城市的一万多个计费表已手动更新,仅经过现金或 ParkNYC 承受付款;波兰公司 Novitus 出产的收银机因为记载时刻毛病而无法打印收据;视频游戏 WWE 2K20 于 2020 年 1 月 1 日午夜中止工作;华为手表和部分设备丢掉了新年伊始两三天的 TrueSleep 睡觉数据,需求更新并重启……

图 | 纽约市交通局表明,泊车计时器的信用卡付出软件设定在 1 月 1 日失效,导致了一同大规模毛病(来历:The New York Times)

程序员 Jef Poskanzer 在推特上发文:好像有适当数量的体系呈现 #2020 过错。当年处理 Y2K 问题的计划把这样的一个问题推迟了 20 年……20 年后的今日,其时的一些体系依然还在运用,体系以为咱们在 1920 年。”

图 | Jef Poskanzer 的推文(来历:Twitter 截图)

千禧年前后出世的青少年们或许很少有人知道“千年虫”。

大约在 20 世纪 80 时代中期曾经投用的体系上,囿于存储空间有限,再加上人们遍及觉得体系更新会很快,所以程序员大多选用两位数来表明年份,比方 06/15/98,而不是 06/15/1998。可是到了 2000 年,体系只知道是 01/01/00,不知道这是 1900 仍是 2000。

千年虫首要会集在装备较早的主机体系上,如在 IBM 4381,IBM AS/400 等机型上运转的应用程序,比方美国的 AT&T 电讯公司,其内部就有超越 3.6 亿行的应用程序需求检测是不是真的存在 Y2K 问题。别的,在自动化仪器仪表、电梯、警报体系、恒温灯等嵌入式设备也简单存在千年虫危险。

视频 | Y2K 启示录(来历:YouTube)

核算机在上世纪六七十时代开端遍及,到九十时代,人们开端意识到问题的严重性:不知道从 1999 年最终一天的 23:59 到 2000 年第一天的 00:00 的改变意味着什么?在烘托和炒作下,群众的惊慌程度不亚于“2012”。人们猜想,假如程序中止运转、溃散或许宣布过错指令,是否影响到银行、电站、航线等等,存款会一夜清零、恐怖袭击、飞机掉落、股市溃散,国际堕入紊乱?

其时甚至有新闻媒体报导,有人把山洞作为避难所,存储了许多食物、医疗包等必需品,还有一些人把银行存款纷繁取出来或许是购买黄金。

图 | 1999 年 1 月 18 日,TIME 的封面(来历:Time)

为了尽最大或许防止 “灾祸” 发作,政府和企业动用许多资源查找和修正这个 bug。有报导显现,其时克林顿政府和业内人士估量,用 “windowing” 的方法修补 80% 的核算机,估计耗资数千亿美元。BBC 报导以为全球花在防范千年虫上的费用在 3000 亿到 5000 亿美元之间。实在耗资现在无法考证。也有言论说千年虫是个商业大圈套。

其时修正 bug 的方法有两种:彻底重写代码,或许选用 “windowing” 的方法快速修正。“windowing”便是把 00 到 20 之间的一切日期都作为 20XX 年而不是 19XX 年。很显然,比较于把一切两位数表明的年份都修改成四位数,后一种方法更省钱、更快并且更简单。

从 1970/01/01 开端,许多编程语言和体系都把日期时刻以秒来处理,也叫 Unix time。因而,鉴于中点 1970 的重要性,编码人员挑选 1920 到 2020 作为规范窗口。

Unix time 被大范围的运用在各种职业操作体系,并被视为是一种规范。Unix 和 Windows 体系有环境变量来为体系设置 “转折年”。“转折年” 今后的任何一年归于本世纪,“转折年”以及 “转折年” 之前的恣意一年归于上个世纪。可是一些产品,如 Microsoft Excel 95 运用的是 1920-2020 年的 windowing,在处理千年虫问题之后,只是过 20 年就有或许再次呈现日期过错。

图 | 2020 年 “Y2K” 又回来了(来历:Popular Mechanics)

其时的专家以为,比及程序员投入许多的资金和时刻去永久修正好这些 bug 之后,体系早就被更换了。所以,虽然 “windowing” 修正的程序智能运用二三十年,专家也觉得足够了。

伦敦经济学院 (London School of Economics) 的迪伦 穆尔文 (Dylan Mulvin) 表明:“windowing 是一切处理计划中最糟糕的一种,即便是在千年虫问题期间。”

2020 年的到来,意味着咱们已进入到了 1920-2020 窗口期的结尾。2019 年 11 月,因为被发现简单遭到 Y2020“进犯”,大数据公司 Splunk 向用户推出了修正服务,它的用户涵盖了美国《财富》一百强公司中的 92 家。因为各家公司没有发表相关细节,现在还不清楚 “Y2020” 将继续多久

别的,在 2038 年咱们将面对另一个数据存储问题。32 位的 Unix 和 Linux,能存储的最大数字为 2 的 31 次方,即 2147483647。从 1997 年开端核算,2147483647 用来表明的秒数最多只能用到 2038 年 01 月 19 日 03 时 14 分 07 秒,在这个时刻之后,体系会回到 - 2147483648,代表的时期是 1901 年 12 月 13 日 20 时 45 分 52 秒。

不同于千年虫,2038 会影响的不单单是应用层,而是会影响到最底层的时刻操控功用。不过走运的是,假如能在 2038 年之前把一切 32 位体系筛选并选用 64 位的话,咱们将会奇妙地躲开 2038 问题。

-End-

参阅:

https:///article/2229238-a-lazy-fix-20-years-ago-means-the-y2k-bug-is-taking-down-computers-now/

为你推荐

  • 进博会对话高通钱堃,混合AI是未来,5G-A发挥重要作用

    最近,高通公司全球高级副总裁钱堃在第七届中国国际进口博览会期间接受媒体专访时介…

    数码
  • 从手机到汽车 高通孟樸进博会解读5G+AI推动朋友圈扩展

    11月5日至10日,第七届中国国际进口博览会在上海举办,高通公司中国区董事长孟樸在进…

    数码
  • 小生意,大爆发|八大行业双11策略划重点

    双11大促已迈入正式期,各行业最关注的就是如何差异化抢量,本期通过对美妆、日化、3…

    数码
  • 2024爱企查毕业季校园行:构建诚信就业市场,为成电、广大学子保驾护航

    5月28日至31日,“2024爱企查毕业季校园行活动”先后走进电子科技大学、广州大学。…

    数码
  • 毕业不慌,查厉来帮|爱企查携手西电学子深度体验品牌魅力

      2024爱企查毕业季校园行火热进行中,5月27日至28日,爱企查走进西安电子科技大学…

    数码
  • “如果发现本网站发布的资讯影响到您的版权,可以联系本站!同时欢迎来本站投稿!