Notas de Modri

Falsedades que los programadores creen sobre los nombres

Sun 20 September 2020 / desarrollo diseño nombres

El siguiente post es mi humilde traducción del inglés del post "Falsehoods Programmers Believe About Names" de Patrick McKenzie.

John Graham-Cumming escribió hoy un artículo quejándose de cómo un sistema informático con el que estaba trabajando describía que su apellido tenía caracteres inválidos. Por supuesto que no los tiene, porque cualquier cosa que una persona te diga que es su nombre es, por definición, apropiada para identificarla. John estaba comprensiblemente molesto por esta situación, y tiene todo el derecho a estarlo, porque los nombres son centrales para nuestras indentidades, prácticamente por definición.

He vivido por varios años en Japón, programando profesionalmente, y he roto muchos sistemas por el simple hecho de haber sido introducido a ellos. La mayoría de la gente me llama Patrick McKenzie, pero reconoceré como correctos uno de entre seis nombres "completos" diferentes y muchos de los sistemas con los que lidio no aceptarán ninguno de ellos. He trabajado en corporaciones inmensas que, a fuerza de hacer negocios globalmente, tenían en teoría sus sistemas diseñados para permitir que todos los nombres funcionen en ellos. Nunca he visto un sistema informático que pueda manejar nombres apropiadamente y dudo mucho que exista alguno.

Así que, como servicio público, voy a escribir una lista de presunciones que sus sistemas hacen sobre los nombres propios. Todas estas presunciones están mal. Intenta hacer menos uso de ellas la próxima vez que escribas un programa que involucre el uso de nombres propios.

  1. Las personas tienen exactamente un solo nombre completo canónico.
  2. Las personas utilizan sólo un nombre completo.
  3. Las personas, en este instante en el tiempo, tienen exactemente un nombre completo canónico.
  4. Las personas, en este instante en el tiempo, utilizan exactamente un nombre completo.
  5. Las personas tienen exactamente N nombres, para cualquier valor de N.
  6. Los nombres de las personas entran dentro de una cierta cantidad de espacio.
  7. Los nombres de las personas no cambian.
  8. Los nombres de las personas cambian, pero sólo un bajo un conjunto enumerado de eventos.
  9. Los nombres de las personas se escriben en ASCII.
  10. Los nombres de las personas se escriben con un único conjunto de caracteres.
  11. Los nombres de las personas están mapeados a Unicode code points.
  12. Los nombres son sensibles a mayúculas y minúsculas.
  13. Los nombres no son sensibles a mayúculas y minúsculas.
  14. Los nombres de las personas a veces tienen prefijos o sufijos, pero puedes ignorarlos de manera segura.
  15. Los nombres de las personas no contienen números.
  16. Los nombres no se escriben TODO EN MAYÚSCULAS.
  17. Los nombres no se escriben todo en minúsculas.
  18. Los nombres de las personas tienen un orden. Elegir cualquier esquema de ordenamientos resultará automáticamente en un orden consistente en todos los sistemas mientras usen el mismo esquema de ordenamiento para el mismo nombre.
  19. El nombre de pila y el apellido son, por necesidad, distintos.
  20. Las personas tiene apellidos, patronímico, u cualquier otra cosa que es compartida por personas que se reconocen como familiares.
  21. Los nombres de las personas son globalmente únicos.
  22. Los nombres de las personas son casi globalmente únicos.
  23. Está bien, está bien, pero seguro que los nombres de las personas son suficientemente diversos tal que no más de un millón de personas comparten el mismo nombre.
  24. Mi sistema nunca tendrá que lidiar con nombres de China.
  25. O Japón.
  26. O Corea.
  27. O Irlanda, el Reino Unido, los Estados Unidos de América, España, México, Brasil, Perú, Rusia, Suecia, Botswana, Sudáfrica, Trinidad, Haíti, Francia, o El Imperio Klingon. Todos ellos tienen esquemas "raros" de uso común.
  28. Eso de El Imperio Klingon era un chiste, ¿verdad?
  29. ¡Confunde tu relativismo cultural! Las personas en mi sociedad, al menos, concuerdan en un estándar comunmente aceptado para los nombres.
  30. Existe un algoritmo que transforma los nombres y los puede revertir sin pérdidas. /Sí, sí, puedes hacerlo si tu algoritmo retorna el dato. Obtiene una estrella dorada.
  31. Se puede asumir con seguridad que un diccionario de malas palabras no contiene nombres de personas.
  32. Los nombres de las personas se asignan al nacer.
  33. Ok, tal vez no al nacer, pero muy cercano al nacimiento.
  34. Bueno, bueno, dentro del año de nacimiento.
  35. ¿Cinco años?
  36. Me estás cargando, ¿verdad?
  37. Dos sistemas diferentes conteniendo datos sobre la misma persona utilizarán el mismo nombre para esa persona.
  38. Dos data entries diferentes, dado el nombre de una persona, necesariamente ingresarán cadenas de caracteres iguales a nivel bit en cualquier sistema, si el sistema está bien diseñado.
  39. Las personas cuyos nombres rompen mi sistema son raros outliers. Tienen que tener nombres sólidos y aceptables como 田中太郎.
  40. Las personas tienen nombres.

Esta lista no intenta ser exhaustiva. Si necesitas ejemplos de nombres reales que refutan cualquiera de los errores comunes de arriba, felizmente te presentaré varios. Siéntete libre de agregar otros conceptos erróneos en los comentarios y de referir gente a este post la próxima vez que sugieran una idea genial, como en una tabla de base de datos las columnas nombre (first_name) y apellido (last_name).

Modri

A cerca de Modri

Geek. Coder. Google-Fu practicioner. Tech Lead in progress. Opinions are my own.

Comments