Помилки програмістів про імена — з прикладами

У 2010 році Патрік Маккензі написав знамениту статтю «Помилки програмістів про імена», перерахувавши 40 фактоидов, які не завжди достовірні відносно людських імен.

Думаєте, програмісти сіли, подумали і змінили обробку імен в комп’ютерних системах? На жаль, не зовсім. Нас, як і раніше, повсюдно просять заповнити онлайн-форми, які передбачають обов’язкову наявність імені та прізвища (причому саме в такому порядку). Ці системи, як і раніше припускають, що наші імена завжди можна записати символами алфавіту, найчастіше тільки ASCII.

Підозрюю, що стаття Патріка мала недостатній вплив на індустрію в тому числі тому, що в ній були відсутні приклади кожного омани. Але як колишній співробітник проекту IBM Global Name Management можу вас запевнити, що все сказане в ній — правда.

Не вірите? У цій статті я перерахую всі 40 помилок, навівши приклад (або два) з мого досвіду роботи в цій області. Готові? Поїхали!

1. У кожної людини є одна канонічне повне ім’я.
Здається, деякі люди вважають, що ви отримуєте ім’я, і воно ніколи не змінюється. Але навіть у західних країнах людина може змінити своє прізвище при вступі в шлюб. У католицькій традиції людина може отримати друге ім’я при конфірмації.

2. У кожної людини є одне ім’я, яке він використовує.
Добре відомий письменник-фантаст Джон Уиндем (автор «Дня Триффідів») народжений з ім’ям Джон Уиндем Паркс Лукас Бейнон Харріс, а публікував книги під іменами Джон Бейнон і Лукас Паркс, а також Джон Уиндем.

3. В даний момент часу у кожної людини є одна канонічне повне ім’я.
У актора може бути сценічний псевдонім, повністю відрізняється від імені у свідоцтві про народження, у нього може бути навіть паспорт на сценічний псевдонім.

4. В даний момент часу у кожної людини одне повне ім’я, яке він використовує.
Це не так, навіть у західних країнах жінка може зберегти дівоче прізвище на роботі (де вона вже відома під цим ім’ям) і використовувати прізвище чоловіка в спілкуванні або в юридичних документах, таких як іпотека і кредити.

5. У кожної людини є в точності N імен, незалежно від значення N.
Англійське ім’я традиційно містить два імені (їх часто називають ім’ям і другим ім’ям) та прізвище, але не обов’язково все саме так. У людини не може бути другого імені, або їх може бути декілька. Наприклад, у португальців одне або два імені та до чотирьох прізвищ (до шести у разі заміжньої жінки), і ці прізвища можуть бути фразами, такими як да Сілва або дос Сантуш, або навіть Коста-і-Сілва.

6. Імена вміщуються в певну кількість символів.
У відомого художника, якого зазвичай звуть просто Пікассо, повне ім’я було Пабло Дієго Хосе Франсіско де Паула Хуан Непомусено Марія де лос Ремедіос Сиприано де ла Сантісіма Тринідад Мартир Патрісіо Руїс і Пікассо. Спробуйте вмістити це в форму на 30 символів…

7. Імена не змінюються.
Ми вже згадували про дівчат, які змінюють ім’я при вступі в шлюб, так що це явно невірно. Крім того, католики можуть прийняти друге ім’я в момент конфірмації. Також людина часто додає ім’я або повністю змінює його при переході в іншу релігію — згадайте, як після звернення в іслам Кет Стівенс став Юсуфом Ісламом, а Кассіус Клей перетворився в Мохаммеда Алі.

8. Імена змінюються, але тільки в певних обмежених випадках.
Для деяких тайців звичайна справа змінити ім’я, щоб відігнати невдачу. Це може статися без особливого приводу. Іноді людина змінює ім’я, коли хтось інший з таким же ім’ям став відомим або сумнозвісним: примітний приклад, коли безліч людей відмовилося від прізвища Гітлер.

9. Імена записані в ASCII.
Явна помилка хоча б тому, що ASCII не містить виділені символи з французьких і португальських імен. Цей набір символів не включає грецький алфавіт, що використовується в грецьких іменах, кириличні символи для російських імен. Є писемності начебто деванагарі для індійських імен, китайські ієрогліфи (ханзи), японські ієрогліфи (кандзі), і багато іншого.

Читайте також  Короткий екскурс по основних моментах Zend Framework

10. Імена записані в якій-небудь одній кодуванні.
В деяких іменах змішані кодування. Наприклад, кандзі з латинськими символами або ханзи з латинськими символами, або корейська хангиль з латинськими символами. У багатьох випадках це відбувається тому що у людини є «західне ім’я» на догоду тим, хто не може вимовити його ім’я його рідною мовою.

11. Всі імена відповідають кодовою точкам Юнікоду.
Розробники Юнікоду продовжують додавати в стандарт кодові точки для все більш рідкісних символів. Переважна більшість імен вже відповідає їм, але все ще є винятки, такі як символ «артист, раніше відомий як Прінс». Навіть якщо виключити подібні курйози, кілька писемностей ще не увійшли в Юнікод. Можливо, самим реалістичним прикладом є аймара, писемність для мови, якою говорять мільйони людей в Південній Америці. Менш реалістичні приклади — клінгонською мовою або символи, винайдені Толкіном для Середзем’я. Крім того, Юнікод включає лише частину китайських і японських ієрогліфів, а деякі з пропущених символів використовуються в іменах.

Щоб ще більше ускладнити ситуацію, в деяких мовах немає письмових символів — їх неможливо записати. І для таких мов в Юнікод немає кодових точок. Імена в цих мовах можна записати фонетично, але це не особливо корисно, тому що більшість людей не знайомі з фонетичним алфавітом.

12. Імена чутливі до зміни регістру.
Багато набори символів не чутливі до регістру: наприклад, китайська та японська. Для них ідея прописних і рядкових букв просто не застосовна.

13. Імена не чутливі до зміни регістру.
Деякі писемності чутливі до регістру: наприклад, латиниця. Що ще більш важливо, в деяких мовах символи можна написати в нижньому регістрі, але не в верхньому, тому неможливо перевести їх з одного регістра в інший.

Правильний регістр може бути дуже важливий для деяких людей, таких як носії прізвищ Маккензі і Маккензі.

Крім того, правильний регістр важливий для таких прізвищ, як Ван Гог, дю Баррі, да Коста, о’брайен і д’агостіно, та імен, таких як Жан-П’єр.

14. Іноді в іменах зустрічаються префікси або суфікси, але ви можете безпечно їх ігнорувати.
Ніщо не може бути далі від істини. Голландське ім’я Пітер ван дер Меєр не те ж саме, що Пітер Меєр, хоча «ван дер» є префіксом.

Можете вважати «молодший» суфіксом імені Роберт Дауні-молодший, але якщо опустити його, ви назвете його батька, а не його.

В арабських іменах суфікс аль-Дін означає «віри» або «релігії» — такі імена, як Тадж-аль-Дін («корона віри») або Саїф аль-Дін («меч релігії») не залишаться тими ж, якщо пустити суфікс. Італійське ім’я Ді Стефано не те ж саме, що Стефано.

Іспанська жінка з прізвищем «виуда де ла Круз» — це вдова чоловіка з патронимом де ла Круз. Відсутність префіксів змінює значення імені.

15. Імена не містять цифр.
Навіть якщо ігнорувати династії (наприклад, Тюрстон Хауелл III), в деяких випадках номер стає частиною чийогось імені юридичної. Наприклад, Дженніфер 8 обрала друге ім’я 8, тому що 8 пов’язане з удачею.

16. Імена не можуть бути записані ЦІЛКОМ ПРОПИСНИМИ літерами.
В деяких країнах (особливо франкомовних) прийнято писати прізвище людини заголовними літерами, щоб було ясно, яка частина є прізвищем. Ця конвенція закріпилася до такої міри, що написання прізвища малими літерами може вважатися неввічливим.

17. Імена не можуть бути записані цілком малими літерами.
Поет е. е. каммінгс волів, щоб його ім’я писали малими літерами. Як і співачка k.d. lang. Ввічливо слідувати написання, яке воліє власник імені.

Існує ірландська/британська прізвище френч, яку традиційно пишуть малими літерами, хоча ця традиція страждає від поганого програмного забезпечення, яке змушує вказувати першу велику.

18. В іменах є порядок. Вибір однієї зі схем упорядкування записи автоматично призведе до постійного порядку серед всіх систем, якщо всі вони використовують ту ж схему впорядкування.
У Нідерландах ім’я Вінсента Ван Гога проіндексують і відсортують за буквою Р як Гог; в Бельгії ім’я проіндексують за для Ван Гога. Неможливо прийняти єдину систему імен, яка призведе до загальноприйнятого порядку. У багатьох бібліотеках система заснована на місці народження людини (я б не хотів, щоб таке правило застосовували в програмному забезпеченні).

Читайте також  Навіщо вчити цей Garbage Query Language?

19. Ім’я та прізвище обов’язково відрізняються.
Австралійський бізнесмен і політик Бенджамін Бенджамін помер в 1905 році. Джером К. Джером — англійський письменник, відомий твором «Троє в човні, не рахуючи собаки». Оуен Оуен — валлієць, який заснував компанію Owen Owen Ltd, яка управляє мережею універмагів. І навіть не будемо чіпати атлетів і акторів, які прийняли такі псевдоніми.

20. У людей є прізвище або щось подібне, загальне для родичів.
На Яві було прийнято давати людині тільки ім’я без прізвища. Наприклад, у президентів Індонезії Сухарто і Сукарно не було прізвища.

21. Ім’я людини унікально.
Скажіть це будь по імені Джон Сміт! У мене кілька менш поширене ім’я, але я виявив людини з тим же ім’ям і прізвищем, який працює в тій же галузі в тій же країні (Австралія).

22. Ім’я людини майже унікальне.
Навіть з урахуванням нестандартного написання зазвичай легко знайти людей з тим же повним ім’ям: спробуйте загугліть власне.

23. Гаразд, гаразд, але імена досить рідкісні, тому що немає мільйона людей з тим же ім’ям і прізвищем.
Китайське ім’я Чжан Вей, як повідомляється, мають більше чверті мільйона чоловік.

Якщо обмежитися прізвищами, то близько 20% населення Південної Кореї мають прізвище Кім. Близько 10% населення Північного Китаю носить прізвище Ван, а більше 10% населення Південного Китаю носить прізвище Чень. На другому місці і там, і там прізвище, що робить її самої популярної в країні. І близько 40% в’єтнамців носять прізвище Нгуєн.

Імена теж далеко не унікальні.

24. Моя система ніколи не буде мати справу з іменами з Китаю.
Міграція розповсюдила імена кожної культури до (майже) кожної країни. Майже пройшли ті дні, коли при в’їзді в країну іммігрантів давали нові імена (хоча, наприклад, В’єтнам, як і раніше, вимагає, щоб заявник на громадянство прийняв в’єтнамське ім’я). Нереально очікувати повної відсутності імен з інших країн, хоча ви можете побачити їх у транслитерированном вигляді.

Так, китайське ім’я начебто 周潤發 у вашій системі може з’явитися як Чоу Юнь-фат, або Чоу Юнь Фат, або навіть Юнь Фат Чоу (Чоу — це прізвище).

25. Або Японії.
див. вище.

26. Чи Кореї.
див. вище.

27. Чи Ірландії, Великобританії, США, Іспанії, Мексики, Бразилії, Перу, Швеції, Ботсвани, ПАР, Тринідаду, Гаїті, Франції, Клингонской Імперії — у всіх перерахованих використовуються «дивні» схеми для імен.
див. вище.

28. Клингонская Імперія була жартом, правда?
Важко знайти приклади людей, що офіційно використовують клингонские імена, але чому ні? Якщо ми впровадимо систему з підтримкою інших культур (наприклад, вбудований апостроф для о’браєна), то зможемо підтримувати і клингонские імена без додаткової роботи.

29. До біса культурний релятивізм! Люди в моєму товаристві, принаймні, мають однакове уявлення про загальновизнаному стандарті для імен.
А ваше програмне забезпечення буде працювати тільки з людьми, які отримали імена у вашому товаристві?

30. Є алгоритм, який перетворює імена в одну й іншу сторону без втрат. (Так, так, ти можеш зробити це, якщо алгоритм на виході повертає той же, що і на вході, візьми собі медаль).
Не існує алгоритму (крім запам’ятовування вихідного формату), який перетворює ім’я гарантовано оборотним способом.

31. Можу впевнено припустити, що цей словник нецензурних слів не містить прізвищ.
Це поширена помилка: багато «погані слова» не погані в інших мовах, а деякі використовуються в іменах. Крім того, не кожне суспільство обмежує, які слова можна використовувати в імені: цілком можливо, що чиєсь ім’я присвоєно в такій юрисдикції.

32. Імена людям даються при народженні.
Пологи реєструються в більшості країн, однак ефективність цієї системи неоднакова.

Точні правила розрізняються залежно від юрисдикції, але завжди допускається деяка затримка в реєстрації народження. Допустима прострочення варіюється від трьох тижнів (Шотландія) до двох місяців (Австралія), але є і більше.

Читайте також  Принцип найменшої дії. Частина 1

Ім’я дитини може бути записано в момент реєстрації народження, але це не завжди відбувається (подекуди дітей, як і раніше реєструють з іменами на зразок Baby Boy або Baby Girl, коли у батьків виникають проблеми з вибором імені або якщо дитина є підкидьком, наприклад).

33. ОК, може не при народженні, але досить скоро після нього.

34. Гаразд, гаразд, протягом року або близько того.

35. П’ять років?

36. Ти жартуєш, вірно?
Є культури, в яких доросле ім’я людині не дають до статевого дозрівання. До цього у дитини може бути «молочне» або тимчасове ім’я.

37. Дві різні системи, в яких вказано ім’я одного і того ж людини, будуть використовувати для нього одне і те ж ім’я.
Якщо б це було так, то не існував би ринок програмного забезпечення для узгодження різних баз даних.

У моєму особистому випадку одні системи містили моє офіційне ім’я, в тому числі друге ім’я, а інші — тільки ім’я і прізвище або скорочене ім’я і прізвище. І це ще простий випадок. Моя дружина в деяких системах вказана за дівочим прізвищем, а в інших — з прізвищем чоловіка, з повним ім’ям або без, з другим ім’ям або без і з будь-яким з двох написань її скороченого імені.

38. Два різних оператора введення даних, якщо їм дати ім’я людини, обов’язково впишуть один і той же набір символів, якщо система добре спроектована.
Уявіть, що відбувається, коли людина вводить ім’я, яке чує по телефону. Наприклад, Томсон і Томпсон; або Джонсон, Джонстон, Джонстоун і Джонссон.

39. Люди, чиї імена ламають мою систему, — дивні чужинці. У них повинні бути нормальні, прийнятні імена, начебто 田中太郎.
Ні, ваша система погано спроектована.

Зокрема, вышепомянутое ім’я часто зустрічається ім’я іноземця в аніме (і манзі). Були і реальні люди з таким ім’ям.

40. У людей є імена.
Для цього випадку, мабуть, важче всього навести переконливі приклади. Існувала ізольована культура, в якій ніхто не мав імен: вони називали один одного відносними термінами, такими як «старша сестра моєї матері».

Підіб’ємо підсумок
Отже, ми зробили це: знайшли приклади (майже) для всіх сорока пунктів статті Патріка Маккензі «Помилки програмістів про імена». Якщо ви відчуваєте певний надлишок інформації, то підіб’ємо короткий підсумок. Ось найголовніше при розробці системи, яка обробляє імена:

  • Не використовуйте такі терміни, як «перше ім’я» або «християнське ім’я»: «ім’я» (given name) є найбільш поширеним терміном.
  • Майте на увазі, що половина світу спочатку вказує прізвище.
  • У багатьох культурах використовується інша система, ніж одне прізвище, загальна для всіх членів сім’ї. Деякі використовують патронім або матроним (іноді не один); а в інших взагалі немає прізвища.
  • Пунктуація може бути життєво важливою частиною імені: ірландська прізвище о’хара не збігається з японської прізвищем Охара. Ім’я Жан-П’єр не співпадає з ім’ям Жанпьер, ні з ім’ям Жан П’єр і Жан-П’єр — це одне ім’я, а Жан П’єр — два окремих імені.
  • Пробіли не обов’язково поділяють частини імені та прізвища: де ла Круз — одне прізвище, а не три окремих; китайські імена в ханзи пишуться без пробілів між іменем і прізвищем.
  • Використання прописних букв не так очевидно: прізвище ван дер Меєр може писатися з великої літери при використанні без імені, але з малої після імені.
  • Використовуйте ім’я цілком, а не розбивайте його на частини. Наприклад, не намагайтеся звернутися до людини як «пан останнє слово в імені»: тут можливі помилки в різних випадках:
    • Якщо прізвище пишеться перед ім’ям (наприклад, китайська).
    • Якщо коректно використовувати патронім, а він не останній.
    • Якщо прізвище складається з більш ніж одного слова, наприклад, іспанська прізвище де ла Торре
    • Якщо ім’я містить суфікс, наприклад, «молодший».

Нарешті, я настійно рекомендую ознайомитися з невеликим керівництвом по іменах в статті від W3C.

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *