Консоль (информатика)
Материал из Википедии — свободной энциклопедии
Консо́ль в информатике может иметь несколько разных значений:
Содержание |
[править] Комплект устройств ввода-вывода
В старых компьютерных системах консолью называлось устройство для вывода системных сообщений: АЦПУ или монитор. В некоторых системах (в том числе в современных встраиваемых системах) в качестве консоли используется текстовый терминал (см. ниже), подключённый к последовательному порту.
В большинстве современных компьютеров консолью является комплект устройств интерактивного ввода-вывода, присоединённых к компьютеру непосредственно (не через сеть): дисплей, клавиатура, мышь. Консольный сеанс в многопользовательских операционных системах — это сеанс, осуществляемый человеком, сидящим непосредственно перед компьютером (в противоположность сеансу удалённого доступа, например через telnet, ssh, X Window, RDP и т. п.) Данная трактовка термина консоль безотносительна к типу пользовательского интерфейса: текстовому (CUI) или графическому (GUI).
[править] Текстовый интерфейс пользователя
Консольными программами называют программы текстового режима — т.е. компьютерные программы, использующие текстовый интерфейс для диалога с пользователем. Программное обеспечение, реализующее этот интерфейс, также называют консолью.
[править] Особенности текстового интерфейса
На программном уровне, для ввода и вывода информации консольные программы используют стандартные устройства ввода-вывода (stdin, stdout, stderr), хотя могут открывать и другие файлы, сетевые соединения и совершать иные действия, доступные в выполняющей их среде. Вывод печатных символов в stdout и stderr приводит к появлению этих символов на устройстве вывода, т.е. к их получению пользователем.
В простейшем случае, консольная программа использует интерфейс командной строки, однако, многие из них, с помощью управляющих последовательностей терминалов, создают более дружественный интерфейс, приближающийся к графическому.
Некоторые консольные программы пригодны лишь для определённой реализации текстового интерфейса, например текстовые программы DOS. Однако, консольные программы для более продвинутых операционных систем, особенно UNIX, как правило, способны работать на достаточно широком классе реализаций интерфейса с пользователем. Для упрощения написания таких программ широко применяется библиотека ncurses. В DOS, UNIX-подобных и многих других операционных системах поддержка текстового интерфейса встроена в ядро.
По аналогии с консольной оболочкой UNIX, в различных программах и играх консолью стали называть окно для вывода системных сообщений и приёма команд, применяемое специалистами для конфигурирования и наладки. В играх консоль обычно выводится на экран клавишей «~».
[править] Текстовые терминалы
Классической реализацией текстового интерфейса, восходящей к первой половине XX века, является консоль в её первом значении — алфавитно-цифровое устройство ввода-вывода, например комплект из клавиатуры и АЦПУ (телетайпа). Отсюда происходит традиция называть программы с текстовым интерфейсом консольными. Впоследствии вместо АЦПУ стали применять мониторы, снабжённые знакогенератором, что позволило быстро и удобно организовывать диалог с пользователем. Подобными устройствами снабжён, или может быть снабжён, почти каждый современный компьютер.
В 1970-х гг. и позднее выпускались даже специальные устройства, реализующие текстовый интерфейс — текстовые терминалы, подключаемые через последовательный порт к компьютеру, напрямую или через модем. С распространением персональных компьютеров функции текстового терминала как правило выполняет компьютер, тот на котором выполняется консольная программа или другой. В соответствии с традицией использования консольными программами клавиатуры и АЦПУ для ввода и вывода соответственно, взаимодействие таких программ с пользователем свелось к чтению из stdin и выводу на stdout. Таким образом, появилась возможность перенаправлять потоки ввода-вывода, осуществляя взаимодействие с пользователем посредством иных устройств, в т.ч. подключенных через сеть, а также при помощи специальных программ-эмуляторов терминала, например рисующих окно с текстом в графическом интерфейсе пользователя (текстовое окно).
[править] Реализация текстового интерфейса
В принципе, консольная программа не обязана заботиться о реализации самого взаимодействия с пользователем, ограничиваясь вводом-выводом на стандартные устройства, использованием библиотек типа ncurses или иных программных интерфейсов. Собственно взаимодействие с пользователем обычно осуществляет операционная система или иное программное обеспечение.
Программы Telnet и ssh (а также PuTTY для Windows) позволяют пользователю взаимодействовать с консольной программой, запущенной на удалённом компьютере (как правило под управлением UNIX), через Интернет или локальную сеть. Программы xterm, rxvt и konsole реализуют текстовый интерфейс посредством текстового окна в среде X Window.
Поскольку в Windows программы, написанные для MS-DOS, выполняются в таких же текстовых окнах, что и консольные программы, написанные специально для Windows, то эти текстовые окна консольных программ иногда ошибочно называют окнами MS-DOS.
Альтернативный подход к консольному выводу был использован в персональных компьютерах, в частности (хотя не только) IBM PC под управлением DOS. Программа может не только выводить данные через stdout, но и прямо изменять содержимое определённой области памяти, связанной со знакогенератором монитора, приводя к немедленному изменению видимых на мониторе данных. Такие программы могут также работать в среде Windows. Более того, Windows имеет поддержку текстовых окон, во многом превосходящую имевшуюся в DOS, в т.ч. и для приложений собственно Windows.
Linux предоставляет ещё бо́льшие возможности для консольных программ. В частности, даже безо всякого графического интерфейса несколько одновременно запущенных программ могут бесконфликтно взаимодействовать с пользователем, создавая иллюзию наличия в системе нескольких консолей (виртуальные консоли).
[править] Примеры консольных программ
- Любая программа, осуществляющая получение данных от пользователя путём чтения stdin и отправку данных пользователю путём записи в stdout, по определению является консольной программой. Однако, такие программы могут обходиться и безо всякого пользователя, например обрабатывая данные из файлов.
- Текстовые программы для DOS, осуществляющие вывод в видеопамять EGA/VGA. Подобные программы работают также в среде GUI Windows.
- Unix shell, а также все утилиты, предназначенные для работы в этой среде.
- Midnight Commander (UNIX), FAR Manager (Windows).
[править] Интерфейс для текстового ввода команд
В современном программном обеспечении имеется большое число команд, многие из которых нужны крайне редко. Если их все поместить в меню, это меню окажется большим и разветвлённым, и добраться до некоторых команд будет очень трудно. Для решения этой проблемы некоторые программы (в том числе игры) применяют встроенный интерфейс, принимающий ввод команд с клавиатуры (на манер программ текстового режима).
[править] В компьютерных играх
Первая игра, в которой применена консоль,— Quake. Сейчас консоль есть почти во всех многопользовательских играх. Стандартная кнопка для вызова консоли — «~» (тильда). Консоль позволяет вносить изменения в настройки игры оперативнее, чем меню — например, набрать name Terminator
быстрее, чем найти то меню, в котором вводится имя игрока, и ввести Terminator. Также не всегда интерфейс, который предоставляется моддерам, позволяет менять меню; но он всегда позволяет добавлять свои консольные команды.
[править] В других программах
[править] Достоинства и недостатки
Достоинства:
- любую команду можно вызвать небольшим количеством нажатий;
- легко налаживается простейшая программируемость;
- можно управлять выделенным сервером, на котором графического интерфейса нет вообще.
Недостатки:
- искать неизвестную команду по справочникам не менее сложно, чем отыскивать в меню нужную команду;
- ввод некоторых параметров с клавиатуры может быть затруднительным. Например, игроки часто украшают свои имена цифрами и спецсимволами, и ввести команду наподобие
kick =-CooL-= [H3LL]
без дополнительных средств бывает довольно сложно. - Если же в программе есть полноценный скриптовый язык, приходится либо поддерживать два разных языка (консольный и скриптовый), либо отказываться от консоли в пользу скриптового языка.
[править] Иные значения
- В Microsoft Windows — Microsoft Management Console, оболочка для управления системной конфигурацией.
- Иногда термин «консоль» расширительно употребляют как синоним термина «интерфейс командной строки»
- Иногда консолью называют иннтерфейс для текстового вывода сообщений (например, в левом нижнем углу в игре Fallout).