Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
DWIM
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Software that guesses users' intentions}} {{Other uses}} '''DWIM''' ('''do what I mean''') computer systems attempt to anticipate what users intend to do, correcting trivial errors automatically rather than blindly executing users' explicit but potentially incorrect input. ==Software== The term was coined by [[Warren Teitelman]] in his DWIM package for [[BBN Lisp]], part of his PILOT system, sometime before 1966.<ref name='pilot'>Warren Teitelman, "PILOT: A Step towards Man-Computer Symbiosis", [[M.I.T.]] Ph.D. Dissertation, [[Project MAC]] MAC-TR-32, September 1966. [http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=AD0638446 DTIC AD0638446] {{Webarchive|url=https://web.archive.org/web/20120418224920/http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=AD0638446 |date=2012-04-18 }} [https://web.archive.org/web/20120531095612/http://handle.dtic.mil/100.2/AD638446 PDF], p. 51</ref><ref name='teitelman'>Warren Teitelman, "Toward a programming laboratory", in J. N. Buxton and [[Brian Randell]], ''Software Engineering Techniques'', April 1970, a report on a conference sponsored by the NATO Science Committee, Rome, Italy, 27–31 October 1969, p. 108''ff''.</ref><ref>Donald E. Walker, Lewis M. Norton (Eds.): Proceedings of the 1st International Joint Conference on Artificial Intelligence, Washington, DC, p 715, May 1969.</ref> ===InterLisp=== Teitelman's DWIM package "correct[ed] errors automatically or with minor user intervention",<ref name='teitelman' /> similarly to [[autocorrection]] for natural language. Teitelman and his [[Xerox PARC]] colleague [[Larry Masinter]] later described the philosophy of DWIM in the [[Interlisp]] [[programming environment]] (the successor of BBN Lisp): <blockquote> Although most users think of DWIM as a single identifiable package, it embodies a pervasive philosophy of user interface design: at the user interface level, system facilities should make reasonable interpretations when given unrecognized input. ...the style of interface used throughout Interlisp allows the user to omit various parameters and have these default to reasonable values...<br> DWIM is an embodiment of the idea that the user is interacting with an agent who attempts to interpret the user's request from contextual information. Since we want the user to feel that he is conversing with the system, he should not be stopped and forced to correct himself or give additional information in situations where the correction or information is obvious.<ref>Warren Teitelman, Larry Masinter, "The Interlisp Programming Environment", ''Computer'' (IEEE) '''14''':4:25-33, April 1981. {{doi|10.1109/C-M.1981.220410}} [http://larry.masinter.net/interlisp-ieee.pdf pdf]</ref> </blockquote> Critics of DWIM claimed that it was "tuned to the particular typing mistakes to which Teitelman was prone, and no others" and called it "Do What Teitelman Means" or "Do What Interlisp Means",<ref>Guy L. Steele Jr., Richard P. Gabriel, "The Evolution of Lisp", in ''History of programming languages---II'', 1996, {{ISBN|0-201-89502-1}} {{doi|10.1145/234286.1057818}}, p. 16. [http://www.dreamsongs.com/Files/HOPL2-Uncut.pdf pdf]</ref> or even claimed DWIM stood for "Damn Warren's Infernal Machine."<ref>{{cite web |url=http://www.catb.org/~esr/jargon/html/D/DWIM.html |title = DWIM}}</ref> ===Emacs=== The concept of DWIM has been adopted in augmented form within the context of the [[GNU Emacs]] [[text editor]] to describe the design philosophy of [[Emacs Lisp]] functions or commands that attempt to intelligently "[[Worse is better#Characteristics|do the right thing]]" depending on context.<ref>{{cite web|url=http://www.emacswiki.org/emacs/DoWhatIMean|title=Do What I Mean}}</ref> The Emacs [[wiki]] gives the example of a file copy command that is able to [[Deductive reasoning|deduce]] the destination path from a split window configuration that contains two [[dired]] buffers, one of which displays the source path; this behaviour also generalises to many applicable dired actions that take two directory paths for arguments. DWIM behaviour, when available, is often mentioned in a command's name; e.g. GNU Emacs has a <code>comment-dwim</code> function that comments out a selected region if uncommented, or uncomments it when already commented out, while using comment characters and indentation appropriate for the programming language environment and current context.<ref>{{cite web|url=https://www.gnu.org/software/emacs/manual/html_node/elisp/Comment-Tips.html|title=Comment Tips|quote=Generally speaking, the M-; (comment-dwim) command automatically starts a comment of the appropriate type; or indents an existing comment to the right place, depending on the number of semicolons.}}</ref><ref>{{cite web|url=https://www.gnu.org/software/emacs/manual/html_node/emacs/Comment-Commands.html|title=Comment Commands|quote=The command to create or align a comment is M-; (comment-dwim). The word “dwim” is an acronym for “Do What I Mean”; it indicates that this command can be used for many different jobs relating to comments, depending on the situation where you use it.}}</ref> This kind of DWIM is often not directly concerned with correcting user error but rather guessing user intent from available context. For example, the Emacs [[Magit]] package evinces this design philosophy pervasively. Among its numerous [[diff]] commands, there is a <code>magit-diff-dwim</code> command, which requires no further input from the user but simply guesses what the user wants to analyse based on the location of the [[cursor (user interface)|cursor]]. The Magit User Manual describes the behaviour of <code>magit-diff-dwim</code> simply: "''Show changes for the thing at point''",<ref>{{cite web|url=https://magit.vc/manual/magit/Diffing.html|title=Magit User Manual: 5.4 Diffing}}</ref> "point" being the Emacs term for the text cursor (not the mouse pointer). ==See also== * [[Principle of least astonishment]] * [[Affordance]] ==References== <references/> ==Further reading== * Warren Teitelman, "Automated programmering ''[sic]'': the programmer's assistant", in ''Proceedings of the FJCC'', 1972 {{doi|10.1145/1480083.1480119}} [[Category:Usability]] [[Category:Spell checkers]] [[Category:Text editor features]] [[ru:Графический интерфейс пользователя#DWIM]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite web
(
edit
)
Template:Doi
(
edit
)
Template:ISBN
(
edit
)
Template:Other uses
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)