2010-11-17 54 views
1

我得到的解釋是,程序員通常只用2位數來表示年份。但爲什麼有人會那樣做?如果有什麼我想它會採取更多的努力,以使程序回滾到1900而不是去到2000爲什麼存在y2k錯誤?

+0

這是_is_的解釋。你還想找什麼? – 2010-11-17 04:20:46

+0

@Matt Ball:我認爲這是如何和爲什麼的區別。我可以告訴你*第二次世界大戰是如何開始的,但是*爲什麼開始顯得更加複雜。 – Matchu 2010-11-17 04:22:09

回答

6

高級的存儲空間+缺乏遠見=千年蟲。

字節保存在許多較舊的系統非常重要。另外,軟件開發中常見的謬誤是「在X年內沒有人會使用它」。那麼爲什麼不現在保存這些字節呢? 10/20/30年後,這將是一個完全新的系統報廢。

引述雷克斯·路瑟 - 「錯」。

+0

這就是我所聽到的,但後來我想,「等等,你怎麼分配足夠的位來計數到100?」將裸電腦字面上回滾到1900年他們會認爲這一年是像像19(100),19(101),......,19(255),1900 – user405163 2010-11-17 05:11:36

+1

有這個bug的各種結果一些廢話。一些程序正在使用整數,並將1900添加到用戶輸入中,其中一些正在前面添加一個字符串「19」。在這些日子裏,2000年仍然被認爲是「科幻未來」,所以這個問題確實有點難以發現。兩位數的年份日期是有用的,因爲與日期和月份沒有衝突,並且整數(與字節相比)太昂貴。啊..好了,時光;-) – Arsen7 2010-11-17 14:01:41

+0

@ user405163:一些語言(尤其是COBOL)使用*小數*默認運算,所以你宣佈一個2 *位數*變量,而不是一個8 *位*一。你也可以通過像strftime(「19%y」,...)'而不是'strftime(「%Y」,...)''這樣的方式在C中產生這個bug。 – dan04 2011-03-30 23:42:23

2

爲什麼?他們的問題可能是,「爲什麼不呢?」如果它在一個內存使用明顯更有限的世界中保存了一些位,那麼他們認爲它們可以節省這個空間。

顯然,「爲什麼不」,是因爲「你的軟件實際上可能是在使用顯著大量的時間。」一些程序員有先見之明,但不是全部。

1

據說,這是早在一天1千字節的RAM花費超過$ 1000。省略額外數字意味着真正的節省資金。