虽然有很多低级的Bug是由于手误或者逻辑错误等人为问题导致的,但我们不能简单的认为Bug就是程序员的水平能力有限,最好的例子就是当年轰轰烈烈的“千年虫”事件。
众所周知,软件业开始兴起是上世纪五十年代左右,随着七八十年代小型机及个人电脑的流行更是蓬勃发展。那时候很多软硬件开发商在产品设计之初就没想过系统到底能用多久,所以在代表年份的字段上只用了两位十进制来表示,节省空间:67就代表1967年,99就代表1999年。问题来了,快到2000年(又被称为千禧年Millennium)的时候,业内突然发现一旦跨过千禧年,两位十进制的年份会出现错乱。因为系统默认这两位数XY代表的是19XY年,所以00年就被认作1900年而不是2000年,那么基于日期的所有计算都会出现错误的结果。这个问题被统一命名为“Millennium Bug”或者叫“千年虫”。
我记得1999年的时候,全球几乎所有涉及到信息系统的行业(包括政府、金融、保险、电信、电力、医药、交通等)都产生了巨大的恐慌,甚至有谣言说2000年的第一天将会是社会瘫痪的一天。好在经过紧急的防范和弥补,投入了巨大的财力和人力后,该测的测该打补丁的打补丁,2000年第一天结束后大多数人并没感觉到有什么异样。大规模的灾难性的瘫痪没有出现,事后只需要针对个别的千年虫进行修复和处理即可。这中间可苦了各种程序员,估计他们一边疯狂写代码打补丁一边心里在骂娘:当初干嘛省这两位数!
俗话说吃一堑长一智,于是现在我们在各种编程语言和数据库里看到的日期格式成了YYYY-MM-DD,即用四位十进制来表示年份了。呃,好像没有啥问题了是吧。可是人类历史可是以万年记的(虽然文明史只有几千年),未来保不准还能一直延续到公元10000年,离现在还有,7980年,也就是说现在YYYY的年份格式还可以用7979年。于是我们会想象到:在7979年后的某一天,一群程序员在疯狂的打补丁,一边心里在骂娘:当初干嘛省这一位数!
另外还有个例子,当年我在新加坡国立大学的时候,有幸听了一场Vinton Cerf(TCP/IP发明人之一,互联网先驱之一)的演讲。老先生当时谈到了 IPV4地址枯竭的问题,他很无奈的说不是他不想设计的更合理,而是美国国防部要的急,将当时还是“试验阶段”的TCP/IP连同IPv4都直接部署上线然后就一直用到了今天。一开始人们还比较乐观,毕竟IPv4的地址数量有256的四次方也就是近43亿个,哪用得完啊!没想到互联网时代到来,网站服务器爆炸般增长,短短不到50年就把IPv4地址给榨干了。科学家也没闲着,想用IPv6来解决这个历史遗留问题,但谈何容易,又是一大堆软硬件的兼容性问题要解决,还要无缝的迁移,只能分阶段慢慢的逐步的实施。。。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有