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

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

Джон Грехем-Каммінг (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. Ти жартуєш, правда?
37. Дві різні системи, в яких вказано ім'я однієї й тієї самої людини, будуть використовувати для неї одне й те саме ім'я.
38. Два різних оператори введення даних, якщо їм дати ім'я людини, обов'язково впишуть той самий набір символів, якщо система добре спроектована.
39. Люди, чиї імена ламають мою систему, дивні чужинці. У них мають бути нормальні, прийнятні імена, на зразок 田中太郎.
40. Люди мають імена.

Список у жодному разі не вичерпний. Якщо вам потрібні приклади реальних імен, які спростовують будь-який із цих пунктів, я із задоволенням назву їх. Можете додавати в коментарях інші пункти для цього списку помилок, і надсилайте людям посилання на цей список наступного разу, коли їм спадає на думку геніальна ідея зробити базу даних з колонками first_name і last_name.

Джерело: habr.com

Додати коментар або відгук