程序员对人名的错误想法

Justin Zeus
Feb 28 · 4 min read

原文:Patrick McKenzie, Falsehoods Programmers Believe About Names
翻译:苏洲跃/Justin Zeus
原文链接, 2010年6月17日

译者注​:这是一篇很多年以前的程序员老段子,我读到的时候笑到岔气,几年来时有温习,特别是写任何​跟人名有关的功能的时候。最近我意识到这篇文章好像没有中文版​!征得原作者同意之后​,翻译并贴译文在此​

约翰·格拉汉姆-卡明(John Graham-Cumming)今天写了篇吐槽文章,说他使用的一个电脑系统认为他的姓包含了非法字符。这显然是扯淡。按照名字的定义,不管别人说他们的名字是什么,他们的名字就是什么。可以想见,这事儿让约翰很烦恼。毕竟按道理讲名字是我们身份的核心,他完全有烦恼的权利。

我作为职业程序员在日本生活了几年。那里有许多系统都因为想要录入我的名字而坏掉了。(大部分人叫我Patrick McKenzie,但是我可以接受我完整名字的六种不同写法。反正很多系统不接受其中任何一种写法。)我也见过一些巨无霸跨国公司,因为标榜全球业务,把他们的系统设计为理论上可以接受所有的人名。我还从没有见过一个电脑系统可以很好地处理人名,并且我很怀疑这种系统真的存在

那么,作为一项公共服务,我将列出你所使用或设计的电脑系统可能对人名作出的假设。以下所有假设都是错的。以后你设计一个新的处理人名的系统的时候,可以试试看少犯这些错误。

1. 一个人有且只有一个规范的全名。
2. 一个人有且只有一个供人称呼的全名。
3. 一个人,在现在这个时间点,有且只有一个规范的全名。
4. 一个人,在现在这个时间点,有且只有一个供人称呼的全名。
5. 一个人的名字有N个部分(不论N是几)。
6. 人名可以写在特定大小的空间里。
7. 人名是不会变的。
8. 人名只会因为这里列出来的几个特定理由才会改变。
9. 人名都可以用ASCII字符集表示。
10. 人名都可以用某一个字符集表示。
11. 人名可以对应到Unicode的编码值。
12. 人名是大小写敏感的。
13. 人名是大小写不敏感的。
14. 人名有时候包含前缀或后缀,但是它们都可以被忽略。
15. 人名不包含数字。
16. 人名不会是全大写字母。
17. 人名不会是全小写字母。
18. 人名的各部分有顺序。如果选择一个顺序,就会自动和所有其他对同一名字选同样顺序的系统有兼容的顺序。
19. 人的姓和名应该要不一样。
20. 人有姓,或者氏,或者随便别的什么家族标记。
21. 一个人的名字是全球唯一的。
22. 一个人的名字几乎是全球唯一的。
23. 好吧好吧,至少人名应该多种多样,所以不会有几百万人的名字一模一样。
24. 我这个系统永远都不需要处理来自中国的名字。
25. 或者日本。
26. 或者韩国。
27. 或者爱尔兰,英国,美国,西班牙,墨西哥,巴西,秘鲁,俄罗斯,瑞典,博茨瓦纳,南非,特立尼达,海地,法国,或者克林贡帝国,因为这些国家都有好多奇奇怪怪的名字。
28. 克林贡帝国那个是开玩笑的对吧?
29. 文化共性!至少在我们这里,人们有一个通行的人名标准格式。
30. 存在一个算法,无损且可逆地转换人名格式。
31. 我可以安全地假设这一个糟糕词语集里面没有人的名字。
32. 人是在出生的时候被起名的。
33. OK,不一定是出生那一刻,但是应该是出生前后没差多久。
34. 好吧好吧,出生一年以内。
35. 五年以内?
36. 你tmd的在逗我对吧?
37. 两个系统如果包含了同一个人的数据,这两个系统里会使用同样的名字。
38. 两个数据输入者,如果试图输入同一个人名,必须在任何设计合理的系统上都产生出比特级一模一样的字符串。
39. 如果一个人名搞崩了我的系统,那是这个人名太古怪。人们应该有确实可用的名字,比如田中太郎。
40. 人有名字。

这个列表肯定不全。如果你想看看推翻以上任何一条假设的反例,我会很乐意给你看几个实例。欢迎在讨论区增加更多关于名字的错误假设。下回再有人设计数据库的时候一脸天才地建议你放一列‘姓’和一列‘名’,欢迎把这篇文章分享给他们。

我家喵。图文无关
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade