今年你会经常在新闻中听到“千禧年”的问题。在这个过程中,你会听到很多相互矛盾的信息。18luck手机登录互联网上也有不少关于“世界末日”的言论。你应该相信什么?
在本期的18新利最新登入工作原理我们将讨论2000年问题(也称为千年虫问题),以便您确切地了解正在发生的事情以及正在采取的措施。您还可以探索各种各样的链接。从这些信息中你可以得18luck手机登录出自己明智的结论。
广告
千年虫问题是什么?
千年虫问题的原因很简单。直到最近,计算机程序员一直习惯在他们的软件中使用两位数字占位符作为日期的年份部分。例如,一个典型的保险单或信用卡的到期日期以MM/DD/YY格式存储在计算机文件中(例如- 08/31/99)。程序员这样做的原因有很多,包括:
- 每个人在日常生18新利最新登入活中都是这么做的。当你手写支票时,你用“斜杠”格式写日期,你就像这样写。
- 存储2位数字比存储4位数字需要更少的空间(现在不是什么大问题,因为硬盘很便宜,但在旧机器上曾经是大问题)。
- 直到最近,标准机构才推荐使用4位数字的日期格式。
- 没有人预料到很多软件的生命周期会如此之长。1970年编写软件的人没有理由相信30年后软件还会被使用。
对于大多数程序来说,当输入“00”作为年份时,2位数的年份格式会产生一个问题。软件不知道是把“00”解释为“1900”还是“2000”。因此,大多数程序默认为1900。也就是说,大多数程序员编写的代码要么在两位数日期的前面加上“19”,要么对世纪没有任何假设,因此在默认情况下,它是“19”。这不是问题,除非程序对日期执行大量计算。例如,要计算你的年龄,程序会用今天的日期减去你的出生18新利最新登入日期。这种减法适用于两位数的年份,直到今天的日期和你的生日在不同的世纪。这样计算就不成立了。例如,如果程序认为今天的日期是1/1/00,而你的生日是1/1/65,那么它可能会计算出你是-65岁,而不是35岁。结果,日期计算会给出错误的输出,导致软件崩溃或产生错误的结果。
重要的是要认识到这一点。这是整个2000年的问题。许多程序员在他们的程序中使用2位数的格式来表示年份,结果他们的日期计算不能得到1/1/2000的正确答案。没有比这更重要的了。
显然,解决办法是修改程序,使其正常工作。有几个标准的解决方案:
- 重新编码软件,使其理解00、01、02等年份实际上指的是2000、2001、2002等年份。
- “真正解决问题”的方法是多年使用4位占位符,并重新编写所有软件来处理4位日期。[有趣的问题——为什么用4位数字表示年份?为什么不用5个,甚至6个呢?因为大多数人认为8,000年后没有人会使用这个软件,这似乎是一个合理的假设。现在你可以看到我们是如何陷入千年18新利最新登入虫问题的……]
这两种修复在概念层面上都很容易做到——你进入代码,找到每个日期计算,并更改它们以正确处理事情。只是软件中有数百万个地方需要修复,而且每个修复都必须手工完成,然后进行测试。例如,一家保险公司可能有2000万或3000万行代码来执行保险计算。在代码中可能有100,000或200,000个日期计算。根据代码是如何编写的,程序18新利最新登入员可能不得不手动修改程序中使用日期的每个点。然后他们必须测试每一个变化。在大多数情况下,测试是最难的部分——它会花很多时间。
如果你计算出每个变更需要1天的时间来进行和测试,有10万个变更需要进行,一个人一年工作200天,那么这意味着每年需要500个人来完成所有的变更。如果你还考虑到大多数公司都没有500个无所事事的程序员,他们不得不去雇佣这些人,你就会明白为什么这会成为一个相当昂贵的问题。如果你计算出一个程序员每年花费大约15万美元(一旦你把程序员的工资、福利、办公空间、设备、管理、培训等包括在内),你就会发现一个公司在一个大型程序中修复所有的日期计算可能要花费数千万美元。
广告