摘要:对于加利福尼亚州的一名服装设计师 诺特拉 ·扬塔普拉塞特 (Nontra Yantaprasert) 来说,结婚是一件非常开心的事情,因为她可以跟随夫姓 Null,以此摆脱日常生活中用起来非常麻烦的超长姓氏——Yantaprasert 了。然而,令她没想到的是
对于加利福尼亚州的一名服装设计师 诺特拉 ·扬塔普拉塞特 (Nontra Yantaprasert) 来说,结婚是一件非常开心的事情,因为她可以跟随夫姓 Null,以此摆脱日常生活中用起来非常麻烦的超长姓氏——Yantaprasert 了。然而,令她没想到的是, 姓 Null 才带来了更大的麻烦 。
2014 年,成功改姓的诺特拉·努尔 (Nontra Null) 受邀准备参加朋友的婚礼,然而就在她准备向印度领事馆申请办理签证的时候,出了问题。签证一直没有办下来,诺特拉·努尔打电话过去询问才知道, 电脑系统根本无法处理她的姓氏 Null,不是报错,就是认为用户不存在 ,他们尝试了很多次,也无法修复这个难题。
而这一切的源头,还得从上个世纪 60 年代说起。
Null 是由英国计算机科学家、图灵奖获得者托尼·霍尔 (Tony Hoare) 发明的。 他把 Null 引入了 ALGOL 语言中,代表 “无效的,缺失的,无意义的,空值” ,表示一种缺失或不存在的状态。如今,许多编程语言仍在使用它,包括 Java 和 C#,但 Rust 等较新的编程语言则完全避免使用它。
在现实生活中,我们可以把它想象成一个空盒子。 盒子本身是存在的,但里面没有装任何东西。 在计算机程序里,当一个变量被赋予 Null 值时,就意味着这个变量当前没有指向任何有效的数据。比如,你创建了一个变量用来存储一个人的名字,在还不知道这个人叫什么之前,就可以先把这个变量设为 Null,这样程序就能知道这个地方的信息还未确定或者数据有缺失。
托尼·霍尔是英国计算机科学家,他在1980年获得了图灵奖。Wiki
随着计算机程序的普及和运用,Null 不仅是程序调试屡屡出错的罪魁祸首,更因为 Null 是美国姓氏的之一 ,给日常业务造成了极大的混乱。据统计,在美国姓 Null 的人口大约为 10 006。 每 10 万美国人中,就有 3.14 个名叫 Null 的人。
75 岁的气象学家简·努尔 (Jan Null) 多年来就因为自己的姓氏苦不堪言——他在网上预订酒店,每次输入姓氏时, 表单都会不断重置 ,导致他辛辛苦苦填写的信息全部清空。最后,他打电话给酒店员工,员工建议他输入不同的姓氏。他也从中吸取了教训,会 将自己的首字母添加到姓氏中 。而前文提到的诺特拉·努尔,也找到了一些变通方法来避免这一麻烦,比如 偶尔用回她的本姓 Yantaprasert,或者在本姓和夫姓之间用连字符相连。
除了以 Null 为姓的人,还有一些不小心和 Null 这个词绑定了的人,也会因此倒了大霉。
36岁的安全审计员约瑟夫·塔塔罗 (Joseph Tartaro) 为了和老婆的车牌“Void”(也是空白,无效的意思)搭配成情侣车牌 ,他标新立异地选了车牌“NULL”,没想到从此麻烦不断。2018 年,他在支付了第一张合法罚单后不久,他的邮箱就开始收到来自全国各地、以他的名字开出的罚单。
这些罚单都是因为各种各样的原因(比如警察开完罚单后忘记车牌号了),被工作人员在数据库中登记为“NULL”,然后这些“未定义的罚款”又和塔塔罗的车牌关联了起来, 于是系统便默认将所有 NULL 的罚单都发给了塔塔罗。
塔塔罗说,去年 12 月,他接到保险公司的电话,告知他在 48 小时内在两个城市发生了两起车祸……而事实上,这两个城市相距甚远,塔塔罗根本不可能同时出现在两个城市。这些年,塔塔罗收到的本不属于他,却 因 Null 识别错误的罚单加起来金额高达 12049 美元 。不过,交管局最后也免除了他的罚金。
Null 的创始人霍尔原本只是抱着“为了程序执行方便”的想法引入了Null,但他却没有料到,小小的一个Null会给后来人造成如此多的不便和隐患。他曾在书中无奈地说道:“ Null 导致了数不清的错误、漏洞和系统崩溃,可能在之后 40 年中造成了十亿美元的损失。 ”
因此,霍尔将自己的这项发明描述为“十亿美元的错误”。
来源:晚晚的星河日记