stringtranslate.com

Principio del menor asombro

En el diseño de interfaces de usuario y de software , [1] el principio del mínimo asombro ( POLA ), también conocido como principio de la mínima sorpresa , [a] propone que un componente de un sistema debe comportarse de la manera que la mayoría de los usuarios esperan que se comporte, y por lo tanto no asombra ni sorprende a los usuarios. El siguiente es un corolario del principio: "Si una característica necesaria tiene un alto factor de asombro, puede ser necesario rediseñar la característica". [4]

El principio se ha utilizado en relación con la interacción informática al menos desde la década de 1970. Aunque se formalizó por primera vez en el campo de la tecnología informática, el principio se puede aplicar ampliamente en otros campos. Por ejemplo, en la redacción , una referencia cruzada a otra parte de la obra o un hipervínculo deben redactarse de manera que indiquen con precisión al lector qué esperar.

Origen

Una referencia temprana a la "Ley del Mínimo Asombro" apareció en el PL/I Bulletin en 1967 (PL/I es un lenguaje de programación lanzado por IBM en 1966). [5] A fines de la década de 1960, PL/I se había vuelto infame por violar la ley, [6] por ejemplo porque, debido a las reglas de conversión de precisión de PL/I, [7] las expresiones 25 + 1/3y 1/3 + 25producirían un error fatal o, si se suprimían los errores, 5.33333333333 en lugar del 25.33333333333 correcto. [8]

La ley apareció escrita en su totalidad en 1972:

En el caso de aquellas partes del sistema que no se pueden ajustar a las peculiaridades del usuario, los diseñadores de un lenguaje de programación de sistemas deben obedecer la “Ley del Mínimo Asombro”. En resumen, esta ley establece que cada construcción del sistema debe comportarse exactamente como su sintaxis lo sugiere. Se deben seguir las convenciones ampliamente aceptadas siempre que sea posible y las excepciones a las reglas previamente establecidas del lenguaje deben ser mínimas. [9]

Formulación

Una formulación clásica es: “Las personas son parte del sistema. El diseño debe coincidir con la experiencia, las expectativas y los modelos mentales del usuario ”. [10]

El principio apunta a aprovechar el conocimiento existente de los usuarios para minimizar la curva de aprendizaje , por ejemplo, diseñando interfaces que toman prestado en gran medida de "programas funcionalmente similares o análogos con los que es probable que sus usuarios estén familiarizados". [2] Las expectativas de los usuarios a este respecto pueden estar estrechamente relacionadas con una plataforma o tradición informática particular . Por ejemplo, se espera que los programas de línea de comandos de Unix sigan ciertas convenciones con respecto a los conmutadores , [2] y se espera que los widgets de los programas de Microsoft Windows sigan ciertas convenciones con respecto a los atajos de teclado . [11] En configuraciones más abstractas como una API , la expectativa de que los nombres de funciones o métodos coincidan intuitivamente con su comportamiento es otro ejemplo. [12] Esta práctica también implica la aplicación de valores predeterminados sensatos . [4]

Cuando dos elementos de una interfaz entran en conflicto o son ambiguos, el comportamiento debería ser el que menos sorprenda al usuario ; en particular, un programador debería tratar de pensar en el comportamiento que menos sorprenderá a alguien que usa el programa, en lugar de aquel comportamiento que es natural a partir de conocer el funcionamiento interno del programa. [4]

La elección del comportamiento "menos sorprendente" puede depender de la audiencia esperada (por ejemplo, usuarios finales , programadores o administradores de sistemas ). [2]

Ejemplos

Los sitios web que ofrecen atajos de teclado a menudo permiten presionar ?para ver los atajos disponibles. Algunos ejemplos incluyen Gmail , [13] YouTube , [14] y Jira . [15]

En los sistemas operativos Windows y algunos entornos de escritorio para Linux , la tecla de función normalmente abre el programa de ayuda de una aplicación . Un atajo de teclado similar en macOS es + + . Los usuarios esperan una ventana de ayuda o un menú contextual cuando presionan las teclas de atajo de ayuda habituales. Es probable que el software que en su lugar utiliza este atajo para otra función cause asombro si no aparece ninguna ayuda. [16]F1 Command⇧ Shift/

La biblioteca estándar de un lenguaje de programación suele proporcionar una función similar al pseudocódigo , que crea un entero legible por máquina a partir de una cadena de dígitos legibles por humanos . El radix convencionalmente tiene como valor predeterminado 10, lo que significa que la cadena se interpreta como decimal (base 10). Esta función normalmente admite otras bases, como binaria (base 2) y octal (base 8), pero solo cuando se especifican explícitamente. En una desviación de esta convención, JavaScript originalmente tenía como valor predeterminado la base 8 para las cadenas que comenzaban con "0", lo que causaba confusión entre los desarrolladores y errores de software . [17] Esto se desaconsejó en ECMAScript 3 y se eliminó en ECMAScript 5. [18] ParseInteger(string, radix)

Algunas comunidades de desarrollo como FreeBSD [19] utilizan POLA como una de las pautas que definen lo que constituye una experiencia de usuario sorprendente.

Véase también

Notas

  1. ^ Alternativamente, una ley de mínima sorpresa o regla de mínima sorpresa . [2] [3]

Referencias

  1. ^ Seebach, Peter (1 de agosto de 2001). "El principio del menor asombro". El usuario cascarrabias . IBM DeveloperWorks . Consultado el 23 de enero de 2014 .
  2. ^ abcd Raymond, Eric Steven (2003). "Aplicación de la regla de la mínima sorpresa". El arte de la programación en Unix. faqs.org. p. 20. ISBN 978-0-13-142901-7. Recuperado el 23 de agosto de 2020 .
  3. ^ James, Geoffrey (1987). El Tao de la Programación. InfoBooks. 4.1. ISBN 0-931137-07-1. Recuperado el 5 de febrero de 2014 .
  4. ^ abc Cowlishaw, MF (1984). "El diseño del lenguaje REXX" (PDF) . IBM Systems Journal . 23 (4): 333. doi :10.1147/sj.234.0326 . Consultado el 23 de enero de 2014. ¿Podría haber un alto factor de asombro asociado con la nueva característica? Si el usuario aplica incorrectamente una característica por accidente y provoca lo que le parece un resultado impredecible, esa característica tiene un alto factor de asombro y, por lo tanto, es indeseable. Si una característica necesaria tiene un alto factor de asombro, puede ser necesario rediseñar la característica.
  5. ^ Southworth, RN (diciembre de 1967). Southworth, RN (ed.). "Propuesta de seudonombre PL/I". ACM SIGPLAN Notices . 2 (12) (Boletín PL/I n.º 5 ed.): 6. doi :10.1145/1139502.1139504. ISSN  0362-1340. S2CID  12180929.
  6. ^ Date, CJ (11 de febrero de 2022). Base de datos Dreaming Volumen I: Escritos relacionales revisados ​​y revividos. Technics Publications. Cap. 2, Referencia 36. ISBN 978-1-63462-984-3Como me comentó una vez un amigo mío (debe haber sido a fines de los años 1960), más allá de lo que se pueda decir al respecto, hay una cosa que el PL/I definitivamente no es, y es "el lenguaje del menor asombro".
  7. ^ Tremblay, Jean-Paul; Sorenson, Paul G. (1985). La teoría y la práctica de la escritura de compiladores . Nueva York: McGraw-Hill. ISBN 9780070651616PL/I es el peor ejemplo aquí; está plagado de construcciones que no hacen lo que el programador piensa, como lo ejemplifica la división FIJA .
  8. ^ Varias fuentes:
    • Holt, Richard C. (mayo de 1973). "Enseñando la enfermedad fatal: (o) programación informática introductoria usando PL/I". ACM SIGPLAN Notices . 8 (5): 8–23. doi :10.1145/986948.986950. Desafortunadamente, la expresión '25 + 1/3' da como resultado 5.33333333333333
    • Golden, Donald (octubre de 1980). "A plea for friendly software". ACM SIGSOFT Software Engineering Notes . 5 (4): 4–5. doi : 10.1145/1010884.1010885 . Para que el programador que no utiliza PL/I no llegue a la conclusión errónea de que PL/I no tiene defectos, considere los siguientes ejemplos de la hostilidad de PL/I. Las reglas para la conversión de tipos en PL/I son suficientes para provocar úlceras a los programadores. ¿Qué otro lenguaje produciría un error fatal al evaluar la expresión (25 + 1/3)? (Igual de malo, si suprime la comprobación de errores, el resultado de evaluar la expresión es 5.3333...)
    • Stansifer, Ryan D. (1995). El estudio de los lenguajes de programación . Englewood Cliffs, NJ: Prentice Hall. pág. 123. ISBN 978-0-13-726936-5. PL/I es infame en este sentido, ya que convierte casi cualquier tipo en cualquier otro tipo, a veces con resultados sorprendentes. Considere la expresión 1/3 + 25. En PL/I esta expresión tiene el valor 5.33333333333. ¿Por qué? Un tercio se calcula con 15 dígitos de precisión, 14 a la derecha del punto decimal. Luego, 25 se convierte a la misma precisión, perdiendo el dígito más significativo 2! Esto genera un error en PL/I, pero el valor predeterminado es ignorarlo. Esto apareció impreso por primera vez en Barron 1968, donde se presenta como una violación de una ley popular del diseño del lenguaje: "la ley del menor asombro".
    • "Enterprise PL/I for z/OS 5.3 - Referencia del lenguaje" (PDF) . IBM. Marzo de 2021. págs. 57–62. Considere la siguiente expresión: 25+1/3. El resultado de evaluar esta expresión no está definido y se genera la condición FIXEDOVERFLOW porque la división FIXED da como resultado un valor de precisión máxima definida por la implementación. [...] Los resultados de las dos evaluaciones se obtienen como se muestra en la Tabla 29.
  9. ^ Bergeron, RD; Gannon, JD; Shecter, DP; Tompa, FW; Dam, A. Van (1972). "Lenguajes de programación de sistemas". Advances in Computers . 12 : 175–284. doi :10.1016/s0065-2458(08)60510-0. ISBN 9780120121120.
  10. ^ Saltzer, JH; Kaashoek, Frans (2009). Principios del diseño de sistemas informáticos: una introducción. Morgan Kaufmann. pág. 85. ISBN 978-0-12-374957-4.
  11. ^ Petroutsos, Evangelos (2010). Dominando Microsoft Visual Basic 2010. Wiley. pág. 133. ISBN 978-0-470-53287-4.
  12. ^ Bloch, Joshua (2006). "Cómo diseñar una buena API y por qué es importante". Actas de OOPSLA '06 Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, language, and applications . Asociación para Maquinaria Informática. págs. 506–7. doi :10.1145/1176617.1176622. ISBN 1-59593-491-X. Número de identificación del sujeto  27230400.
  13. ^ Vivian (21 de junio de 2013). «Atajos de teclado para Gmail». Google Inc. Consultado el 27 de julio de 2013 .
  14. ^ "Atajos de teclado para YouTube - Ayuda de YouTube". support.google.com . Consultado el 16 de agosto de 2022 .
  15. ^ "Uso de atajos de teclado". Atlassian . Consultado el 27 de julio de 2013 .
  16. ^ Keizer, G. (1 de marzo de 2010). «Microsoft: No presione la tecla F1 en Windows XP». Computerworld . Consultado el 10 de noviembre de 2019 .
  17. ^ "¿Por qué el valor predeterminado del radix para parseInt de JavaScript es 8?". Stack Overflow . 8 de abril de 2011.
  18. ^ "parseInt()", Mozilla Developer Network (MDN) , 15 de marzo de 2024. Si la cadena de entrada comienza con "0" (un cero), se supone que el valor de base es 8 (octal) o 10 (decimal). El valor de base exacto que se elija depende de la implementación. ECMAScript 5 aclara que se debe utilizar 10 (decimal), pero no todos los navegadores lo admiten todavía.
  19. ^ "Preguntas frecuentes sobre FreeBSD 2.X, 3.X y 4.X". FreeBSD. 2002-06-11 . Consultado el 2023-02-15 .

Enlaces externos