ДВИМ
Компьютерные системы DWIM ( делай то, что я имею в виду ) пытаются предугадать, что собираются делать пользователи, автоматически исправляя тривиальные ошибки, а не слепо выполняя явные, но потенциально неправильные входные данные пользователей.
Программное обеспечение
[ редактировать ]Этот термин был придуман Уорреном Тейтельманом в его пакете DWIM для BBN Lisp , части его системы PILOT, где-то до 1966 года. [1] [2] [3]
ИнтерЛисп
[ редактировать ]Пакет DWIM Тейтельмана «исправляет [ed] ошибки автоматически или с незначительным вмешательством пользователя», [2] аналогично автокоррекции естественного языка.
Тейтельман и его из Xerox PARC коллега Ларри Масинтер позже описали философию DWIM в Interlisp среде программирования (преемнике BBN Lisp):
Хотя большинство пользователей думают о DWIM как о едином идентифицируемом пакете, он воплощает в себе широко распространенную философию проектирования пользовательского интерфейса: на уровне пользовательского интерфейса системные средства должны давать разумную интерпретацию, когдаучитывая нераспознанный ввод. ...стиль интерфейса, используемый в Interlisp, позволяет пользователю опускать различные параметры и устанавливать для них разумные значения по умолчанию...
DWIM — это воплощение идеи, что пользователь взаимодействует с агентом, который пытается интерпретироватьзапрос пользователя из контекстной информации. Поскольку мы хотим, чтобы пользователь чувствовал, что он общается с системой,его нельзя останавливать и заставлять исправлять себя или давать дополнительную информацию в ситуациях, когда исправление или информация очевидны. [4]
Критики DWIM утверждали, что он «настроен на конкретные ошибки набора текста, к которым был склонен Тейтельман, и никакие другие», и называли его «Делай то, что означает Тейтельман» или «Делай то, что означает Interlisp». [5] или даже утверждал, что DWIM означает «Адская машина проклятого Уоррена». [6]
Эмакс
[ редактировать ]Концепция DWIM была принята в расширенной форме в контексте GNU Emacs текстового редактора для описания философии проектирования функций или команд Emacs Lisp , которые пытаются разумно « поступать правильно » в зависимости от контекста. [7] Emacs Вики-страница дает пример команды копирования файла, которая может определить путь назначения из конфигурации разделенного окна, содержащей два направляемых буфера, один из которых отображает исходный путь; такое поведение также распространяется на многие применимые направленные действия, которые принимают в качестве аргументов два пути к каталогу.
Поведение DWIM, если оно доступно, часто упоминается в имени команды; например, GNU Emacs имеет comment-dwim
функция, которая комментирует выбранную область, если она не закомментирована, или раскомментирует ее, если она уже закомментирована, используя символы комментариев и отступы, соответствующие среде языка программирования и текущему контексту. [8] [9]
Этот тип DWIM часто не связан напрямую с исправлением ошибок пользователя, а скорее угадывает намерения пользователя на основе доступного контекста. Например, пакет Emacs Magit широко демонстрирует эту философию проектирования. Среди многочисленных команд сравнения есть magit-diff-dwim
Команда, которая не требует дополнительных действий со стороны пользователя, а просто угадывает, что пользователь хочет проанализировать, основываясь на местоположении курсора . Руководство пользователя Magit описывает поведение magit-diff-dwim
просто: « Показать изменения для данной вещи », [10] «точка» — это термин Emacs для обозначения курсора.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Уоррен Тейтельман, «ПИЛОТ: шаг к симбиозу человека и компьютера», Массачусетского технологического института. доктор философии Диссертация, Проект MAC MAC-TR-32, сентябрь 1966 г. DTIC AD0638446. Архивировано 18 апреля 2012 г. в Wayback Machine PDF , стр. 51
- ^ Jump up to: а б Уоррен Тейтельман, «На пути к лаборатории программирования», в книге Дж. Н. Бакстона и Брайана Рэнделла , «Техники разработки программного обеспечения », апрель 1970 г., отчет о конференции, спонсируемой Научным комитетом НАТО, Рим, Италия, 27–31 октября 1969 г., стр. 108 и далее .
- ^ Дональд Э. Уокер, Льюис М. Нортон (ред.): Материалы 1-й Международной совместной конференции по искусственному интеллекту, Вашингтон, округ Колумбия, стр. 715, май 1969 г.
- ^ Уоррен Тейтельман, Ларри Масинтер, «Среда программирования Interlisp», Компьютер (IEEE) 14 : 4: 25-33, апрель 1981. дои : 10.1109/CM.1981.220410 pdf
- ^ Гай Л. Стил-младший, Ричард П. Габриэль, «Эволюция Лиспа», в «Истории языков программирования — II» , 1996, ISBN 0-201-89502-1 дои : 10.1145/234286.1057818 , с. 16.pdf
- ^ «ДВИМ» .
- ^ «Делай то, что я имею в виду» .
- ^ «Советы по комментированию» .
Вообще говоря, М-; Команда (comment-dwim) автоматически запускает комментарий соответствующего типа; или сдвигает существующий комментарий в нужное место, в зависимости от количества точек с запятой.
- ^ «Команды комментариев» .
Команда создания или выравнивания комментария — M-; (комментарий-dwim). Слово «двим» — это аббревиатура от «Делай то, что я имею в виду»; это указывает на то, что эту команду можно использовать для множества различных задач, связанных с комментариями, в зависимости от ситуации, в которой вы ее используете.
- ^ «Руководство пользователя Magit: 5.4 Различия» .
Дальнейшее чтение
[ редактировать ]- Уоррен Тейтельман, «Автоматическое программирование [так в оригинале] : помощник программиста», в Трудах FJCC , 1972 г. дои : 10.1145/1480083.1480119