Интерфейс.Новые направления в проектировании компьютерных систем

       

Терминология и условные обозначения


Мир делится на людей, которые думают, что они правы.
Дидр Мак-Грат

Содержание (или контент)— это информация, которая находится в компьютере или другом устройстве, предназначенном для обработки информации, и которая является для вас осмысленной и полезной. Создание или изменение содержания — это та задача, которую вы предполагаете выполнить с помощью упомянутого устройства. Если вы писатель, содержание — это те ваши произведения, которые хранятся в системе. Если вы художник, ваши рисунки представляют собой содержание системы. Сама система — компьютер, а также меню, пиктограммы и другие его принадлежности — не является содержанием, если только вы не программист и не разработчик интерфейсов. Теперь мы можем перефразировать первый закон робототехники Азимова (см. главу 1) в терминах содержания: «Никакая система не может причинить вред содержанию или своим бездействием допустить, чтобы содержанию был причинен вред».

Графическое устройство ввода (ГУВ) — это механизм для передачи системе информации об определенном местоположении или выборе объекта на экране монитора. В качестве примера типичного ГУВ можно привести мышь, трэкбол, световое перо, планшетный карандаш (tablet pen), джойстик или тачпад. Под кнопкой ГУВ будет подразумеваться основная кнопка любого ГУВ, например левая кнопка двухкнопочной мыши. Как правило, графическое устройство ввода используется для управления местоположением курсора, который представлен на экране монитора в виде стрелки или другого значка, являющегося системной интерпретацией указываемого вами места. Поскольку в конкретный момент мы можем направить свое внимание только на один курсор, система не должна отображать более одного курсора для каждого имеющегося графического устройства ввода. В приложении А приведено обоснование тому, почему у мыши должна быть только одна кнопка.

Одно нажатие и отпускание клавиши или переключателя без каких-либо промежуточных действий мы будем называть нажатием (tap).
Этот термин относится только к клавишам на клавиатуре или другим контактным переключателям без фиксации, которые при отпускании автоматически возвращаются в исходное положение и электрическое состояние. Щелкнуть (click) означает расположить курсор в определенном месте, а затем нажать и отпустить кнопку ГУВ. Таким образом, выражение «щелкните на слове аллигатор» означает, что вам требуется навести курсор на слово аллигатор и затем, не меняя позицию курсора, нажать кнопку ГУВ и отпустить ее. Перетащить (drag) означает нажать кнопку ГУВ в одном местоположении курсора, переместить его в другое место и уже затем отпустить кнопку. Это действие еще иногда называется щелкнуть и перетащить (click and drag). Дважды щелкнуть (double click) означает расположить курсор в определенном месте, а затем два раза быстро нажать кнопку ГУВ без промежуточного движения или какого-либо другого действия. (На практике небольшое движение допустимо — обычно ГУВ слегка смещается в момент нажатия кнопки.) В некоторых интерфейсах применялись тройные щелчки, а также щелчки с еще большим количеством нажатий.


Существуют различные варианты обозначений для комбинаций клавиш, используемых при управлении большей частью программного обеспечения. Например, нажатие клавиши <Ctrl> и, при ее удерживании, нажатие и удерживание клавиши <Shift> и затем, при нажатом положении обеих этих клавиш, нажатие клавиши с буквой t часто обозначается в руководствах как <Ctrl>-<Shift>-<t> или <Ctrl>+<Shift>+<t>. Однако эти обозначения операций с клавишами нельзя отличить от условных обозначений последовательностей действий Control, дефис, Shift, дефис, t или Control, плюс, Shift, плюс, t соответственно. Такая двусмысленность может приводить к ошибкам. Например, когда я работал над рукописью этой книги, мне понадобилось посмотреть, какая комбинация клавиш применяется для выполнения необходимой мне команды. В руководстве было указано (в конце предложения) Control+. Поэтому я нажал <Ctrl> и затем, удерживая эту клавишу, ввел знак «плюс».


Из-за двусмысленного обозначения в руководстве я сделал ошибку. На самом деле требовалось при нажатой клавише <Ctrl> нажать клавишу со знаком точки. Кроме того, эти обозначения не дают возможности отразить такие действия, как, например, одновременное нажатие и удерживание клавиш <Ctrl> и <Shift> с последующим вводом нескольких алфавитных символов, причем клавиша <Shift> отпускается после ввода первых двух символов, а <Ctrl> остается нажатой. Альтернативный вариант, который я только что использовал, — выражение операций обычным языком, что хотя и понятно, но довольно громоздко. Чтобы обозначать операции с клавишами точно и кратко, я использую символ стрелки, указывающей вниз, сразу после названия клавиши, на которую требуется нажать и удерживать в нажатом состоянии, — например, Shift↓ означает, что необходимо нажать и удерживать клавишу <Shift>. Символ стрелки, указывающей вверх, после названия клавиши показывает, что эту клавишу следует отпустить, — например Shift↑. Нажатие одной клавиши, скажем, клавиши <t>, может быть точно обозначено с помощью записи t↓t↑. Запись нажатия одной клавиши можно сократить до t↓↑ или просто до t, если это не вызывает двусмысленности и не может привести к путанице. Между отдельными действиями, которые следуют друг за другом, ставится пробел. Нажатие клавиши пробела обозначается словом Пробел Это обозначение невозможно перепутать с набором слова пробел (space), потому что последовательность символов этого слова, вводимая с клавиатуры, будет записываться буквами, разделенными пробелами, а именно: п р о б е л Когда есть риск неверного истолкования или необходимо сделать акцент на каждом отдельном действии, я применяю полную запись: п↓ п↑ р↓ р↑ о↓ о↑ б↓ б↑ е↓ е↑ л↓ л↑ Любые комбинации клавиш могут быть линейно представлены в этой системе записи. Например, нажатие и удерживание клавиши <Shift>, затем нажатие клавиши <n>, после этого нажатие и удерживание клавиши <Ctrl> при все еще нажатой клавише <Shift>, затем нажатие клавиши <k>, отпускание клавиши <Shift> при все еще нажатой клавише <Ctrl>, затем нажатие клавиши <w> и после этого отпускание клавиши <Ctrl> записывается следующим образом: Shift↓ n Control↓ k Shift↑ w Control↑ При условии, что порядок отпускания клавиш не имеет значения для работы интерфейса, отпускание любой из нажатых клавиш обозначается стрелкой вверх для каждой отдельной клавиши.


Таким образом, набор слова пробел будет записываться так: п↓↑ р↓↑ о↓↑ б↓↑ е↓↑ л↓↑ Приведем еще один полезный пример. Чтобы восстановить исходное состояние ОЗУ на компьютере Macintosh, должна быть выполнена следующая последовательность команд: Command↓ Control↓ Power↓ ↑↑↑ Command↓ Option↓ p↓ r↓ Все клавиши требуется удерживать до тех пор, пока не зазвучит сигнал, после чего: ↑↑↑↑ (Выражаясь обычным языком: нажмите и удерживайте клавишу <Command> — отсутствие стрелки вверх означает, что клавишу не следует отпускать сразу же. Затем нажмите и удерживайте клавишу <Ctrl>. Здесь также нет стрелки вверх, поэтому следует, удерживая обе эти клавиши одновременно, нажать клавишу <Power>. Ни одной стрелки вверх еще не было, так что сейчас вы удерживаете сразу три клавиши. Последующие три стрелки вверх означают, что требуется отпустить все три клавиши в любом порядке или одновременно. Затем, как следует из записи, вам необходимо нажать, не отпуская, клавишу <Command>, затем нажать, не отпуская, клавишу <Option>, затем нажать, не отпуская, клавишу <p>, после чего нажать и удерживать клавишу <r>, так что, в конце концов, вы будете удерживать в нажатом положении четыре клавиши одновременно. Это следует делать до звукового сигнала, после чего все четыре клавиши следует отпустить.) Если при наборе последовательности имеет значение время, то об этом должно быть сказано в примечании. Например, для набора одной буквы t запись будет следующей: t↓ t↑ Однако при использовании большинства клавиатур, если между t↓ и t↑ происходит задержка длительностью более 500 мс, на экране приблизительно каждые 100 мс станут появляться еще символы t. Эта функция обычно называется автоповтором. Задержки, в том числе и те, которые запускают автоповтор, часто создают проблемы в работе интерфейсов. Использование задержек в интерфейсах, а также улучшение механизма автоповтора будут обсуждаться далее в разделе 6.4.5.

Содержание раздела