DWIM - DWIM

Os sistemas de computador DWIM ( faça o que quero dizer ) tentam antecipar o que os usuários pretendem fazer, corrigindo erros triviais automaticamente, em vez de executar cegamente as entradas explícitas, mas potencialmente incorretas dos usuários.

Programas

O termo foi cunhado por Warren Teitelman em seu pacote DWIM para a BBN Lisp , parte de seu sistema PILOT, algum tempo antes de 1966.

O pacote DWIM da Teitelman "corrigiu [ed] erros automaticamente ou com uma pequena intervenção do usuário", de forma semelhante à autocorreção para linguagem natural.

Teitelman e seu colega do Xerox PARC Larry Masinter descreveram mais tarde a filosofia do DWIM no ambiente de programação Interlisp (o sucessor do BBN Lisp):

Embora a maioria dos usuários pense no DWIM como um único pacote identificável, ele incorpora uma filosofia difundida de design de interface de usuário: no nível da interface de usuário, os recursos do sistema devem fazer interpretações razoáveis ​​quando dados dados não reconhecidos. ... o estilo de interface usado em todo o Interlisp permite ao usuário omitir vários parâmetros e ter esses valores padrão em valores razoáveis ​​...

DWIM é uma personificação da ideia de que o usuário está interagindo com um agente que tenta interpretar a solicitação do usuário a partir de informações contextuais. Uma vez que queremos que o usuário sinta que está conversando com o sistema, ele não deve ser interrompido e forçado a se corrigir ou dar informações adicionais em situações onde a correção ou informação é óbvia.

Os críticos do DWIM alegaram que ele estava "sintonizado com os erros de digitação específicos aos quais Teitelman estava sujeito, e nenhum outro" e o chamaram de "Faça o que Teitelman significa" ou "Faça o que Interlisp significa", ou mesmo alegaram que DWIM significa "Damn Warren's Máquina Infernal. "

Emacs

O conceito de DWIM foi adotado de forma aumentada por usuários do editor de texto GNU Emacs para descrever a filosofia de design de funções ou comandos Emacs Lisp que tentam " fazer a coisa certa " de forma inteligente, dependendo do contexto, em vez de corrigir especificamente a digitação do usuário . O wiki do Emacs dá o exemplo de um comando de cópia de arquivo que é capaz de deduzir o caminho de destino de uma configuração de janela dividida que contém dois buffers dired , um dos quais exibe o caminho de origem. Esta funcionalidade ( ) generaliza muitas ações dired aplicáveis, como vincular, sincronizar ou mover objetos entre diretórios. dired-dwim-target

O comportamento do DWIM, quando disponível, é freqüentemente mencionado no nome de um comando; por exemplo, GNU Emacs tem uma comment-dwimfunção que comenta uma região selecionada se não comentada, ou descomenta quando já comentada, enquanto usa caracteres de comentário e indentação apropriados para o ambiente da linguagem de programação e contexto atual.

Esse tipo de DWIM geralmente não está diretamente preocupado em corrigir o erro do usuário, mas sim em adivinhar a intenção do usuário a partir do contexto disponível e oferecer opções padrão sensatas, em vez de prosseguir alegremente com a ação pretendida assumida. Por exemplo, o pacote Emacs Magit evidencia essa filosofia de design de forma abrangente. Entre seus numerosos comandos diff (usados ​​para analisar as diferenças entre várias versões de arquivos), existe um magit-diff-dwimcomando que não requer mais nenhuma entrada do usuário, mas simplesmente adivinha o que o usuário deseja analisar com base na localização do cursor . O Manual do Usuário Magit descreve o comportamento de magit-diff-dwimsimplesmente: " Mostrar mudanças para a coisa em questão ".

Veja também

Referências

  1. ^ Warren Teitelman, "PILOTO: Uma Etapa para a Simbiose Homem-Computador", MIT Ph.D. Dissertação, Projeto MAC MAC-TR-32, setembro de 1966. DTIC AD0638446 Arquivado em 2012-04-18 no Wayback Machine PDF , p. 51
  2. ^ a b Warren Teitelman, "Toward a programming laboratory", em JN Buxton e Brian Randell , Software Engineering Techniques , abril de 1970, um relatório sobre uma conferência patrocinada pelo Comitê Científico da OTAN, Roma, Itália, 27-31 de outubro de 1969, p. . 108 ff .
  3. ^ Donald E. Walker, Lewis M. Norton (Eds.): Proceedings of the 1st International Joint Conference on Artificial Intelligence, Washington, DC, p 715, maio de 1969.
  4. ^ Warren Teitelman, Larry Masinter, "The Interlisp Programming Environment", Computer (IEEE) 14 : 4: 25-33, abril de 1981. doi : 10.1109 / CM.1981.220410 pdf
  5. ^ Guy L. Steele Jr., Richard P. Gabriel, "The Evolution of Lisp", em History of programming languages ​​--- II , 1996, ISBN  0-201-89502-1 doi : 10.1145 / 234286.1057818 , p. 16. pdf
  6. ^ http://www.catb.org/~esr/jargon/html/D/DWIM.html
  7. ^ "Faça o que eu quero dizer" .
  8. ^ "Dicas para comentários" . De um modo geral, o M-; O comando (comment-dwim) inicia automaticamente um comentário do tipo apropriado; ou recua um comentário existente no lugar certo, dependendo do número de pontos-e-vírgulas.
  9. ^ "Comandos de comentário" . O comando para criar ou alinhar um comentário é M-; (comentário-dwim). A palavra “dwim” é um acrônimo para “Do What I Mean”; indica que este comando pode ser usado para muitos trabalhos diferentes relacionados a comentários, dependendo da situação em que você o usa.
  10. ^ "Magit User Manual: 5.4 Diffing" .

Leitura adicional

  • Warren Teitelman, "Automated programmering [sic] : the programmer's assistant", em Proceedings of the FJCC , 1972 doi : 10.1145 / 1480083.1480119