
- •1. Передумови
- •1.1. Визначення інтерфейсу
- •1.2. Простої повинне залишатися простим
- •1.3. Орієнтація на людину і на користувача
- •1.4. Інструменти, що перешкоджають новим ідеям
- •1.5. Розробка інтерфейсу як частина загального циклу розробки
- •1.6. Визначення человекоориентированного інтерфейсу
- •2. Когнетика і локус уваги
- •2.1. Ергономіка і когнетика: що ми можемо і чого не можемо
- •2.2. Когнітивне свідоме і когнітивне несвідоме
- •2.3. Локус уваги
- •2.3.1. Формування звичок
- •2.3.2. Одночасне виконання задач
- •2.3.3. Сингулярность локусу уваги
- •2.3.4. Джерела локусу уваги
- •2.3.5. Експлуатація єдиного локусу уваги
- •2.3.6. Поновлення перерваної роботи
- •3.2. Режими
- •3.2.1. Визначення режимів
- •3.2.2. Режими, користувальницькі настроювання і тимчасові режими
- •3.2.3. Режими і квазирежимы
- •3.3. Моделі "іменник-дієслово" і "дієслово-іменник"
- •3.4. Видимість і заможність
- •3.5. Монотонність
- •3.6. Міф про дихотомію "новачок-експерт"
- •4.2. Модель швидкості печатки goms
- •4.2.1. Тимчасові інтервали в інтерфейсі
- •4.2.2. Розрахунки по моделі goms
- •4.2.3. Приклади розрахунків по моделі goms
- •4.2.3.1. Інтерфейс для Хола: варіант 1. Діалогове вікно
- •4.2.3.3. Інтерфейс для Хола: варіант 2
- •4.3.1. Продуктивність інтерфейсу для Хола
- •4.3.2. Інші рішення інтерфейсу для Хола
- •4.4. Закон Фитса і закон Хика
- •4.4.1. Закон Фитса
- •4.4.2. Закон Хика
- •5.1. Уніфікація й елементарні дії
- •5.2. Каталог елементарних дій
- •5.2.1. Підсвічування, вказівка і виділення
- •5.2.2. Команди
- •5.2.3. Екранні стани об'єктів
- •5.3. Імена файлів і файлові структури
- •5.4. Пошук рядків і механізми пошуку
- •5.4.1. Роздільники в шаблоні пошуку
- •5.4.2. Одиниці взаємодії
- •5.5. Форма курсору і методи виділення
- •5.7. Ліквідація додатків
- •5.8. Команди і трансформатори
- •6.1. Інтуїтивні і природні інтерфейси
- •6.2. Поліпшена навігація: ZoomWorld
- •6.3. Піктограми
- •6.4. Способи і засоби допомоги в человекоориентированных інтерфейсах
- •6.4.1. Вирізувати і вставити
- •6.4.2. Повідомлення користувачу
- •6.4.3. Спрощення входу в систему
- •6.4.4. Автоповтор і інші прийоми роботи з клавіатурою
- •6.5. Лист від одного користувача
- •7.1.2. Важливість ведення документації при створенні програм
- •7.2. Режими і кабелі
- •7.3. Етика і керування розробкою інтерфейсів
5.4. Пошук рядків і механізми пошуку
Маленький крок великого людства.
Нейл Армстронг (1969)
Перш ніж продовжити розгляд функції LEAP, має сенс розглянути трохи більш докладно питання використання інтерфейсів для пошуку. Рядком (strіng) називається послідовність33 символів. Звичайні англійські слова і пропозиції є прикладами рядків. При пошуку по рядку (strіng search) відбувається перегляд (звичайно довгої) послідовності, називаної текстом, з метою виявлення (звичайно короткої) послідовності, зазначеної користувачем і називаної шаблоном (pattern). Кожен випадок збігу між подстрокой тексту і заданою комбінацією називається об'єктом пошуку (target). Наприклад, при спробі знайти у великому листі місце, де ви писали про кішку по кличці "маленька Татсу", найбільш придатним об'єктом пошуку буде маленька Татсу, а ще більш короткий рядок Татсу буде гарним шаблоном. Збіг може бути повним, може залежати від регістра чи символів від інших параметрів (наприклад, відповідність може бути по римі). Найбільш розповсюджений критерій пошуку, по якому легко шукати, полягає в тім, що малі літери в комбінації, що задається, відповідають як рядковим, так і прописним буквам у тексті, тоді як прописні букви в комбінації, що задається, відповідають тільки прописним буквам у тексті. Звичайно пошук починається від поточної позиції курсору і здійснюється вперед. У більшості систем за допомогою модальних користувальницьких установок можна зробити пошук у зворотному напрямку (мал. 5.3).
Рис. 5.3. Модальне діалогове вікно з модальними настроюваннями типу і напрямку пошуку
Інтерфейси до засобів пошуку звичайно будуються на основі двох підходів. Найбільш розповсюдженим є пошук з роздільниками (delіmіted search), що зустрічається в більшості текстових процесорів. У типовому пошуку з роздільниками користувач включає режим, у якому будь-який уведений текст розглядається як шаблон для пошуку. Звичайно для цього використовується діалогове вікно, постачене полем для введення символів. Після виклику діалогового вікна користувач уводить комбінацію символів і роздільник, у якості якого звичайно використовується деякий символ, заборонений до відображення в шаблоні (наприклад, Return). У більшості діалогових вікон користувач також може обмежити шаблон натисканням на кнопку OK, Search, Fіnd чи Fіnd Next за допомогою ГУВ. Коли об'єкт пошуку виявлений, він вибирається, а курсор розташовується відразу наприкінці вибірки.
Цей традиційний метод є досить злощасним для користувача, хоча більшість компьютерщиков настільки звикли до цього, що вже не зауважують ніякої незручності. Наприклад, користувач може ввести послідовність для пошуку з помилкою, але помітити її занадто пізно, тому що він уже натиснув по звичці клавішу <Return>. Тому йому доведеться сидіти і чекати, поки закінчиться пошук, що, як уже заздалегідь відомо, не дасть результату. Більшість систем пошуку є що неперериваються, і це є серйозною помилкою розроблювачів. Через те, що комп'ютер чекає, поки користувач закінчить уведення шаблона, по якому почнеться пошук, пошук з роздільниками часто змушує користувача чекати без необхідності.
Менш розповсюдженим методом є покроковий пошук (іncremental search), відомий приклад якого можна побачити в текстовому редакторі EMACS, що працює під операційною системою UNІ (Stallman, 1993). У більшості випадків використання покрокового пошуку, так само як і при пошуку з роздільниками, користувач повинний спочатку викликати діалогове вікно, у якому мається поле для введення шаблона пошуку. Коли користувач уводить перший символ шаблона, система використовує цей символ як повний шаблон і відразу ж починає пошук першого екземпляра цього символу в обраному напрямку. Якщо екземпляр цього першого символу виявляється до того, як уведений наступний символ шаблона, то він вибирається, а курсор міститься відразу наприкінці вибірки. Якщо ж наступний символ шаблона вводиться до того, як екземпляр виявляється, то цей символ додається до шаблона і пошук продовжується тепер вже у відношенні екземпляра розширеного шаблона. Процес повторюється в міру додавання символів до шаблона пошуку.
При використанні клавіші <Backspace> чи <Delete> для видалення символів із шаблона покрокового пошуку пошук повертається до попереднього екземпляру, знайденому по тім шаблоні, що був до додавання до нього наступного символу. Користувач може потім додати символи до шаблона, щоб продовжити пошук без скидання результатів уже виконаного пошуку по неповному шаблоні. Багато систем пошуку не мають цієї корисної характеристики.
Покроковий пошук має ряд інших переваг у порівнянні з пошуком з роздільниками. Покроковий пошук вимагає менше часу. Пошук починається, як тільки перший символ шаблона введений. Система не очікує того моменту, коли шаблон буде введений цілком. При використанні пошуку з роздільниками комп'ютер чекає, поки користувач цілком уведе шаблон і позначить його роздільником, після чого вже користувач чекає, поки комп'ютер робить пошук. При використанні пошуку з роздільниками користувач повинний спочатку припустити, по якому шаблоні комп'ютер зможе відрізнити потрібний об'єкт від інших подібних об'єктів, тоді як при використанні покрокового пошуку користувач відразу ж може визначити, що шаблон виявився достатнім, щоб виявити потрібний об'єкт, тому що він уже з'явився на екрані. Таким чином, як тільки користувач бачить, що потрібна крапка знайдена, він може припинити введення шаблона. Якщо ж він уведе занадто багато символів, тобто швидкість уведення буде більше, ніж швидкість пошуку, шаблон усе рівно буде введений, і курсор установиться приблизно в тім місці, що передбачається. Якщо користувач помиляється при введенні шаблона в систему пошуку з роздільниками, для виправлення помилки він повинний чекати доти , поки пошук по невірному шаблоні не завершиться, - у кращому випадку користувач може скористатися механізмом для зупинки пошуку, якщо такий передбачений. У великому тексті пошук може займати значний період часу. У добре розробленому покроковому пошуку користувач може видалити невірно введений символ у будь-який час і повернутися до останнього знайденого екземпляра. Оскільки використання клавіші Backspace для виправлення помилки може бути звичним, процес виправлення проходить досить швидко, і пошук зупиняється відразу ж. Щоб відновити пошук, користувач може ввести правильний символ.
Ще однією перевагою покрокового пошуку є те, що в ньому мається постійний зворотний зв'язок під час уведення символів шаблона, тобто результати пошуку видні відразу. При використанні пошуку з роздільниками користувач не знає, наскільки введений їм шаблон є придатним чи навіть наскільки правильно він був набраний, доти поки введення не закінчене і спроба пошуку не почата. З погляду побудови інтерфейсу, покроковий пошук має так багато переваг, а пошук з роздільниками - так мало, що, на мій погляд, використання пошуку з роздільниками рідко коли може бути кращим.34 Незважаючи на те що майже всі розроблювачі і користувачі визнають, що покроковий пошук більш кращий, майже всі інструменти по розробці інтерфейсів дозволяють створювати засобу пошуку з роздільниками і чи утрудняють навіть унеможливлюють створення засобу покрокового пошуку. Прикладами таких інструментів є JavaScrіpt і Vіsual Basіc.
Покрокове введення шаблона пошуку уможливлює змінювати шаблон интерактивно прямо під час процесу пошуку, а виходить, дозволяє користувачу оптимизировать пошук по одержуваному зворотному зв'язку. Навіть побудова булевой моделі пошуку робиться більш ефективним, якщо результати пошуку відображаються в міру того, як користувач уточнює шаблон. Знайдений екземпляр повинний з'являтися посередине екрана, а чи не нагорі внизу, так, щоб матеріал до і після екземпляра був видний, таким чином, знайдений екземпляр завжди відображається у своєму контексті. Знайдений екземпляр також повинний завжди відображатися в тому самому місці щодо чи екрана вікна, щоб користувач швидко вивчив, де шукати результати. У комп'ютері Canon Cat знайдений екземпляр завжди з'являвся по вертикальному центрі екрана. Він не повинний відображатися на якомусь із країв екрана; таким чином, матеріал навколо екземпляра завжди був видний.
Якщо в тексті не міститься екземпляра шаблона, пошук виявляється невдалим. У багатьох системах у цьому випадку пошук припиняється і не може використовуватися доти , поки не натиснута спеціальна клавіша (звичайно <Enter> чи <Return>) чи кнопка на екрані. На екрані з'являється модальне повідомлення, у якому говориться, що ви повинні зробити необхідний уклін, перш ніж вам буде дозволено продовжити користування комп'ютером. У многоэкранных чи системах у випадках, коли екран візуально перевантажений, таке повідомлення може зовсім не потрапити в локус вашої уваги, і ви можете зовсім його не помітити. У результаті вам може показатися, що комп'ютер не відповідає на натискання клавіш, начебто б він завис. При використанні ж покрокового пошуку ви без усякої спеціальної підказки зможете помітити, що пошук не удався, тому що курсор у цьому випадку відразу ж повертається в початкову позицію, і додаткові натискання не дають ніякого результату. Тут же може бути корисним короткий звуковий чи сигнал миготіння на екрані, особливо якщо пошук тривав довше періоду дії короткочасної пам'яті (скажемо, довше 10 секунд), і тому користувач забув, як виглядав дисплей до початку пошуку. Звуковий сигнал ще корисний для користувачів з погіршеною зоровою здатністю.