Главная » Delphi » О пользовательских интерфейсах компьютерных программ

0

 

Крупнейший в мире специалист по компьютерным интерфейсам Джеф Рас- кин (Jef Raskin, 1943—2005 гг.) говорил примерно так (за точность цитаты не ручаюсь): "Пользователь обычно не понимает, насколько ему неудобно, механизм обратной связи от потребителя к производителю не работает, и единственное, что может заставить проектировщика создавать по- настоящему хороший интерфейс — это его совесть". Я не могу тут не остановиться на истории пользовательских интерфейсов, потому что непонимание, насколько неудобно работать с современными программами, к сожалению, характерно для программистов в еще большей степени, чем для пользователей. Невозможно делать удобные программы, если вы не очень хорошо представляете, с чем вам придется иметь дело.

Точкой роста почти всех идей, реализованных впоследствии в так называемом графическом интерфейсе пользователя (Graphic User Interface, GUI), стал Xerox Palo Alto Research Center (Xerox PARC), возникший на рубеже 60—70 годов. Любопытно, что одним из его основателей, а с сентября 1970 года— и руководителей, стал Боб Тейлор (Robert W. Taylor), который пришел в Xerox из DARPA, где в 1966—69 гг. возглавлял проект ARPAnet, предшественника Интернета. Одной из идей, родившихся в этом центре, была так называемая парадигма WIMP (Windows, Icons, Menus, Point-and-Click— "окна, пиктограммы. меню, укажи и щелкни"), которая переросла позже в концепцию GUI и продолжает эксплуатироваться в настоящее время. Эти разработки связывают с именем Алана Кея (Alan Key), также известного, как автора SmallTalk (первого объектно-ориентированного языка программирования). В 1975 году в Xerox была начата разработка нового проекта, закончившегося в апреле 1981 года представлением системы Xerox 8010 Professional Workstation, более известной под торговой маркой Xerox Star. Именно с нее и началось победное шествие GUI, внедрение которого, как промышленного стандарта, было произведено в 1988 году усилиями Sun Microsystems, Xerox и AT&T. Xerox Star мы также обязаны такими вещами, как иконки, окна, меню, двухбайтовые многоязычные шрифты (современный Unicode— см. главу 8), режим WYSIWYG и др. За подробностями я отсылаю читателя к [25], а здесь нам важно, что распущенный после рыночного провала Xerox Star примерно в 1983 году коллектив ее разработчиков в основном оказался в Apple— за важными исключениями, о которых поговорим отдельно.

В числе прочих инноваций в интерфейсе Star было впервые использовано представление экранного пространства в виде "рабочего стола" (Desktop). Эта метафора основывается на том, что пользователь якобы не имеет представления о существовании, скажем, программы под названием "текстовый редактор", а просто "открывает документ". Альтернативой является концепция "инструментов" (Tools) или "приложений" (Applications), где пользователь запускает нужный инструмент (приложение), и с его помощью открывает документ. причем тип его идентифицируется обычно по расширению имени файла. Ответственность за результат, например, загрузки файла, содержащего изображение, в текстовый редактор при этом целиком ложится на пользователя. Разработчики Star сознательно шли на потерю универсальности, присущую инструментальной модели, в то же время предупреждая об ограниченности сферы применимости метафоры "рабочего стола" исключительно офисными системами. (Дуглас Энгельбарт, изобретатель мышинного интерфейса, позднее иронизировал: "Весь мир был увлечен идеей "офисной автоматизации", будучи уверен, что "настоящие пользователи " компьютеров — это секретари, чьи задачи необходимо автоматизировать.")

В 1978 году упомянутый ранее Джеф Раскин работал в Apple, где начал новый проект под названием Macintosh, однако уже в 1982 г. разругался с Джобсом и покинул фирму. Впрочем, это неудивительно— ни один из его проектов так и не стал успешным в коммерческом смысле, притом что выдвинутые им теории обязательно изучают на всех соответствующих курсах в мире. Основная заслуга Раскина в том, что он одним из первых осознал: самое важное ментальное ограничение человека— ограниченность внимания. Фокус внимания у человека один. Интерфейсы, переключающие на себя внимание человека,— это одна из ключевых причин неэффективности взаимодействия с машинами.

Заметки на полях

Вот пример: когда мне диктуют телефонный номер, я хочу сразу записать его, пока он не вылетел из памяти. В типичной современной ОС для этого требуется запустить специальное приложение (по крайней мере, переключиться на него), после чего создать ноаый контакт (это же надо еще знать, что то, что вам нужно, называется именно "контактами", см. главу 16), найти на появившейся форме подходящее поле, вписать туда номер… Автор этих строк и в бумажной-то телефонной книжке не вел записи по алфавиту, предпочитая для ускорения записывать их "анааап", и сейчас фиксирует номера, адреса и прочие полезные сведения в маленькой программке в стиле картотеки из Windows Зх. И даже забросил ведение адресной книги в The Bat! — слишком много усилий приходится предпринимать для систематизации записей и извлечения оттуда нужного адреса, проще найти корреспондента через "Поиск".

Раскин выступил с радикальным предложением: отказаться от зоопарка разных приложений и заменить его на единую рабочую среду, которая всегда ведет себя одинаково. В такой среде, например, нажатие клавиш всегда приводило бы к вводу текста, поэтому человеку, желающему записать телефон, достаточно было бы просто его набрать. Разумеется, определить введенный номер в "правильное" место нужно было бы и в этой среде, но в ней это можно сделать после ввода номера, что принципиально удобнее. В результате Раскин придумал интерфейс, суть которого состоит в следующем: все, что хранится в компьютере, представляет собой единый документ, отдельные приложения — это команды и модули, запускаемые пользователем или подключающиеся автоматически. Причем все управление осуществляется с помощью клавиш — мыши Раскин не признавал, действительно, ведь для работы с текстом мышь в принципе не требуется, так зачем лишние сущности? Несмотря на понятные ограничения (а кроме инструментальной модели, предоставляющей пользователю полный доступ к "потрохам" системы, вплоть до ее перепрограммирования, любая другая модель является ограниченной и пригодной лишь в определенной области) эта система для тех, кто работает именно с документами, была бы. вероятно, более удобной. И в конце 80-х она даже была осуществлена на практике в компьютере Canon Cat, который разошелся в количестве 20 тыс. экземпляров, но затем проект был свернут.

Подход Раскина можно интерпретировать так: вся среда в компьютере есть одно универсальное приложение. Легко заметить, что черты этого подхода можно встретить, например, в MS Office, в попытках интегрировать все действия пользователя — или большинство их — в единую среду. Я не знаю, что могла бы представлять доведенная до логического завершения концепции Раскина (в Canon Cat был осуществлен фактически лишь текстовый редактор с функциями электронных таблиц), но есть сильное подозрение (основанное на практическом опыте), что ни один программист, даже такой корифей, как Джеф Раскин, не сумел бы сделать интегрированную среду во всех нюансах так, чтобы в ней было бы удобно работать всем без исключения.

Но вернемся к существующим интерфейсам. Для платформы PC (уже превратившейся к тому времени в Wintel) "рабочий стол" был реализован только спустя пятнадцать лет — с появлением Windows 95. Казалось бы, было время все продумать и учесть недоработки Xerox и Apple, но в Windows была предпринята эклектичная попытка сохранить все преимущества инструментальной модели, как наиболее гибкой, но рассчитанной на специально обученных пользователей, и в то же время склонить на свою сторону армию "чайников", обучаться не желающих или не имеющих возможности. В результате пророческие слова Раскина о том, что "пользователь обычно не понимает, насколько ему неудобно" относятся к Windows, как ни к чему другому. Буквально любое незнакомое действие в Windows, несмотря на все попытки унификации и стандартизации, требует от "чайника" консультаций с более продвинутым собратом по несчастью2. Непоследовательное использование Desktop- метафоры может приводить к просто катастрофическим последствиям: т. к. первичным признаком для отнесения файла к тому или иному типу в Windows по-прежнему служит расширение его имени, то при неправильном переименовании файл может быть просто потерян для непросвещенного пользователя. При попытке скрыть расширения, как это происходит по умолчанию в Windows, часто может возникать забавная ситуация, когда в одной папке оказываются несколько абсолютно одинаковых с виду значков, что приводит к недоразумениям — одно дело послать по электронной почте мно- гомегабайтиый TIFF, другое — компактный JPEG, а ведь все иконки, относящиеся к изображениям (если вы не зададите специально обратного), будут связаны с одним приложением, и потому и обозначатся одинаково.

Рискну предположить, что правильным решением всех этих проблем был бы выпуск множества относительно автономных модификаций одной и той же ОС с интерфейсами, "заточенными" под нужды бухгалтера, секретаря, технического писателя, ученого, фотохудожника, журналиста, ребенка, наконец, с возможностью установки их в любой комбинации и переключения между ними. Глядишь, и модель Раскина вполне тогда вписалась бы в коммерческие продукты, и любителям прыгающих по экрану кнопок или "скрепок- помощников" тоже было бы где развернуться…

Резюмируем то, что сказано ранее, попробовав сформулировать основную цель любого интерфейса — не только компьютерного. Подавляющее большинство действий совершается человеком бессознательно. Часть подобных действий человек умеет совершать от рождения, таких, как глотательные рефлексы или отдергивание руки от горячего предмета. Среди этих действий есть очень сложные программы поведения — например, половое поведение или стайные инстинкты. Другая часть— инстинкты и программы, приобретенные в процессе взросления и обучения, это навыки ходьбы, речи, письма и счета, или социальное поведение: стыдливость, способность к состраданию и т. п. Наконец, сравнительно небольшую часть действий составляют те, что контролируются сознанием. Однако именно эти действия требуют повышенного внимания, они человека, пользуясь расхожим выражением, "поглощают целиком". Ни один человек не может обдумывать две вещи сразу. Поэтому любое обучение всегда преследует одну и ту же цель — перевести некие действия в область бессознательного, сделать так,

чтобы они выполнялись автоматически. Именно на это направлены бесконечные тренировки спортсменов, балерин, специалистов по рукопашному бою, водителей автомобилей. Более того, на это также напраалены и процессы умственного обучения — студентов заставляют решать учебные задачи с тем, чтобы в процессе практической деятельности нужное решение находилось как бы "само", на основе приобретенного опыта.

Интерфейс GUI менее всего приспособлен к эффективному обучению. Производители затвердили словосочетание "интуитивно понятный" применительно к интерфейсам, как будто это вообще что-то означает — интуитивно понятным является только тот интерфейс, к которому вы привыкли, и он не заставляет вас задумываться над каждым телодвижением. Обратите внимание, как ловко подростки манипулируют предельно "неинтуитивным" интерфейсом мобильников, и вы поймете, что это совершенно пустое понятие. Интерфейс может и должен быть логичным — хотя и это, в общем, имеет значение только для удобства обучения, но уж к "интуитивности" точно не имеет никакого отношения. Является ли "интуитивно понятным" интерфейс управления автомобилем? Отнюдь нет— обратите внимание, скажем, что сцепление нужно нажимать, чтобы его выключить. Или: если вы замрете при ходьбе, то остановитесь, а если вы все бросите в процессе езды, то автомобиль вовсе не остановится, как можно было бы предположить, исходя из интуитивного представления. Но никто ведь не протестует, правда? Потому что в принципе неважно, какие именно действия нужно вызубрить, "заложить в подкорку" (на самом деле — скорее в мозжечок) — важно, чтобы они не требовали в дальнейшем напряжения сознвнпя. Если вы будете все время в процессе езды раздумывать над вопросом, какую педаль нужно нажать для снижения скорости — вряд ли вы вернетесь из поездки живыми.

А вот для существующего WIMP-интерфейса вызубрить действия даже в одной отдельно взятой программе нельзя. Кажущаяся простота действий при указании мышыо пункта меню на самом деле оборачивается тем, что это действие невозможно автоматизировать — сам процесс таков, что требует полного переключения внимания. Нужно найти это меню зрительно, направить на него мышь, щелкнуть, потом найти нужный подпункт— все это настоящая полноценная задача, требующая обдумывания, занимающая сознание целиком, как требует обдумывания вопрос, куда именно направить автомобиль при движении. Но направление движения — это и есть настоящая цель управления автомобилем, а выбор пункта меню — вовсе нет. Отличный пример на эту тему приводит известный программист Михаил Донской: "Такой интерфейсный элемент, как линейка прокрутки, находится а противоречии с одним из основных принципов психологии восприятия: у человека может быть только одна точка активного внимания. При использовании же линейки прокрутки приходится смотреть в две совершенно различные точки— на прокручиваемое изображение (не пора ли остановиться?) и на линейку. Всем знакомые неприятности с непопаданием

мышыо в нужную точку при прокрутке in и с соскакиванием курсора мыши с линейки — очевидное следствие вышеуказанного пропчшоречии."

Наглядность Windows, которая так привлекает начинающих, и сравнении с интерфейсом командной строки, оборачивается тем. что они и в дальнейшем вынуждены тратить огромное количество времени на обдумывание действий, которые в принципе никакого обдумывания не требуют. Это все равно, как если бы педаль тормоза в автомобиле каждый раз оказывалась на новом месте и ее нужно было бы искать, например, но тому, что на ней имеется табличка: "тормоз". Задача программиста— сделать таким образом, чтобы в идеале каждое действие можно было бы выполнять автоматически, "спинным мозгом", сосредоточившись именно на целевой задаче, а не над тем, в каком углу экрана в данный момент находится меню, и каким щелчком мыши — двойным или одинарным — оно в этой программе вызывается. Означает ли это, что надо вернуться к интерфейсу командной строки? Вовсе нет, нужно только четко себе представлять, что запомнить раз н навсегда последовательность нажатия двух-трех клавиш в конечном итоге намного проще, чем каждый раз целиться в меню. А использовать при этом WIMP, инструментально-командную модель, метафоры "рабочего стола", "вселенной" или что-то другое — это уже дело, в принципе, десятое. Главное не забывать, для чего все это делается вообще.

Источник: Ревнч Ю. В.  Нестандартные приемы программирования на Delphi. — СПб.: БХВ-Петербург, 2005. — 560 е.: ил.

По теме:

  • Комментарии