Последовательные иерархические меню
Наконец где'то в конце 70'х годов некоторым очень смышленым про' граммистам пришла в голову идея предложить пользователю список возможных вариантов на выбор. Такой список можно было бы читать и выбирать из него пункты, как блюда из ресторанного меню. Назва' ние прижилось – и так началась эра последовательных иерархиче- ских меню.
Последовательные иерархические меню позволяли пользователям за' быть большую часть команд и параметров, требуемых интерфейсом командной строки. Вместо того чтобы постоянно удерживать в голове
всю необходимую информацию, пользователь мог получать ее с экра' на. Еще одно чудо! В районе 1979 года удобство вашей программы оце' нивалось по наличию в ней меню. Производителям программного обеспечения, застрявшим в мире командной строки, пришлось подви' нуться на обочину, уступая дорогу более современной парадигме.
Хотя в то время парадигму и называли меню, мы называем меню того времени последовательными и иерархическими, чтобы отличать их от современных меню. До появления графического пользовательского интерфейса меню имели очень глубокую иерархию: выбрав пункт од' ного меню, пользователь получал другое, затем еще одно, и еще, опус' каясь все ниже и ниже по иерархическому дереву команд.
Учитывая, что на экране в каждый конкретный момент времени могла быть выведена только одна страница меню, а программное обеспече' ние в то время все еще в значительной степени следовало традициям пакетного стиля вычислений больших ЭВМ, парадигма иерархиче' ских меню предполагала последовательное их отображение. Сначала перед пользователем выводилось меню верхнего уровня, из которого он мог выбрать одну из основных функций, например:
1. Ввести транзакцию
2. Закрыть данные за месяц
3. Напечатать отчет о доходах
4. Напечатать балансовую ведомость
5. Выйти
Когда пользователь выбирал одну из функций, например Ввести тран– закцию, открывалось другое меню, которое учитывало его предыдущий выбор, например:
1. Внести счета
2. Внести оплату
3. Внести поправки к счетам
4. Внести поправки к оплате
5. Выйти
Выбрав из этого списка, пользователь обычно получал еще пару подоб' ных меню, прежде чем появлялась возможность приступить непосред' ственно к выполнению работы. Пункт Выйти перемещал его на один уровень иерархии вверх. В результате навигация по меню превраща' лась в самую настоящую каторгу.
Сделав выбор, пользователь не имел возможности от него отказаться. Разумеется, люди постоянно совершали ошибки, так что наиболее прогрессивные разработчики того времени добавили меню с подтвер' ждениями. Программа принимала выбор пользователя, как и раньше, но затем выводила еще одно меню: «Чтобы изменить ваш выбор, на' жмите клавишу Escape, чтобы продолжить, нажмите клавишу Enter». Это стало настоящей головной болью, потому что независимо от того, сделали вы ошибку или нет, вы были обязаны дать ответ на этот неук'
люжий и обескураживающий вопрос, что само по себе могло привести к появлению той самой ошибки, которой вы надеялись избежать.
По сегодняшним стандартам такие меню были бы оценены как кош' марные. Их главный недостаток состоял в том, что даже при ограни' ченном наборе команд иерархии становились довольно глубокими. Им категорически недоставало гибкости и прозрачности в общении с чело' веком. И все же такие меню были лучше командной строки, где прихо' дилось запоминать не всегда простой синтаксис команд, а также точ' ное написание каждого операнда. Последовательные иерархические меню снизили нагрузку на память пользователей, но вынудили их плутать по лабиринтам бестолковых вариантов выбора и параметров. Эти меню должны были уступить место чему'то более совершенному. (Кстати, чтобы обнаружить современные устройства и информацион' ные киоски, построенные на этой древней идиоме, далеко ходить не надо – возьмите хоть банкоматы.)
Интерфейс Lotus 1−2−3
Следующее серьезное усовершенствование в технологии пользователь' ского интерфейса было сделано корпорацией Lotus в 1979 году в ее оригинальной электронной таблице 1'2'3. Эта программа по'прежне' му управлялась многоуровневыми иерархическими меню, но Lotus до' бавила кое'что свое – видимые иерархические меню.Именно эти ме' ню сделали продукт самым успешным приложением того времени.
В 1979 году на экране компьютера могло уместиться ровно 2000 сим' волов (рис. 22.1): 25 строк по 80 символов в каждой. Меню в 1'2'3 рас' полагалось горизонтально в верхней части экрана и занимало всего две строки из 25 имеющихся. Это означало, что меню могло сосущест' вовать на экране вместе с самой электронной таблицей. В отличие от прежних программ, имевших иерархическое меню, здесь пользова' тель не был вынужден покидать основной экран, чтобы увидеть меню. Он мог выполнять команды меню, не прерывая работу в программе.
Рис. 22.1. В электронной таблице Lotus 1-2-3, увидевшей свет в 1979 году, появилась новая примечательная структура меню, позволявшая в рамках одного экрана сосуществовать меню с рабочей областью. Другие программы того времени, работавшие на основе меню, вынуждали пользователя остав- лять рабочий экран, чтобы сделать выбор из меню
Lotus применяла новую идиому крайне энергично и создала структуру иерархических меню невероятных размеров. Дерево меню содержало десятки разделов и сотни пунктов. Пользователь мог найти любой пункт меню, взглянув на верхние строки экрана и перемещаясь вверх или вниз к требуемому пункту. Программа различала операции ввода данных для электронной таблицы и ввода команды меню по нажатию клавиши обратной косой черты (\). Если пользователь набирал этот символ, все последующие нажатия клавиш воспринимались как ввод команды меню, а не как данные. Чтобы выбрать пункт меню, доста' точно было прочитать его и ввести первый символ названия этого пункта, предварив его символом обратной косой черты. После этого подменю замещало главное меню в верхней строке.
Опытные пользователи быстро обнаружили, что такие шаблоны легко запоминаются и необходимость в чтении меню отпадает. Они могли просто набрать \–s, чтобы сохранить данные на диск, или \–c–g–x, что' бы сложить числа в столбце. По сути, они вообще могли обходиться без меню. Они становились опытными пользователями, запоминая ко' мандные последовательности символов и радуясь своим знаниям о ма' лопонятных функциях.
Сегодня такой подход может показаться наивным, но он иллюстриру' ет очень важный момент: хороший пользовательский интерфейс дает пользователям возможность постепенно наращивать свой опыт, пре' вращаясь из новичков в экспертов. Опытный пользователь 1'2'3 мог до тонкостей знать пару десятков функций и вместе с тем ничего не знать о множестве других. Запомнив определенную командную после' довательность, он мог далее постоянно использовать ее в своей работе. Реже используемые функции, командные последовательности для ко' торых не отложились в памяти, он мог найти, читая текст меню. Далее в этой главе мы более подробно обсудим важность меню как средства обнаружения и изучения функций приложения.
Однако иерархические меню в 1'2'3 были ужасно сложными. Команд было просто'напросто слишком много, и каждую из них требовалось запихать в единую иерархическую структуру меню. Разработчики про' граммы лезли из кожи вон, пытаясь выдумать логические связи между функциями в попытках оправдать распределение команд в иерархии. В горячке небывалого успеха и господства на рынке на такие вещи мало кто обращал внимание.
Как и следовало ожидать, вследствие небывалого успеха программы 1'2'3 имитации ее интерфейса получили в середине 80'х большое рас' пространение. Постоянно видимые иерархические меню нашли свое место во множестве приложений, но в действительности эта идиома была последним вздохом символьного интерфейса – точно так же, как в конце 40'х годов большие, отлично сконструированные паровые ло' комотивы стали последним и самым совершенным монументом обре' ченной технологии. Подобно тому, как дизельные локомотивы полно'
стью вытеснили паровую тягу в течение десятилетия, графический пользовательский интерфейс всего за несколько лет вытеснил иерар' хические меню в стиле 1'2'3.