stringtranslate.com

Принцип наименьшего удивления

В дизайне пользовательского интерфейса и программном обеспечении [1] принцип наименьшего удивления ( POLA ), также известный как принцип наименьшего удивления , [a] предполагает, что компонент системы должен вести себя так, как большинство пользователей ожидают от него, и, следовательно, не удивлять и не удивлять пользователей. Следующее является следствием принципа: «Если необходимая функция имеет высокий фактор удивления, может потребоваться перепроектировать функцию». [4]

Этот принцип используется в отношении компьютерного взаимодействия по крайней мере с 1970-х годов. Хотя он впервые был формализован в области компьютерных технологий, этот принцип может широко применяться и в других областях. Например, в письменной форме перекрестная ссылка на другую часть работы или гиперссылка должны быть сформулированы таким образом, чтобы точно сообщать читателю, чего ожидать.

Источник

Первая ссылка на «Закон наименьшего удивления» появилась в бюллетене PL/I Bulletin в 1967 году (PL/I — язык программирования, выпущенный IBM в 1966 году). [5] К концу 1960-х годов PL/I стал печально известен нарушением закона, [6] например, из-за правил преобразования точности PL/I, [7] выражения 25 + 1/3и 1/3 + 25либо приводили к фатальной ошибке, либо, если ошибки подавлялись, 5.33333333333 вместо правильных 25.33333333333. [8]

Закон был полностью изложен в 1972 году:

Для тех частей системы, которые не могут быть адаптированы к особенностям пользователя, разработчики языка системного программирования должны следовать «Закону наименьшего удивления». Короче говоря, этот закон гласит, что каждая конструкция в системе должна вести себя точно так, как предполагает ее синтаксис. Широко принятые соглашения должны соблюдаться, когда это возможно, а исключения из ранее установленных правил языка должны быть минимальными. [9]

Формулировка

Формулировка из учебника такова: «Люди являются частью системы. Дизайн должен соответствовать опыту пользователя, его ожиданиям и ментальным моделям ». [10]

Принцип направлен на использование существующих знаний пользователей для минимизации кривой обучения , например, путем разработки интерфейсов, которые в значительной степени заимствуют из «функционально схожих или аналогичных программ, с которыми ваши пользователи, вероятно, знакомы». [2] Ожидания пользователей в этом отношении могут быть тесно связаны с конкретной вычислительной платформой или традицией . Например, ожидается, что программы командной строки Unix будут следовать определенным соглашениям в отношении переключателей , [2] а виджеты программ Microsoft Windows должны следовать определенным соглашениям в отношении сочетаний клавиш . [11] В более абстрактных настройках, таких как API , ожидание того, что имена функций или методов интуитивно соответствуют их поведению, является еще одним примером. [12] Эта практика также включает применение разумных значений по умолчанию . [4]

Когда два элемента интерфейса конфликтуют или неоднозначны, поведение должно быть таким, которое меньше всего удивит пользователя ; в частности, программист должен попытаться придумать такое поведение, которое меньше всего удивит того, кто использует программу, а не такое поведение, которое является естественным, исходя из знания внутренней работы программы. [4]

Выбор «наименее удивительного» поведения может зависеть от ожидаемой аудитории (например, конечные пользователи , программисты или системные администраторы ). [2]

Примеры

Веб-сайты, предлагающие сочетания клавиш, часто позволяют нажатием ?увидеть доступные сочетания клавиш. Примерами являются Gmail , [13] YouTube , [14] и Jira . [15]

В операционных системах Windows и некоторых средах рабочего стола для Linux функциональная клавиша обычно открывает справочную программу для приложения . Аналогичное сочетание клавиш в macOS — + + . Пользователи ожидают появления окна справки или контекстного меню при нажатии обычной клавиши(ок) справки. Программное обеспечение, которое вместо этого использует эту комбинацию клавиш для другой функции, скорее всего, вызовет удивление, если справка не появится. [16]F1 Command⇧ Shift/

Стандартная библиотека языка программирования обычно предоставляет функцию , похожую на псевдокод , которая создает машиночитаемое целое число из строки цифр , читаемых человеком . Система счисления по умолчанию обычно равна 10, что означает, что строка интерпретируется как десятичная (основание 10). Эта функция обычно поддерживает другие основания, такие как двоичное (основание 2) и восьмеричное (основание 8), но только когда они указаны явно. В отходе от этого соглашения JavaScript изначально по умолчанию использовал основание 8 для строк, начинающихся с «0», что вызывало путаницу у разработчиков и ошибки программного обеспечения . [17] Это не поощрялось в ECMAScript 3 и было исключено в ECMAScript 5. [18] ParseInteger(string, radix)

Некоторые сообщества разработчиков, такие как FreeBSD [19], используют POLA в качестве одного из руководящих принципов того, что делает пользовательский опыт не вызывающим удивления.

Смотрите также

Примечания

  1. ^ Альтернативно закон наименьшего удивления или правило наименьшего удивления . [2] [3]

Ссылки

  1. ^ Зеебах, Питер (2001-08-01). "Принцип наименьшего удивления". Раздраженный пользователь . IBM DeveloperWorks . Получено 2014-01-23 .
  2. ^ abcd Рэймонд, Эрик Стивен (2003). «Применение правила наименьшего удивления». Искусство программирования Unix. faqs.org. стр. 20. ISBN 978-0-13-142901-7. Получено 2020-08-23 .
  3. ^ Джеймс, Джеффри (1987). Дао программирования. InfoBooks. 4.1. ISBN 0-931137-07-1. Получено 2014-02-05 .
  4. ^ abc Cowlishaw, MF (1984). "The design of the REXX language" (PDF) . IBM Systems Journal . 23 (4): 333. doi :10.1147/sj.234.0326 . Получено 2014-01-23 . Может ли быть высокий фактор удивления, связанный с новой функцией? Если функция случайно неправильно применена пользователем и вызывает то, что кажется ему непредсказуемым результатом, эта функция имеет высокий фактор удивления и, следовательно, нежелательна. Если необходимая функция имеет высокий фактор удивления, может потребоваться перепроектировать функцию.
  5. ^ Southworth, RN (декабрь 1967 г.). Southworth, RN (ред.). "Предложение о псевдониме PL/I". Уведомления ACM SIGPLAN . 2 (12) (Бюллетень PL/I № 5, ред.): 6. doi :10.1145/1139502.1139504. ISSN  0362-1340. S2CID  12180929.
  6. Дата, CJ (11 февраля 2022 г.). Database Dreaming Volume I: Relational Writings Revised and Revived. Technics Publications. Гл. 2, Ссылка 36. ISBN 978-1-63462-984-3. Как однажды заметил мне один мой друг — должно быть, это было где-то в конце 1960-х годов — что бы вы ни говорили о нем, есть одна вещь, которой PL/I определенно не является, а именно, «язык наименьшего удивления».
  7. ^ Трембле, Жан-Поль; Соренсон, Пол Г. (1985). Теория и практика написания компиляторов . Нью-Йорк: McGraw-Hill. ISBN 9780070651616. PL/I является здесь главным плохим примером; он усеян конструкциями, которые не делают то, что думает программист, как показано на примере ФИКСИРОВАННОГО деления.
  8. ^ Несколько источников:
    • Холт, Ричард К. (май 1973 г.). «Обучение фатальной болезни: (или) вводное компьютерное программирование с использованием PL/I». ACM SIGPLAN Notices . 8 (5): 8–23. doi :10.1145/986948.986950. к сожалению, выражение «25 + 1/3» дает 5.3333333333333
    • Golden, Donald (октябрь 1980). "Призыв к дружественному программному обеспечению". ACM SIGSOFT Software Engineering Notes . 5 (4): 4–5. doi : 10.1145/1010884.1010885 . Чтобы программист, не использующий PL/I, не пришел к ошибочному выводу, что PL/I не имеет недостатков, рассмотрим следующие примеры враждебности PL/I. Правил преобразования типов в PL/I достаточно, чтобы вызвать язвы у программистов. Какой еще язык мог бы выдать фатальную ошибку при вычислении выражения (25 + 1/3)? (Так же плохо, если вы подавите проверку ошибок, результат вычисления выражения будет 5.3333...)
    • Стэнсифер, Райан Д. (1995). Изучение языков программирования . Энглвуд Клиффс, Нью-Джерси: Prentice Hall. стр. 123. ISBN 978-0-13-726936-5. PL/I печально известен в этом отношении, так как он преобразует почти любой тип в любой другой тип, иногда с удивительными результатами. Рассмотрим выражение 1/3 + 25. В PL/I это выражение имеет значение 5.33333333333. Почему? Одна треть вычисляется с точностью до 15 цифр, 14 справа от десятичной точки. Затем 25 приводится к той же точности, теряя самую значимую цифру 2! Это действительно вызывает ошибку в PL/I, но по умолчанию она игнорируется. Впервые это появилось в печати в Barron 1968, где это указано как нарушение народного закона проектирования языка: «закона наименьшего удивления».
    • "Enterprise PL/I for z/OS 5.3 - Language Reference" (PDF) . IBM. Март 2021 г. стр. 57–62. Рассмотрим следующее выражение: 25+1/3. Результат оценки этого выражения не определен, и возникает условие FIXEDOVERFLOW, поскольку деление FIXED приводит к значению максимальной точности, определенной реализацией. [...] Результаты двух оценок достигаются, как показано в Таблице 29.
  9. ^ Бержерон, RD; Ганнон, JD; Шектер, DP; Томпа, FW; Дам, A. Ван (1972). «Языки системного программирования». Advances in Computers . 12 : 175–284. doi :10.1016/s0065-2458(08)60510-0. ISBN 9780120121120.
  10. ^ Saltzer, JH; Kaashoek, Frans (2009). Принципы проектирования компьютерных систем: введение. Morgan Kaufmann. стр. 85. ISBN 978-0-12-374957-4.
  11. ^ Петроутсос, Эвангелос (2010). Освоение Microsoft Visual Basic 2010. Wiley. стр. 133. ISBN 978-0-470-53287-4.
  12. ^ Блох, Джошуа (2006). «Как разработать хороший API и почему это важно». Proceeding OOPSLA '06 Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications . Association for Computing Machinery. pp. 506–7. doi :10.1145/1176617.1176622. ISBN 1-59593-491-X. S2CID  27230400.
  13. ^ Вивиан (21.06.2013). "Сочетания клавиш для Gmail". Google Inc. Получено 27.07.2013 .
  14. ^ "Сочетания клавиш для YouTube - Справка YouTube". support.google.com . Получено 2022-08-16 .
  15. ^ "Использование сочетаний клавиш". Atlassian . Получено 27.07.2013 .
  16. ^ Кайзер, Г. (1 марта 2010 г.). «Microsoft: Не нажимайте клавишу F1 в Windows XP». Computerworld . Получено 10 ноября 2019 г. .
  17. ^ "Почему основание системы счисления для parseInt в JavaScript по умолчанию равно 8?". Stack Overflow . 8 апреля 2011 г.
  18. ^ "parseInt()", Mozilla Developer Network (MDN) , 15 марта 2024 г. Если входная строка начинается с "0" (нуля), предполагается, что основание системы счисления равно 8 (восьмеричное) или 10 (десятичное). Какой именно выбор основания зависит от реализации. ECMAScript 5 разъясняет, что следует использовать 10 (десятичное), но пока не все браузеры поддерживают это.
  19. ^ "Часто задаваемые вопросы по FreeBSD 2.X, 3.X и 4.X". FreeBSD. 2002-06-11 . Получено 2023-02-15 .

Внешние ссылки