I. Элементы архитектуры вычислительных систем

Вид материалаДокументы
Подобный материал:
1   ...   34   35   36   37   38   39   40   41   42

Как следует из определения ОС, операционная система должна предоставлять пользовательский интерфейс. Как минимум она должна предоставлять командную оболочку (shell), которая дает пользователю возможность тем или иным способом запустить его прикладную программу. Однако в некоторых случаях, например, во встраиваемых контроллерах и других специализированных приложениях, такая оболочка может отсутствовать. При этом либо система вообще функционирует без вмешательства человека, либо пользователь работает только с одной прикладной программой.

Кроме того, ОС часто предоставляют средства для реализации графического пользовательского интерфейса прикладными программами. Часто оказывается сложно провести границу между ядром ОС и этими средствами, особенно если стандартная оболочка ОС реализована с их использованием. В некоторых системах, например в MS Windows 3.x и MacOS, практически все ядро состоит из средств реализации графического интерфейса.

В настоящее время оформилось два принципиально различных подхода к организации пользовательского интерфейса. Первый, исторически более ранний подход состоит в предоставлении пользователю командного языка, в котором запуск программ оформлен в виде отдельных команд. Этот подход известен как интерфейс командной строки (Command Line Interface - CLI).

Альтернативный подход состоит в символическом изображении доступных действий в виде картинок - икон icons на экране и предоставлении пользователю возможности выбирать действия при помощи мыши или другого координатного устройства ввода. Этот подход известен как графический пользовательский интерфейс (Graphical User Interface - GUI).

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

CLI.

Язык представляет одно из величайших достижений человечества. Многие ученые и философы обоснованно считают, что именно язык определяет границу, по которой проходит граница между человеком и животным. По современным представлениям, человеческий мозг содержит врожденные структуры, облегчающие понимание текстов на естественных и искусственных языках и генерацию таких текстов.

В свою очередь, компьютер, во всяком случае универсальный неймановский компьютер, представляет собой языковую машину: устройство, которое исполняет последовательность предложений некоторого формализованного языка.

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

Удачно спроектированные искусственные языки удобны и для компьютера: интерпретаторы полнофункциональных командных языков обходятся десятками, в худшем случае сотнями килобайт оперативной памяти и обеспечивают очень высокую скорость и эффективность использования ресурсов системы. Поэтому синтетический язык как средство человеко-машинного общения является наилучшим и наиболее естественным выбором для обеих сторон.

Командные языки позволяют естественным образом перейти к написанию командных файлов или скриптов (scripts), позволяющих автоматизировать часто исполняемые задачи. Трудно провести границу между написанием скриптов и программированием; можно даже сказать, что написание скриптов и даже просто интерактивное использование командного языка и есть частный случай программирования.

Современные интерактивные командные процессоры решают практически все проблемы командных языков предыдущих поколений:
  • исправление опечаток в командах и набор последовательностей одинаковых или похожих команд осуществляется с использованием средств вспоминания ранее набранных строк - "истории". Современные командные процессоры обеспечивают гибкие средства поиска команд в историческом списке, их редактирования, повторного использования отдельных частей этих команд и т.д.;
  • набор длинных имен файлов, каталогов и других объектов облегчается автоматическим расширением имен. Это средство, реализованное во многих командных процессорах ОС семейства Unix, позволяет, набрав первые несколько символов имени, расширить это имя до полного или получить список всех имен, начинающихся с данной последовательности букв;
  • неудобные, плохо запоминаемые или почему-либо не устраивающие пользователя команды могут быть переименованы с использованием синонимов (aliases). Этот же механизм может быть использован для сокращения часто исполняемых сложных команд.

Важными преимуществом хороших командных языков по сравнению с GUI является их алгоритмическая полнота: в GUI пользователь ограничен теми возможностями, для которых разработчик программы нарисовал иконки или сочинил пункты в меню. Командные же языки могут использоваться для решения любых алгоритмизуемых задач.

Любопытно, что последнее достижение в области пользовательского интерфейса - распознавание речи и голосовое управление - означает, по существу, возврат к командному языку, с той лишь разницей, что команды произносятся, а не вводятся с клавиатуры. Возможно, следует ожидать появления нового поколения синтетических командных языков, соответствующих требованиям речевого ввода команд.

GUI.

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

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

Однако, в некоторых случаях излишнее богатство вариантов может просто запутать пользователя. Не нужно забывать, что человек способен одновременно оперировать лишь довольно ограниченным количеством объектов и параметров; по современным представлениям для человека и большинства теплокровных животных это количество ограничено 6 - 7 объектами.

Даже после освоения базовых возможностей системы человек может забыть команду для исполнения какой-либо операции; в этом смысле графические интерфейсы, где все возможности перед глазами, оказываются предпочтительны.

Утверждение о том, что GUI ограничивает возможности пользователя заранее предопределенными возможностями просто не соответствует действительности: хорошо продуманные интерфейсы обеспечивают почти такую же гибкость в комбинации операций, как и командные языки. Возможность же записывать и вновь проигрывать последовательности действий во многих ситуациях может отлично заменить командные файлы.

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

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

Выводы

Изложив, в соответствии с правилами диалектики, тезис и антитезис, попробуем перейти к синтезу. Излагая аргументы сторон, мы намеренно выпустили ряд убийственных доводов типа таких: "Вы, сторонники CLI, хотите всех нас вернуть в каменный век и заставить пользоваться перфокартами" или "разработайте систему, которой сможет пользоваться даже идиот - и только идиот захочет ей пользоваться".

Если попытаться непредвзято сравнить доводы, становится видно, что основное противоречие состоит во взглядах на сложность изучения командного языка: сторонники CLI считают его простым делом, в то время как для сторонников GUI это едва ли не основное препятствие к использованию компьютера.

Возможно, такое различие свидетельствует о том, что разные категории пользовательских интерфейсов предпочтительны для людей с разным складом мышления. Например, можно предположить, что командные интерфейсы удобнее для людей с логическим складом мышления, а графические - с образным. Отчасти это подтверждается тем, что ориентированные на GUI компьютеры Macintosh в основном используются художниками, дизайнерами и другими представителями "образных" творческих профессий.

К сожалению, большинство открытых исследований психологических аспектов человеко-машинного взаимодействия либо до ужаса непрофессиональны, либо финансируются фирмами, продающими программное обеспечение. Такие "исследования" обычно лишь подтверждают, что продукт фирмы X на 50 % быстрее при исполнении "типичных", что бы под этим ни подразумевалось, задач, чем продукт конкурирующей фирмы Y.

Как бы то ни было, есть основания утверждать, что командные и графические интерфейсы оптимальны в разных ситуациях и для разных целей. Командный интерфейс хорош, когда пользователь ясно представляет себе, чего он хочет, а особенно для автоматизации регулярно исполняемых рутинных задач. Графические же интерфейсы удобнее при решении нечетко сформулированных или плохо алгоритмизуемых проблем.

Поэтому хорошая система должна предоставлять оба интерфейса. Например, разработчики фирмы Apple долгое время пытались избежать включения в систему командного интерпретатора но в конце концов под давлением пользователей и особенно специалистов по технической поддержке они были вынуждены реализовать командный язык AppleScript.