程序员对名称的误解-带有示例



2010年,帕特里克·麦肯齐(Patrick Mackenzie)撰写了著名的文章“程序员对名称的误解”,其中列出了40种关于人类名称并非总是正确的事实。

您是否认为程序员坐下来思考并改变了计算机系统中名称的处理方式? 不幸的是,并非如此。 我们仍然到处都被要求填写要求有名字和姓氏的在线表格(此外,还要以此顺序)。 这些系统仍然假设我们的名称始终可以用字母字符书写,通常只能是ASCII。

我怀疑帕特里克(Patrick)的文章对行业没有足够的影响,包括因为没有每个误解的例子。 但是作为IBM Global Name Management项目的前雇员,我可以向您保证,其中所说的一切都是真实的。

不信? 在本文中,我将列出所有40种误解,并以我在该领域的经验为例(或两个)。 准备好了吗 走吧

1.每个人都有一个规范的全名。
似乎有些人认为您有一个名字,而且它永远都不会改变。 但是即使在西方国家,一个人在结婚时也可以更改姓氏。 按照天主教的传统,一个人在确认期间可以取中间名。

2.每个人都有一个全名。
著名的科幻小说作家约翰·温德姆(John Wyndham)(《三国联谊日》的作者)的名字出生于约翰·温德姆·帕克斯(John Wyndham Parks)的卢卡斯·贝农·哈里斯(Lucas Beynon Harris),并出版了约翰·贝农和卢卡斯·帕克斯以及约翰·温德姆的书。

3.此时,每个人都有一个规范的全名。
演员的艺名可能与出生证明中的艺名完全不同,甚至可能有艺名的护照。

4.此时,每个人都有一个自己使用的全名。
事实并非如此,即使在西方国家,女人也可以在工作中保留其娘家姓(在这个名字中已经被人们所熟知),并且可以在通讯或法律文件(例如抵押和贷款)中使用丈夫的姓氏。

5.每个人都有N个名字,而与N的值无关。
传统上,英文名称包含两个名称(它们通常称为名字和中间名)和姓氏,但不一定都这样。 一个人可能没有中间名,也可能有多个。 例如,葡萄牙语有一个或两个名字,最多四个姓(已婚妇女最多六个),这些姓可以是诸如da Silva或dos Santos,甚至是Costa i Silva之类的短语。

6.名称可以包含一定数量的字符。
这位著名的画家通常简称为毕加索,全名是巴勃罗·迭戈·何塞·弗朗西斯科·德·波拉·胡安·内波莫塞诺·玛丽亚·德·洛斯·雷梅迪奥斯·西普里亚诺·德拉·圣迪西玛·特立尼达·马丁·帕特里西奥·鲁伊斯和毕加索。 尝试将其调整为30个字符的形式...

7.名称不变。
我们已经提到过在结婚时改名的女孩,所以这显然是不正确的。 此外,天主教徒在确认时可以取中间名。 另外,一个人经常改用其他宗教时会添加名称或完全更改名称-请记住,转换为伊斯兰教后,凯蒂·史蒂文斯(Kat Stevens)成为了优素福伊斯兰教(Yusuf Islam),而卡修斯·克莱(Cassius Clay)则变成了穆罕默德·阿里(Mohammed Ali)。

8.名称更改,但仅在某些有限的情况下。
对于某些泰国人来说,通常的做法是将名称更改为防止失败。 这可能在没有太多原因的情况下发生。 有时,当一个同名的人出名或臭名昭著时,一个人会更改其名字:这是许多人放弃希特勒姓氏时的一个明显例子。

9.名称以ASCII编写。
一个明显的误解,仅是因为ASCII不包含法语或葡萄牙语名称中的重音字符。 此字符集不包括希腊名称中使用的希腊字母,俄罗斯名称中使用西里尔字母。 有一些脚本,例如印度文的Devanagari,汉字(汉字),日语字符(汉字)等。

10.名称以任何一种编码形式编写。
有些名称具有混合编码。 例如,带拉丁字符的汉字或带拉丁字符的汉字,或带拉丁字符的韩文朝鲜语。 在许多情况下,这是因为一个人有一个“西方名字”来取悦那些不能用其母语发音的人。

11.所有名称均对应于Unicode代码点。
Unicode开发人员继续为标准中越来越少见的字符添加代码点。 绝大多数名称已经与它们相对应,但是仍然有例外,例如符号“艺术家,以前被称为王子” 。 即使我们排除了这种奇怪情况,仍有几个脚本尚未输入Unicode。 也许最现实的例子是Aymara,一种书面语言,是南美超过一百万人说的一种语言。 不太现实的例子是Tolingen为中土发明的克林贡语或符号。 此外,Unicode仅包含一部分中文和日文字符,并且某些缺失的字符用于名称中。

更复杂的是,在某些语言中,没有书面符号-无法将其记下来。 对于此类语言,Unicode中没有代码点。 这些语言的名称可以用拼音进行拼写,但这并不是特别有用,因为大多数人都不熟悉拼音字母。

12.名称区分大小写。
许多字符集不区分大小写:例如,中文和日语。 对于他们来说,大写和小写字母的想法根本不适用。

13.名称不区分大小写。
一些脚本区分大小写:例如,拉丁语。 更重要的是,在某些语言中,字符可以小写,但不能大写,因此不可能将它们从一种情况转换为另一种情况。

正确的注册对于某些人来说非常重要,例如名称为Mackenzie和Mackenzie的人。

此外,正确的寄存器对于凡高,杜巴里,达科斯塔,奥布莱恩和达格斯蒂诺等名字以及让-皮埃尔等名字也很重要。

14.有时名称中会出现前缀或后缀,但是您可以放心地忽略它们。
没有什么比事实更遥远了。 荷兰语名称Peter van der Meer与Peter Meer不同,尽管“ van der”是前缀。

您可以考虑以小罗伯特·唐尼(Robert Downey Jr.)的名字称“年轻”后缀,但是如果省略,您将命名他的父亲,而不是他的父亲。

在阿拉伯名称中,后缀al-Din表示“信仰”或“宗教”-如果使用后缀,则Taj al-Din(“信仰之冠”)或Saif al-Din(“宗教之剑”)之名称将保持不变。 意大利名字Di Stefano与Stefano不同。

一位名叫“ Viuda de la Cruz”的西班牙妇女是一位拥有守护神德拉克鲁兹的男人的遗the。 没有前缀会更改名称的值。

15.名称不包含数字。
即使忽略了王朝(例如Thurston Howell III),在某些情况下,数字也成为某人法定姓名的一部分。 例如, Jennifer 8 Lee选择了中间名8,因为8与运气相关。

16.名称不能用大写字母写。
在某些国家(尤其是讲法语的国家),习惯上用大写字母写一个人的姓氏,以便清楚地知道哪个部分是姓氏。 该约定已根深蒂固,以至于用小写字母写姓被认为是不礼貌的。

17.名称不能全部用小写字母书写。
诗人e。 e。 卡明斯更喜欢将他的名字写成小写。 就像歌手kd lang一样 。 礼貌地遵循名称所有者喜欢的拼写。

爱尔兰/英国有一个法语姓氏,传统上是用小写字母书写的,尽管这种传统的软件质量很差,迫使您必须指定第一个大写字母。

18.名称有顺序。 如果所有录制系统都使用相同的排序方案,那么选择其中一种录制排序方案将自动导致所有系统之间的顺序一致。
在荷兰,文森特·梵高(Vincent van Gogh)的名字被索引并以字母G排序为Gog; 在比利时,梵高用B索引相同的名称。 采用统一的名称系统将导致普遍接受的顺序是不可能的。 在许多图书馆中,该系统都是基于人的出生地(我不希望在软件中应用此规则)。

19.姓名和姓氏一定不同。
澳大利亚商人和政治家本杰明于1905年去世。 杰罗姆·杰罗姆(Jerome K. Jerome)是一位英国作家,以他的作品“三只小船,不算一只狗”而著称。 Owen Owen是威尔士人,创建了百货连锁店Owen OwenLtd。 而且,我们甚至都不会碰到采用这种假名的运动员和演员。

20.人们有一个姓氏或与亲戚相似的名字。
在Java中,习惯上只给一个人一个名字而没有一个姓氏。 例如,印度尼西亚苏哈托和苏加诺总统没有姓。

21.一个人的名字是唯一的。
告诉任何叫约翰·史密斯的人! 我的名字不太普遍,但我发现一个人的名字和姓氏在同一国家(澳大利亚)的同一行业中工作。

22.一个人的名字几乎是唯一的。
即使使用非标准的拼写,通常也很容易找到具有相同全名的人:尝试使用自己的Google。

23.好吧,好吧,但是名字很少见,因此没有一百万人拥有相同的名字和姓氏。
据报道,中文名Zhang Wei承载着超过四分之一的人口。

如果我们只姓氏,那么韩国约有20%的人口有金姓。 华北地区约有10%的人口姓王,华南地区有10%以上的人口姓陈。 位居第二的是李姓,这使她在该国最受欢迎。 大约40%的越南人姓阮。

名字也不是唯一的。

24.我的系统永远不会处理来自中国的名字。
移民将每种文化的名称扩展到(几乎)每个国家。 移民进入该国后被赋予新名字的日子已经一去不复返了(例如,越南仍然要求公民身份的申请人接受越南名字)。 期望完全没有其他国家/地区的名称是不现实的,尽管您可以看到它们的音译形式。

因此,在您的系统中,诸如周润发的中文名称可能会显示为周润发,周润发,甚至润发周(周氏是姓氏)。

25.还是日本。
见上面。

26.还是韩国。
见上面。

27.或爱尔兰,英国,美国,西班牙,墨西哥,巴西,秘鲁,瑞典,博茨瓦纳,南非,特立尼达,海地,法国,克林贡帝国-所有这些都使用“奇怪的”名称方案。
见上面。

28.克林贡帝国是个玩笑吧?
很难找到正式使用克林贡语名字的人的例子,但是为什么不呢? 如果我们实现的系统支持其他文化(例如,O'Brien的内置撇号),那么我们也可以支持Klingon名称,而无需进行其他工作。

29.与文化相对论走向地狱! 至少在我们社会中 ,人们对通用的名称标准抱有相同的想法。
而且您的软件只能与在您的社区中获得名字的人一起使用吗?

30.有一种算法可以将名称转换为另一边而不会丢失。 (是的,是的,如果输出算法返回的结果与输入的结果相同,则可以自己获得奖牌,您可以这样做)。
没有一种算法(除了记住原始格式)可以保证可逆的方式转换名称。

31.我可以确信地认为,这个淫秽单词词典不包含姓氏。
这是一个常见的错误:许多“坏词”在其他语言中也不错,其中一些用在名称中。 此外,并非每个社会都限制在名称中可以使用的单词:在这样的管辖范围内可能分配了某人的名称。

32.给出生时的人起名字。
在大多数国家/地区都有出生记录,但是该系统的有效性并不相同。

确切的规则因管辖权而异,但是出生登记总是有一些延迟。 允许的延迟时间从三周(苏格兰)到两个月(澳大利亚)不等,但还有更多。

可以在出生登记时记录婴儿的名字,但这并不总是会发生的(例如,在某些情况下,当父母在选择名字时遇到困难或如果孩子是婴儿时,孩子仍会使用“男婴”或“女婴”之类的名字进行注册。)

33.好的,也许不是在出生时,而是在不久之后。

34.好吧,好吧,大约一年。

35.五年?

36.你在开玩笑吧?
在某些文化中,青春期前不给成年人起姓。 在此之前,孩子可能有一个“牛奶”或临时名字。

37.指出同一个人名字的两个不同系统将为他使用相同的名字。
如果是这样,那么将不存在用于协调各种数据库的软件市场。

就我个人而言,某些系统包含我的正式名称,包括中间名,而其他系统仅包含我的名字和姓氏或缩写的名字和姓氏。 这仍然是一个简单的案例。 我的妻子在某些系统中用她的姓氏来表示,在其他系统中则用-丈夫的姓氏(有或没有全名),有或没有中间名,以及她的缩写名的两个拼写中的任意一个。

38.如果系统设计合理的话,两个不同的数据输入操作员(如果给出了一个人的名字)将必须输入相同的字符集。
想象一下,当一个人输入在电话中听到的名字时会发生什么。 例如,汤姆森和汤普森; 或约翰逊,约翰斯顿,约翰斯顿和约翰逊。

39.名字破坏了我的系统的人是陌生人。 它们应具有正常的可接受名称,例如田中太郎。
不,您的系统设计不佳。

特别地,通常在动漫(和漫画)中找到上述名字作为外国人的名字。 有真实的人有这个名字。

40.人们有名字。
对于这种情况,也许很难给出令人信服的例子。 在一种孤立的文化中,没有人有名字:他们互相称呼相对的术语,例如“我母亲的姐姐”。

总结一下


因此,我们做到了:我们从Patrick Mackenzie的文章“程序员对名称的误解”中找到了(几乎)所有40分的示例。 如果您觉得信息过多,那么请让我们总结一下。 在开发处理名称的系统时,这是最重要的事情:

  • 请勿使用“名字”或“基督徒名字”之类的词:最简单的名称是“给定名字”。
  • 请记住,世界第一半代表姓氏。
  • 许多文化使用的系统不同于所有家庭成员共有的姓氏。 有些使用赞助人或母名(有时不使用)。 其他人根本没有姓氏。
  • 标点符号可能是名称的重要组成部分:奥哈拉(O'Hara)的爱尔兰姓氏与日本的姓氏大原(Ohara)不匹配。 Jean-Pierre名称与Jean-Pierre名称或Jean Pierre名称不匹配,并且Jean-Pierre是相同的名称,而Jean Pierre是两个单独的名称。
  • 空格不必将姓名和姓氏分开:德拉克鲁兹-一个姓氏,而不是三个分开的姓氏; 汉字中文名字的拼写在名字和姓氏之间没有空格。
  • 大写字母的使用不是很明显:凡德米尔(van der Meer)姓氏在不带名称的情况下可以大写,但在名称之后使用小写字母。
  • 使用整个名称,而不是将其分成几部分。 例如,不要试图用“姓氏先生”来称呼某人:在不同情况下,这里可能会出现错误:
    • 如果姓氏写在名字之前(例如,中文)。
    • 如果您正确使用了客户服务,但不是最后一次。
    • 例如,如果姓氏包含多个单词,则西班牙语姓氏de la Torre
    • 如果名称包含后缀,例如“ minor”。

最后,我强烈建议您查看W3C文章中的小名称指南。

Source: https://habr.com/ru/post/zh-CN431866/


All Articles