Алан Купер об интеллектуальных интерфейсах

Аватар пользователя ivan.albert
Опубликовано пн, 07/06/2015 - 03:43 пользователем ivan.albert

Графический интерфейс и командную строку часто противопоставляют одно - другому. Причем то, что поклонники GUI считают достоинствами, в глазах любителей CLI — недостаток. И на оборот ,GUI — самодокументированный интерфейс.   Всё это изобилие кнопочек и значков превращается в раздражающий визуальный шум и мешает работать. А скорость? Разве может сравниться хождение по многоуровневым  меню  со стремительностью клавиатурных команд?»  Стремительность ?   — А изучать руководство на сотни страниц мелким шрифтом, чтобы выйти из   Vim-а, это тоже стремительно?»

Этот спор можно растянуть еще , но лучше подумать вот о чем: так ли   необходимо терпеть недостатки каждого из интерфейсов? Нельзя ли быстро запрягать и так же быстро ехать? Ведь сторонники GUI на самом деле любят не кнопочки и разноцветные значки, они любят легкость обучения. Шедевры  графического интерфейс - строения всегда легки и лаконичны, в них не встретишь буйства красок и россыпей кнопок. А любители командной строки привязаны не к монохромному аскетизму, а к скорости, ненавязчивости и предсказуемости консоли. Достаточно взглянуть на обилие цветовых схем подсветки синтаксиса того же Vim, чтобы убедиться в том, что суровые консольщики тоже любят, чтобы было красиво.

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

Сделать нормальный GUI на порядок труднее, чем CLI. Причем это не просто более трудоемкий процесс — он требует совершенно других знаний, опыта и склада ума, чем те, что присущи программисту. Именно поэтому странные и непривычные параметры командной строки обычно вызывают лишь легкое недоумение, а вот некоторые GUI способны довести до белого каления. Требования к графическому интерфейсу — выразительнейший пример взаимоисключающих параграфов. Всё должно быть на виду, и доступно по первому щелчку мыши — и не должно быть видно ничего лишнего в контексте текущей задачи. Приходится подключать клавиатуру, и тут же исчезает главное преимущество GUI — легкость освоения. Попробуй запомни все эти Ctrl+Alt+Shift штучки!

Командная строка просто разрубает это гордиев узел, даже не пытаясь распутывать. Юзабилити CLI — величина практически постоянная для любой программы. Почти невозможно сделать невыразимо ужасными и запутанными клавиатурные команды. Но и достичь каких-то небывалых высот тоже не получится.

Ключ к проектированию хорошего интерфейса — повторное использование кода. Не только программного, но и генетического. Эту истину хорошо усвоили проектировщики физических интерфейсов — они придают предметам совместимую с человеком форму. Рукоятки, удобно ложащиеся в ладонь, индикаторы на уровне глаз, педали с четко выверенным усилием нажатия активно используют выработанные нами за миллионы лет эволюции «библиотеки» для взаимодействия с объектами реального мира. Это делает интерфейс интуитивно понятным.

Но наш мозг не так прост! Кроме низкоуровневых «драйверов» рук, ног или глаз, у нас в голове есть гораздо более сложные программы для общения с другими живыми существами. И они ничего не знают ни о каких компьютерах. Так как в природе никогда не существовало неодушевленных предметов, обладающих сложным поведением, наши генетические библиотеки считают компьютер живым существом. Это очень важный факт для проектирования интерфейса. Живые организмы фундаментально отличаются от неодушевленных предметов. У них не может быть кнопок и рычагов. Они не позволяют настраивать себя, но они способны адаптироваться, они проявляют инициативу, они реагируют на эмоции.

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

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

Живые программы — очень мощная метафора. Взаимодействие человека с программой — это общение двух живых существ. Каждая программа — это слуга, или подчиненный, или консультант.  Живые существа, с которыми приятно общаться, ведут себя вежливо и разумно. Они в меру самостоятельны, они интересуются нами — запоминают предпочтения, приспосабливаются к нашим привычкам. Эх, как же мало таких программ… Гораздо чаще они хамят, грубят и тупят.

Как сделать поведение программы более похожим на поведение живого существа? Если речь идет о GUI, то нужна изрядная чистка. Животные и люди не похожи на приборную панель самолета. У них всего несколько  индикаторов  и  органов управления  — уши, глаза, руки ,лапы  мимика, поза, жесты, речь. Зато они универсальны и гораздо более информативны.

С командной строкой — все наоборот. Она поддерживает словесное общение (правда обычно это какой-то убогий жаргон из букв, знаков препинания и обрывков слов, в стиле Эллочки-людоедки), а вот визуальных подсказок — аналога невербального общения — нет.

Обе разновидности интерфейсов одинаково плохо адаптируются к конкретному человеку. Команды не могут меняться со временем, сокращаясь и подстраиваясь под наиболее частые действия — ведь их тогда придется заново учить. Так же и графический интерфейс — форма, размеры и расположение элементов заданы жестко, фиксированы. Есть, конечно, возможность поменять настройки, но это абсолютно противоестественно при общении с живым существом — всё равно, что вскрыть человека скальпелем и поменять местами руки.

Итак, пора представить обещанные программы с интерфейсом, сочетающим несочетаемое, тихим и незаметным, как командная строка, простым в освоении и симпатичным, как хороший GUI, и гибким, как живое существо. Это  запускалки — Gnome do под Ubuntu, Launchy под Windows, Quicksilver под Mac OS.   Мы совершенно не понимаем, почему до сих пор подобные интерфейсы не применяются везде, где только можно. Сейчас подробнее о Gnome do:

Этот  маленький зверек   сидит в памяти и ждет, пока я его не позову условным свистом — win-space. Он всегда появляется посреди экрана и смотрит на меня умными квадратными глазами, ожидая команды. С первой же набранной буквы он старается угадать, чего я хочу, выводя список программ, папок и файлов, имена которых содержат введенные символы, а в его глазах отражаются иконки или миниатюры объектов, которые стоят в начале списка. При этом он помнит мои предыдущие действия. При установке Оперы, для её запуска приходилось набирать «oper», потому, что в ответ на «o», «op» и «ope» он предполагал «Open Ofiice Writer». Но он быстро учится. И всего через пару дней стал предлагать Оперу с первой буквы.  Знакомые логотипы хорошо видны, даже если смотреть мимо монитора.   Запуская основные приложения и открывая часто используемые папки и документы, не отрывая рук от клавиатуры, в отличие от команд консоли,   редко приходится набирать больше трех — четырех букв.

Gnome do полностью заменяет главное меню и ярлыки приложений, частично — файловый менеджер. Для начала работы необходимо запомнить ровно одно сочетание клавиш. А если еще приучиться пользоваться Tab-ом, то Gnome do может практически все.

Что мешает встроить такую же штуку в любое сложное приложение с кучей функций? Зачем всё время держать на виду десятки меню, кнопок и ползунков? 
Еще хуже ситуация в Интернете. Здесь о существовании клавиатуры почти забыли. Возможно, изрядная доля ностальгии фидошников по старым добрым временам на самом деле связана с текстовым режимом. Сейчас любой большой и зрелый сайт содержит сотни разделов, категорий и прочих закоулков, сквозь которые приходится продираться исключительно мышкой. Лишь иногда заботливый веб-дизайнер приспособит какие-нибудь Ctrl-стрелочки для листания галереи с картинками. Ну и плюс строка поиска по сайту (в которую всё равно надо целиться мышкой). Чтобы добиться заветных трех щелчков между любыми двумя страницами, разные уровни меню ставят и сверху, и снизу, и сбоку, и с другого боку, а потом присыпают хлебными крошками, чтобы уж наверняка.

Не удается  найти ни одного сайта, где была бы возможна полноценная навигация без мыши. Переключаться Tab-ом между несколькими десятками или, чаще, сотнями активных элементов на странице — издевательство над человеком. «Живой» поиск по сайту во время набора посредством AJAX — издевательство над сервером (и вполне ощутимые тормоза). Чтобы хотя бы попробовать, как работается с сайтом через интерфейс, подобный Gnome do, мне пришлось сделать такой интерфейс самому. Собственные впечатления и отзывы других специалистов  — самые положительные. Вот демонстрационный сайт, где можно все пощупать вживую. Очень необычные ощущения — свободно перемещаться по сайту, не прикасаясь к мышке!

Еще один приятный пример «живого» интерфейса — Aardvark. Это сервис вопросов и ответов  отличие от ask.com и других,  чаще отвечают, чем спрашивают. А все потому, что он выглядит не как разноцветная веб-страница с кучей ссылочек и кнопочек, а как один из контактов в google talk.  Подсознание не видит разницы между человеком в контакт-листе и роботом. Генетическая программа поддерживает этот интерфейс.

Вообще — хорошего интерфейса не видно и не слышно, пока он не нужен (в отличие от GUI), и он понимает вас с полуслова (в отличие от командной строки). 

Создать такой интерфейс  сложно. Но эта сложность окупится. Людям будет легко c ним. Сейчас бурно развиваются невербальные интерфейсы — multi touch screen, распознавание лиц и жестов. Кажется, что у командной строки нет будущего в массовых устройствах — в них и клавиатуры-то часто нет. Но ведь рано или поздно компьютеры научатся уверенно распознавать живую речь, преобразуя поток фонем в поток символов. А не всё ли равно, откуда поступает этот поток — с клавиатуры или модуля распознавания речи? Та же самая командная строка. Да и речь, и жесты, и мимика после распознавания образов превращаются в символы или слова.

Сегодняшние интерфейсы воспринимают любые сигналы, как команды, подобно примитивным безусловным рефлексам. Конечно, это обеспечивает абсолютный контроль, но зато сильно ограничивает возможности. Даже самые скромные попытки «угадать» смысл поступающих сигналов, хотя бы с помощью примитивного регулярного выражения для нечеткого поиска очень ощутимо улучшают взаимодействие с программой. Например, одна из самых удобных и полезных функций IDE и продвинутых текстовых редакторов — возможность мгновенно перейти к любому файлу проекта, набрав несколько букв его имени (Go to file, Go to resource, FuzzyFinder и т.д.) В том же направлении идет и Google с его живым поиском. То же самое делает и Gnome do. Человек не должен подстраиваться под компьютер, зубрить его команды, привыкать к его глюкам и учиться метко целиться в мелкие кнопочки. Это компьютеры должен приспосабливаться к человеку, изучать его привычки и исправлять его опечатки. И если они научится делать это хорошо, то может быть и тесты Тьюринга будут щелкать, как орешки? Впрочем, по данным Google, они уже вовсю пытаются:

Интерфейс Google