【问题标题】:why did the y2k bug exist?为什么存在 y2k 错误?
【发布时间】:2010-11-17 04:14:27
【问题描述】:

对此我得到的解释是,程序员通常用 2 位数字来表示年份。但是为什么会有人这样做呢?如果有的话,我认为让程序回滚到 1900 年而不是继续到 2000 年需要更多的努力。

【问题讨论】:

  • 的解释。你还在寻找什么?
  • @Matt Ball:我认为这是如何和为什么之间的区别。我可以告诉你如何第二次世界大战开始,但为什么要开始要复杂得多。

标签: y2k


【解决方案1】:

存储空间溢价 + 缺乏远见 = 千年虫。

在许多旧系统中,节省字节非常重要。此外,软件开发中的一个常见谬误是“X 年内没有人会使用它”。那么为什么不现在保存这些字节呢? 10/20/30 年后,这肯定会被废弃,换成全新的系统。

引用 Lex Luthor 的话——“错了。”

【讨论】:

  • 这就是我所听到的,但后来我想,“等等,你如何分配足够的位来数到 100?”未更正的计算机会真正回滚到 1900 年,还是会认为这一年是无稽之谈,例如 19(100)、19(101)、...、19(255)、1900。
  • 这个错误有多种结果。一些程序使用整数并在用户输入中添加 1900,一些程序在前面添加字符串“19”。时至今日,2000 年仍被认为是“科幻未来”,所以这个问题确实有点难以发现。两位数的年份日期很有用,因为与日期和月份没有冲突,而且整数(与字节相比)太昂贵了。啊!.. 美好的过去 ;-)
  • @user405163:某些语言(尤其是 COBOL)默认使用 decimal 算术,因此您需要声明 2-digit 变量而不是8-bit 一个。你也可以通过使用strftime("19%y", ...) 而不是strftime("%Y", ...) 在 C 中遇到这个错误。
【解决方案2】:

为什么?他们的问题很可能是:“为什么不呢?”如果它在内存使用明显受限的世界中节省了一些位,那么他们认为他们也可以节省这些空间。

显然,“为什么不”是因为“您的软件实际上可能已经使用了很长时间。”一些程序员有远见,可以提前计划,但不是全部。

【讨论】:

    【解决方案3】:

    故事是在那个时代,1 KB 的 RAM 成本超过 1000 美元。省略多余的数字意味着真正的省钱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-21
      • 2020-07-29
      • 2022-10-20
      • 2018-06-26
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多