Введение

Компьютерные системы DWIM (do what I mean) стремятся предугадать намерения пользователя, автоматически исправляя незначительные ошибки вместо слепого выполнения явных, но потенциально ошибочных команд.

Программное обеспечение

Термин был введен Уорреном Тейтельманом в его пакете DWIM для BBN Lisp, являющемся частью его системы PILOT, примерно до 1966 года.

Эмаки

Концепция DWIM была принята в расширенной форме в контексте текстового редактора GNU Emacs для описания философии проектирования функций Emacs Lisp или команд, которые стремятся интеллектуально "делать то, что нужно", в зависимости от контекста. В вики Emacs приводится пример команды копирования файла, способной определить путь назначения на основе конфигурации разделенного окна, содержащего два буфера dired, один из которых отображает исходный путь; такое поведение также распространяется на многие применимые действия dired, принимающие два пути к каталогам в качестве аргументов. Поведение DWIM, когда оно доступно, часто указывается в названии команды; например, в GNU Emacs есть функция dwim-комментирования, которая комментирует выделенный фрагмент, если он не закомментирован, или раскомментирует его, если он уже закомментирован, используя символы комментариев и отступы, подходящие для среды программирования и текущего контекста. Этот тип DWIM часто не связан напрямую с исправлением ошибок пользователя, а скорее с определением намерения пользователя на основе доступного контекста. Например, пакет Emacs Magit последовательно реализует эту философию проектирования. Среди множества команд diff есть команда magit-diff-dwim, которая не требует дополнительного ввода от пользователя, а просто пытается угадать, что пользователь хочет проанализировать, исходя из положения курсора. В руководстве пользователя Magit поведение magit-diff-dwim описывается просто: "Показать изменения для объекта под курсором", где "курсор" – это термин Emacs для обозначения позиции ввода.