千年虫,这个词在1998年的普通人听来还很陌生。
但在全球计算机行业内部,它已经像一颗埋在所有系统底层的定时炸弹,倒计时正一秒一秒地走向零点。
问题出在一个当年看来很聪明、现在看来很愚蠢的设计上:早期的计算机内存和存储都极其昂贵,一个字节都要掰成两半用。
为了省空间,程序员们把年份只用最后两位数字来表示,1978年就写成78,1999年就写成99。
在当时看来,这个决定完全合理:谁会把同一套程序用上几十年?谁会在千禧年之后还跑着六十年前写的代码?
答案是:所有人。
银行的核心交易系统是七十年代用COBOL写的。
航空公司的订票系统是八十年代初用汇编写的。
电力调度、证券交易、电信计费,这些支撑现代社会的核心基础设施,底层跑的几乎全是老代码。
这些代码像沉积岩一样一层一层叠了二三十年,当年写它们的人有的已经退休,有的已经去世,但代码还在忠实地运行着。
当1999年变成2000年的那一刻,所有只记录后两位年份的系统都会面临同一个问题!
系统会认为00代表的是1900年!
而不是2000年!
就这么关于年份的一个小问题,会使整个中国遭受巨大损失!
利息计算会变成负数!
定期存款会瞬间穿越回清朝!
航班的日期校验会失败导致飞机停飞!
电力调度系统的定时任务会在错误的时间触发导致大面积停电!
在另一个世界线里,全球为了修复千年虫花了数千亿美元!中国也出了一部分!
这个数字从后来公开的资料里能得到明确的印证。
从1995年开始,各国政府和企业就开始成立专门的千年虫应对小组,美国联邦政府专门拨款几十亿美元,英国军方成立了应急指挥部,日本通产省组织了全国性的排查。
银行、航空、电力、电信,这些行业全都在疯狂地检查每一行代码、更换每一台老设备、进行各种模拟测试。
但即使这样,1999年12月31日午夜,全球还是出现了数千起系统故障。
悉尼机场的航班信息系统在零点过后就崩溃了,旅客滞留了整整一天!
日本一家核电站的辐射监测系统短暂失灵,虽然没有造成泄漏但把技术人员吓出了一身冷汗!
美国一家大型银行的ATM网络在凌晨出现了短暂的交易异常,有几万笔转账被冻结!
这些故障大多在数小时内被修复,但它们暴露了一个令人后怕的事实:全球关键基础设施的底层代码,比任何人想象的都要脆弱。
在那个世界线里,中国也花了不少钱!
由于国产计算机系统起步较晚,大多数核心系统是八十年代中后期才建立的。
受影响的范围比欧美小,但银行、电信、民航等关键行业仍然进行了全面排查!
最终的花费虽然远低于美国,但也是一笔不小的数字。
而在这个世界线里。
陆沉打算把这笔钱省下来。
最大的困难在于:银行。
银行的核心系统用的是一种古老的语言,COBOL。
这种语言诞生于1959年。
在1998年的中国,懂COBOL的程序员比懂大熊猫繁殖的人还少!
第一批COBOL程序员大多已经退休或者临近退休,新一代程序员学的是C和Java,没人愿意去啃这门古老的学问。
那只好陆沉来了,好在他还有一年时间。
COBOL?应该没微积分难学吧……
——
两天后。
信息部的感恩大礼包来了。
信息部联合版权局、计算机行业协会,成立了一个专项工作组。
以国家项目的形式正式完善和推广这个软件!
他亲自登门拜访。
从文件夹里抽出了一份海外文件。
微软公司通过美国商务部渠道发来的正式函件,英文原件旁边附了中文译文,“微软向我们提出,希望就飞速启动软件与Windows系统的兼容性接口问题,与中方展开技术合作,说白了,他们想买授权。”
“我们的评估建议是,”相关负责人把文件翻到最后一页,“不卖,至少现在不卖。”
“陆沉同志,在目前中美科技博弈的大背景下,这不仅仅是一个软件,这是一张牌。”
他把眼镜摘下来轻轻搁在文件上。
“我们今天请你来,就是想问你一句话,你愿不愿意把这个软件从个人作品,升级为国家项目?”
陆沉看了看那份微软的函件,又看了看吴领导。
吴领导满脸期待地看着他。
“软件我可以上交,但我有两个要求。”
“你说。”
“第一,软件不能被垄断,第二,一年后,商业授权这一块,海外市场可以谈。”
陆沉预料到一年半之后,微软就有能力研发类似的软件。
堵不如疏。
所以,他要提前把这块,吃干抹净。
吴领导点头。
“没问题。”
一周后,新闻联播用了近两分钟的篇幅报道了这条新闻。