Интерфейсы
Интерфейс аппаратный и программный.
В компьютерной системе два участника – программное и аппаратное обеспечение. Программное обеспечение – это все программы, установленные на компьютере, а аппаратное обеспечение – узлы и оборудование, которые находятся внутри системного блока или подключены снаружи.
Взаимосвязь между участниками компьютерной системы называют интерфейсом. Взаимодействие между различными узлами – это аппаратный интерфейс, взаимодействие между программами – программный интерфейс, а взаимодействие между аппаратурой и программами – аппаратно-программный интерфейс.
В компьютере аппаратный интерфейс обеспечивают изготовители оборудования. Они следят за тем, чтобы все узлы имели одинаковые разъемы и работали с одинаковыми напряжениями. Согласование между программным и аппаратным обеспечением выполняет операционная система.
Интерфейс пользователя.
Если речь идет о персональном компьютере, то можно указать и третьего участника работы с компьютерной системой – это человек (его принято называть пользователем). Пользователю тоже надо взаимодействовать с аппаратным и программным обеспечением.
Существуют различные программы и с каждой надо работать по-разному. Одни программы рассчитаны на работу с клавиатурой, другие – на работу с мышью, прочие на работу с джойстиком или другими устройствами управления. Одни программы свои сообщения выдают в виде текстов на экране, другие – в виде графики, прочие могут вообще не пользоваться экраном и выдавать сообщения в виде речи или звуков. Способ взаимодействия человека с программой и программы с человеком называют интерфейсом пользователя. Если программа сделана так, что с ней работать удобно, говорят, что она имеет удобный интерфейс пользователя. Если техника работы с программой понятна сразу, без необходимости изучать инструкции, говорят, что она имеет интуитивно понятный интерфейс. Понятие развитый интерфейс пользователя предполагает, что у программы большие возможности, но учиться работать с ней непросто. Гибкий интерфейс означает, что с программой можно работать многими разными способами. Понятие жесткий интерфейс означает, что возможна только такая работа, которая предусмотрена инструкцией, и никакая другая. Понятие примитивный интерфейс означает, что интерфейс прост для изучения, но неудобен для работы.
Итак, в каждой операционной системе существует несколько видов интерфейсов:
командный (текстовый) интерфейс;
текстовый или графический полноэкранный интерфейс;
графический многооконный пиктографический интерфейс;
интерфейс API .
Рассмотрим каждый интерфейс более подробно:
Всякая операционная система имеет командный интерфейс (иногда в скрытой форме).
В первой из ОС (OS/360) взаимодействие с пользователями было жестко поделено между следующими компонентами:
(JCL – Job Control за управление вычислительным прочесом). Это язык диалогового режима – команда запуска – остановки задач, привязки носителей информации к устройствам, получения информации о заданиях, ожидающих выполнения, вывода, наличия свободной памяти и свободных устройств и др.
Язык управления заданиями (JCL – Job Control Language), на котором прочие пользователи (программисты, разработчики и просто конечные пользователи) описывали состав и структуру процесса обработки данных – последовательность запуска программ, входные и выходные файлы, условия, при которых те или иные программы должны быть выполнены или пропущены и др. Это язык пакетной обработки, не допускающий вмешательства пользователя в собственно процесс вычисления, компиляции и пр.
В большинстве ОС в настоящее время сложился более или менее унифицированный формат командной строки. Командная строка включает в себя:
Тип операции (имя команды или программы);
Рабочий вход (входные файлы или устройства);
Рабочий выход (выходные файлы или устройства);
Управляющий вход (управляющие параметры или ключи команды);
Управляющий выход (обычно – протокол, содержащий диагностику ошибок, код завершения или другую информацию).
Командная строка — приглашение оболочки, обозначающее готовность системы принимать команду пользователя, — в наиболее явной форме демонстрирует идею диалога. На каждую введенную команду пользователь получает ответ от системы: либо очередное приглашение, обозначающее, что команда выполнена и можно вводить следующую, либо сообщение об ошибке, представляющее собой высказывание системы о произошедших в ней событиях, адресованное пользователю. При работе в операционной среде с графическим интерфейсом происходящий диалог пользователя с системой не столь очевиден, хотя с точки зрения системы клик мышью в определенной области на экране аналогичен команде, введенной с клавиатуры, а ответ системы пользователю может быть представлен в виде диалогового окна.
Текстовый или графический полноэкранный интерфейс.
Он имеет, как правило, в верхней части экрана систему меню с подсказками. Меню часто бывает выпадающим (ниспадающим – pull-down).
Для управления компьютером курсор экрана или курсор мыши после поиска в древе каталогов устанавливается на командные файлы программ (*.exe, *.com, *.bat) и для запуска программы нажимается клавиша или правая кнопка мыши. Различные файлы могут выделяться разным цветом или иметь разный рисунок. Каталоги (папки) отличаются от файлов размером или рисунком. Данный интерфейс является основным для всех видов программных оболочек.
Графический многооконный пиктографический интерфейс.
Представляет собой рабочий стол (DeskTop), на котором располагаются пиктограммы (значки или иконки программ). Все операции производятся, как правило, мышью. Для управления компьютером курсор мыши подводят к пиктограмме и запуск программы осуществляют щелчком левой кнопки мыши по пиктограмме. Это наиболее удобный и перспективный интерфейс, осебенно при работе с программами. Примеры: интерфейс с компьютеров Apple Macintosh, Windows 3.1, Windows 95/98, OS/2, XP, Vista.
Графический интерфейс пользователя (GUI – Graphics User Interface). Появление ОС и оболочек с развитыми диалоговыми графическими средствами (OS Macintosh, Windows 3.1, а особенно Windows 95/98/ME, а также NT/2000) и средств программирования, позволяющих создавать графические интерфейсы (FoxPro for Windows и пр.), а особенно – объектно–ориентированных систем программирования – привело к внедрению и широкому распространению элементов экранного интерфейса.
Оболочка Microsoft Windows не была изначально операционной системой, так как она существует «поверх» операционной системы типа MS-DOS. Она возникла в виде стандартизатора графического интерфейса и прижилась исключительно потому, что пользователь хотел видеть программу, с которой ему часто приходится работать, красивой, практичной, удобной и легкой в освоении и использовании.
Интерфейс API.
Интерфейс прикладного программирования (иногда интерфейс программирования приложений) (англ. Application Programming Interface, API [эй-пи-ай]) — набор готовых классов, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для её использования во внешних программных продуктах.
API как средство интеграции приложений
API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована. Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика, которые он может вертеть и дёргать.
Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.
По такому принципу построены протоколы передачи данных по Internet. Стандартный протокол Internet (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи пакетов бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему уровню.
Важно заметить, что понятие протокола близко по смыслу к понятию API. И то, и другое является абстракцией функциональности, только в первом случае речь идёт о передаче данных, а во втором — о построении компьютерных приложений. API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.
API операционных систем. Проблемы, связанные с многообразием API
Практически все операционные системы (Unix, Windows, Mac OS, и т. д.) имеют API, с помощью которого программисты могут создавать приложения для этой операционной системы. Главный API операционных систем — это множество системных вызовов.
В индустрии программного обеспечения общие стандартные API для стандартной функциональности имеют важную роль, так как они гарантируют, что все программы, использующие общий API, будут работать одинаково хорошо или, по крайней мере, типичным привычным образом. В случае API графических интерфейсов это означает, что программы будут иметь похожий пользовательский интерфейс, что облегчает процесс освоения новых программных продуктов.
С другой стороны, отличия в API различных операционных систем существенно затрудняют перенос приложений между платформами. Существуют различные методы обхода этой сложности — написание «промежуточных» API (API графических интерфейсов Qt, Gtk, и т. п.), написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine, cygwin, и т. п.), введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C), написания интерпретируемых языков, реализуемых на разных платформах (sh, python, perl, php, tcl, Java, и т. д.)
Также необходимо отметить, что в распоряжении программиста часто находится несколько различных API, позволяющих добиться одного и того же результата. При этом каждый API обычно реализован с использованием API программных компонент более низкого уровня абстракции.
Например, для того, чтобы увидеть в браузере строчку «Hello, world!» достаточно лишь создать HTML-документ с минимальным заголовком, и простейшим телом, содержащим данную строку. Что произойдёт, когда браузер откроет этот документ? Программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при помощи API операционной системы прочитает этот файл, и разберётся в его устройстве, затем последовательно вызовет через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать выбранным шрифтом Hello, world!», при этих операциях библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими запросами, уже эта библиотека обратится к API операционной системы с запросами вида «а положи-ка мне в буфер видеокарты вот это».
При этом практически на каждом из уровней реально существует несколько возможных альтернативных API. Например, мы могли бы писать исходный документ не на HTML, а на LaTeX, для отображения могли бы использовать любой браузер. Различные браузеры, вообще говоря, используют различные HTML-библиотеки, и, кроме того, всё это может быть (вообще говоря) собрано с использованием различных библиотек примитивов и на различных операционных системах.
Основными сложностями существующих многоуровневых систем API, таким образом, являются:
Сложность портирования программного кода с одной системы API на другую (например, при смене ОС);
Потеря функциональности при переходе с более низкого уровня на более высокий. Грубо говоря, каждый «слой» API создаётся для облегчения выполнения некоторого стандартного набора операций. Но при этом реально затрудняется, либо становится принципиально невозможным выполнение некоторых других операций, которые предоставляет более низкий уровень API.
Наиболее известные API:
API операционных систем:
POSIX
Windows API
Cocoa
Linux Kernel API
OS/2 API
Amiga ROM Kernel
API графических интерфейсов:
OpenGL
OpenVG
X11
Qt
GTK
Motiff
Tk
GDI
GDI+
Direct3D (часть DirectX)
DirectDraw (часть DirectX)
Zune
SDL
API звуковых интерфейсов
DirectSound (часть DirectX)
DirectMusic (часть DirectX)
OpenAL
API аутентификационных систем
BioAPI
PAM
Пользовательский интерфейс Ubuntu:
Пользовательский интерфейс Windows:
