程序员,请不要吝啬你的内存

上世纪五六十年代,程序员为了节省内存,使用一个字节来表示年份,即:19XX的后两位,这在当时并没有什么问题。然而这却无法正确表示2000年以后的年份等一系列问题,依赖它的应用程序将无法正常运行。程序员并没有想到,也不认为他们的程序能运行到那么久。他们的做法影响到了后来人,人们并不认为这有什么不妥,直到新世纪即将来临之际,大家才突然意识到用两位数字表示年份将无法正确辨识公元2000年及其以后的年份。1997年,信息界开始拉起了“千年虫”警钟,并很快引起了全球关注。虽然人们做了充足的准备,但是千年虫的影响仍是巨大的。

当前互联网的基石:IP协议,用于定位网络中每一台主机,使用32位表示。然而,32位数字最多只能表示43亿左右的IP地址,这在开始并不是一个问题。“当初我以为这只是一项实验,而且,用43亿个IP地址来做实验已经够了。”他说,“谁会知道到底需要多大的空间?” ——“互联网之父”文顿·瑟夫。现在,IP地址已经瓜分完毕,虽然已经有替代协议IPV6的出现,可以从根本上解决当前IP地址数目不足的问题,但更换协议是一个浩大复杂的工程。升级涉及到每一台主机,每一台路由器……,这是一件浩大的工程。

在公司实习,设计一个服务器程序,需要保存和匹配QQ号码。发现公司内部是使用32位的无符号整数标识QQ号。然而就像IP地址一样,最多只能表示43亿多点的QQ号码。现在QQ号码已经超过25亿,并且仍在高速的增长,在可以预见的时间内定会超出这一限制。公司员工难道没有发现这个问题吗,显然不是,就连我这个实习生都想得到用64位数表示。但问题是公司一直是这么做的,更改的话涉及到每个系统,每个业务,每条协议。导师说但愿那时候已经离开了腾讯。QQ个前身OICQ刚刚开放注册时,马化腾故意把QQ从10000开始,想制造出很多人使用的假象,他那时候或许从没想过会有今天吧。

所以程序员们要记住,你的代码生命或许会比你的生命还长。在内存以G为单位的时代,千万不要吝啬那点内存了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注