Los sistemas informáticos DWIM ( haz lo que quiero decir ) intentan anticipar lo que los usuarios pretenden hacer, corrigiendo errores triviales automáticamente en lugar de ejecutar a ciegas la entrada explícita pero potencialmente incorrecta de los usuarios.
Software
El término fue acuñado por Warren Teitelman en su paquete DWIM para BBN Lisp , parte de su sistema PILOT, en algún momento antes de 1966. [1] [2] [3]
El paquete DWIM de Teitelman "corrige [ed] los errores automáticamente o con una pequeña intervención del usuario", [2] de manera similar a la autocorrección del lenguaje natural.
Teitelman y su colega de Xerox PARC , Larry Masinter, describieron más tarde la filosofía de DWIM en el entorno de programación Interlisp (el sucesor de BBN Lisp):
Aunque la mayoría de los usuarios piensan en DWIM como un único paquete identificable, incorpora una filosofía generalizada de diseño de interfaz de usuario: en el nivel de interfaz de usuario, las instalaciones del sistema deben realizar interpretaciones razonables cuando se les da una entrada no reconocida. ... el estilo de interfaz utilizado en todo Interlisp permite al usuario omitir varios parámetros y hacer que estos valores predeterminados sean razonables ...
DWIM es una encarnación de la idea de que el usuario está interactuando con un agente que intenta interpretar la solicitud del usuario a partir de información contextual. Dado que queremos que el usuario sienta que está conversando con el sistema, no debe ser detenido y obligado a corregirse o dar información adicional en situaciones donde la corrección o información sea obvia. [4]
Los críticos de DWIM afirmaron que estaba "sintonizado con los errores de escritura particulares a los que era propenso Teitelman, y no con otros" y lo llamaron "Haz lo que significa Teitelman" o "Haz lo que significa Interlisp", [5] o incluso afirmaron que DWIM significaba "Maldita máquina infernal de Warren". [6]
Emacs
El concepto de DWIM ha sido adoptado en forma aumentada por los usuarios del editor de texto GNU Emacs para describir la filosofía de diseño de las funciones o comandos de Emacs Lisp que intentan inteligentemente " hacer lo correcto " dependiendo del contexto, [7] en lugar de corregir específicamente la escritura del usuario. La wiki de Emacs da el ejemplo de un comando de copia de archivo que puede deducir la ruta de destino a partir de una configuración de ventana dividida que contiene dos búferes dired , uno de los cuales muestra la ruta de origen.
La funcionalidad DWIM, cuando está disponible, a menudo se menciona en el nombre de un comando; Por ejemplo, GNU Emacs tiene una comment-dwim
función que comenta una región seleccionada si está descomentada, o descomenta cuando ya está comentada, mientras usa caracteres de comentario y sangría apropiados para el entorno del lenguaje de programación y el contexto actual. [8] [9]
La funcionalidad DWIM de este tipo a menudo no se ocupa directamente de corregir el error del usuario, sino más bien de adivinar la intención del usuario a partir del contexto disponible y ofrecer opciones predeterminadas sensatas en lugar de seguir adelante alegremente con la supuesta acción prevista. Por ejemplo, el paquete Emacs Magit muestra esta filosofía de diseño de manera generalizada. Entre sus numerosos comandos diff (utilizados para analizar las diferencias entre múltiples versiones de archivos), hay un magit-diff-dwim
comando, que no requiere más información por parte del usuario, sino que simplemente adivina lo que el usuario quiere analizar en función de la ubicación del cursor . El Manual de usuario de Magit describe el comportamiento de magit-diff-dwim
simplemente: " Mostrar cambios para la cosa en el punto ". [10]
Ver también
Referencias
- ^ Warren Teitelman, "PILOTO: Un paso hacia la simbiosis hombre-computadora", MIT Ph.D. Disertación, Proyecto MAC MAC-TR-32, septiembre de 1966. DTIC AD0638446 Archivado el 18 de abril de 2012 en Wayback Machine PDF [ enlace muerto permanente ] , p. 51
- ^ a b Warren Teitelman, "Hacia un laboratorio de programación", en JN Buxton y Brian Randell , Técnicas de ingeniería de software , abril de 1970, un informe sobre una conferencia patrocinada por el Comité Científico de la OTAN, Roma, Italia, 27-31 de octubre de 1969, p. . 108 y sigs .
- ^ Donald E. Walker, Lewis M. Norton (Eds.): Actas de la Primera Conferencia Conjunta Internacional sobre Inteligencia Artificial, Washington, DC, p 715, mayo de 1969.
- ^ Warren Teitelman, Larry Masinter, "El entorno de programación de Interlisp", Computadora (IEEE) 14 : 4: 25-33, abril de 1981. doi : 10.1109 / CM.1981.220410 pdf
- ^ Guy L. Steele Jr., Richard P. Gabriel, "La evolución de Lisp", en Historia de los lenguajes de programación --- II , 1996, ISBN 0-201-89502-1 doi : 10.1145 / 234286.1057818 , p. 16. pdf
- ^ http://www.catb.org/~esr/jargon/html/D/DWIM.html
- ^ "Haz lo que quiero decir" .
- ^ "Sugerencias de comentarios" .
En general, la M-; El comando (comment-dwim) inicia automáticamente un comentario del tipo apropiado; o sangra un comentario existente en el lugar correcto, según el número de punto y coma.
- ^ "Comandos de comentario" .
El comando para crear o alinear un comentario es M-; (comentario-dwim). La palabra "dwim" es un acrónimo de "Do What I Mean"; indica que este comando se puede usar para muchos trabajos diferentes relacionados con los comentarios, dependiendo de la situación en la que lo use.
- ^ "Manual de usuario de Magit: 5.4 Diffing" .
Otras lecturas
- Warren Teitelman, "Programación automatizada [sic] : el asistente del programador", en Proceedings of the FJCC , 1972 doi : 10.1145 / 1480083.1480119