Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Стандарты языка программирования C

Стандарты семейства UNIX

Причиной появления стандартов на операционную систему UNIX стало то, что она была перенесена на многие аппаратные платформы. Ее первые версии работали на аппаратуре PDP, но в 1976 и 1978 годах система была перенесена на Interdata и VAX. С 1977 по 1981 годы оформились две конкурирующие ветви: UNIX AT&T и BSD. Наверное, цели разработки стандартов были разными. Одна из них – узаконить главенство своей версии, а другая – обеспечить переносимость системы и прикладных программ между различными аппаратными платформами. В связи с этим говорят и о мобильности программ. Такие свойства имеют отношение как к исходным текстам программ, так и исполнимым программам.

Дальнейший материал приводится в хронологическом порядке появления стандартов.

Стандарты языка программирования C

Этот стандарт не относится непосредственно к UNIX. Но поскольку C является базовым как для этого семейства, так и других ОС, упомянем о стандарте этого языка программирования. Начало ему было положено выходом в 1978 году первой редакции книги Б.Кернигана и Д.Ритчи. Этот стандарт часто называют K&R. Программисты, авторы этого труда, работали над UNIX вместе с Кеном Томпсоном. При этом первый из них предложил название системы, а второй изобрел этот язык программирования. Соответствующий текст доступен в Интернете [45].

Однако промышленный стандарт языка программирования С был выпущен в 1989 году ANSI и имел имя X3. 159 – 1989. Вот что написано про этот стандарт [46]:

"Стандарт был принят для улучшения переносимости написанных на языке Си программ между различными типами ОС. Таким образом, в стандарт, кроме синтаксиса и семантики языка Си, вошли рекомендации по содержанию стандартной библиотеки. О наличии поддержки стандарта ANSI C говорит предопределенное символьное имя _STDC".

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

System V Interface Definition (SVID)

Другое направление развития стандартов UNIX связано с тем, что не только энтузиасты задумывались о создании "эталонов". Основные разработчики системы с появлением многих "вариантов" решили издавать собственные документы. Так появляются стандарты, выпускаемые USG, организацией, разрабатывающей документацию версий UNIX AT&T с того момента, когда для создания операционной системы была образована эта дочерняя компания. Первый документ появился в 1984 году на основе SVR2. Он имел название SVID (System V Interface Definition). Четырехтомное описание было выпущено после выхода в свет версии SVR4. Эти стандарты дополнялись набором тестовых программ SVVS (System V Verification Suite). Основное назначение этих средств состояло в том, чтобы разработчики имели возможность судить, может ли их система претендовать на имя System V [14].

Отметим, что положение дел со стандартом SVID в чем-то сходно со стандартом языка программирования С. Изданная авторами этого языка программирования книга является одним из эталонов, но не единственным. Выпущенный позже стандарт С является результатом коллективного труда, прошел этап обсуждения широкой общественности и, видимо, может претендовать на ведущую роль в списке стандартов. Так и SVVS является набором тестов, позволяющих судить, достойна ли система соответствовать имени System V, только одной из версий UNIX. При этом не учитывается весь опыт разработки операционных систем от разных производителей.

Комитеты POSIX

Работа по оформлению стандартов UNIX началась группой энтузиастов в 1980 году. Была сформулирована цель – формально определить услуги, которые операционные системы обеспечивают приложениям. Такой стандарт программного интерфейса стал основой документа POSIX (Portable Operating System Interface for Computing Environment – переносимый интерфейс операционной системы для вычислительной среды) [14]. Первая рабочая группа POSIX была образована в 1985 году на основе UNIX-ориентированного комитета по стандартизации /usr/group, также называемой UniForum [47]. Название POSIX было предложено родоначальником GNU Ричардом Столмэном.

Ранние версии POSIX определяют множество системных сервисов, необходимых для функционирования прикладных программ, которые описаны в рамках интерфейса, специфицированного для языка С (интерфейс системных вызовов). Заложенные в нем идеи использовались комитетом ANSI (American National Standards Institute) при создании стандарта языка C, упомянутого ранее. Исходный состав функций, закладываемый в первые версии, опирался на UNIX AT&T (версия SVR4 [48]). Но в дальнейшем происходит отрыв спецификаций стандартов POSIX от этой конкретной ОС. Подход к организации системы на основе множества базовых системных функций был применен не только в UNIX (например, WinAPI фирмы Microsoft).

В 1988 году был опубликован стандарт 1003.1 – 1988, определяющий API (Application Programming Interface, программный интерфейс приложений). Через два года был принят новый вариант стандарта IEEE 1003.1 – 1990. В нем были определены общие правила программного интерфейса, как для системных вызовов, так и для библиотечных функций. Далее утверждаются дополнения к нему, определяющие сервисы для систем реального времени, "нитей" POSIX и др. Важным является стандарт POSIX 1003.2 – 1992 – определение командного интерпретатора и утилит.

Имеется перевод [1] этих двух групп документов, которые получили такие названия: POSIX.1 (интерфейс прикладных программ) и POSIX.2 (командный интерпретатор и утилиты – интерфейс пользователя). В упомянутом переводе содержатся три главы: основные понятия, системные услуги и утилиты. Глава "Системные услуги" разделена на несколько частей, каждая из которых группирует сходные по функциям услуги. Например, в одном из разделов "Базовый ввод/вывод" седьмая часть, посвященная операциям с каталогами, описывает три функции ( opendir, readdir и closedir ). Они определяются в четырех пунктах: "Синтаксис", "Описание", "Возвращаемое значение" и "Ошибки".

Для тех, кто знаком с алгоритмическим языком программирования С, приведем пример фрагментов описания. Фактически такое описание дает представление о том, как специфицируется "Интерфейс системных вызовов". В пункте "Синтаксис" про функцию readdir приведены такие строки:

#include <sys/types.h>

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

Второй пункт ("Описание") содержит следующий текст:

"Типы и структуры данных, используемые в определениях с каталогами, определяются в файле dirent.h. Внутренний состав каталогов определяется реализацией. При чтении с помощью функции readdir формируется объект типа struct dirent, содержащий в качестве поля символьный массив d_name, в котором находится завершаемое символом NUL локальное имя файла.

Readdir читает текущий элемент каталога и устанавливает указатель позиции на следующий элемент. Открытый каталог задается указателем dirp. Элемент, содержащий пустые имена, пропускается".

А вот что приводится в пункте "Возвращаемое значение":

" Readdir при успешном завершении возвращает указатель на объект типа struct dirent, содержащий прочитанный элемент каталога. Прочитанный элемент может заноситься в статическую память и перекрывается очередным таким вызовом, примененным к тому же открытому каталогу. Вызов readdir для различных открытых каталогов не перекрывает читаемую информацию. В случае ошибки или достижении конца файла возвращается нулевой указатель".

В пункте "Ошибки стандарта" указано следующее:

" Readdir и closedir обнаруживают ошибку. [EBADF] Dirp не являются указателем на открытый каталог".

Этот пример показывает, как описываются представляемые приложением услуги. Требования к операционной системе (реализации) заключается в том, что она "…должна поддерживать все обязательные служебные программы, функции, заголовочные файлы с обеспечением специфицированного в стандарте поведения. Константа _POSIX_VERSION имеет значение 200112L [49]".

В мире компьютерных технологий существует такое словосочетание: "программирование POSIX". Этому можно научиться, используя различные руководства по системному программированию UNIX и операционным системам (например, [5]). Есть отдельная книга с таким названием [3]. Заметим, что в предисловии к этой книге сказано, что она описывает ". . . стандарт втройне . . ", так как она опирается на последнюю версию POSIX 2003 года, в основе которой три стандарта: IEEE Std 1003.1, технический стандарт Open Group и ISO/IEC 9945.

Как же проверить соответствие конкретной системы стандарту POSIX? Формализация такого вопроса не так проста, как кажется на первый взгляд. В современных версиях предлагается 4 вида соответствия (четыре семантических значения слова "соответствие": полное, международное, национальное, расширенное).

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

Отметим, что набор документов POSIX изменяется уже много лет. Но разработчики новых версий всегда стараются максимально сохранить преемственность с предыдущими версиями, В более свежих редакциях может появиться что-то новое. Например, в документе 2004 года были объединены четыре части [50]:

  • Base Definitions volume (XBD) – определение терминов, концепций и интерфейсов, общих для всех томов данного стандарта;
  • System Interfaces volume (XSH) – интерфейсы системного уровня и их привязка к языку Си, где описываются обязательные интерфейсы между прикладными программами и операционной системой, в частности – спецификации системных вызовов;
  • Shell and Utilities volume (XCU) – определение стандартных интерфейсов командного интерпретатора (т.н. POSIX-shell), а также базовой функциональности Unix-утилит;
  • Rationale (Informative) volume (XRAT) – дополнительная, в том числе историческая, информация о стандарте.

Как и первые редакции, документ в своей основной части описывает группы представляемых услуг. Каждый элемент там описан в следующих пунктах: NAME (Имя), SINOPSIS (Синтаксис), DISCRIPTION (Описание), RETURN VALUE (Возвращаемое значение), ERRORS (Ошибки) и в заключении EXAMPLE (Примеры).

Современные версии стандарта определяют требования как к операционной системе, так и к прикладным программам. Приведем пример [51].

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

И в заключение приведем отрывок из курса лекций Сухомлинова ("ВВЕДЕНИЕ В АНАЛИЗ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ", Сухомлинов В.А. Часть V. Методология и система стандартов POSIX OSE), посвященным области применимости стандартов [52]:

"Область применимости стандартов POSIX OSE (Open System Environment) – обеспечение следующих возможностей (называемых еще свойствами открытости) для разрабатываемых информационных систем:

  • Переносимость приложений на уровне исходных текстов (Application Portability at the Source Code Level), т.е. предоставление возможности переноса программ и данных, представленных на исходных текстах языков программирования, с одной платформы на другую.
  • Системная интероперабельность (System Interoperability), т.е. поддержка взаимосвязанности между системами.
  • Переносимость пользователей (User Portability), т.е. обеспечение возможности для пользователей работать на различных платформах без переобучения.
  • Адаптируемость к новым стандартам (Accommodation of Standards), связанным с достижением целей открытости систем.
  • Адаптируемость к новым информационным технологиям (Accommodation of new System Technology) на основе универсальности классификационной структуры сервисов и независимости модели от механизмов реализации.
  • Масштабируемость прикладных платформ (Application Platform Scalability), отражающая возможность переноса и повторного использования прикладного программного обеспечения применительно к разным типам и конфигурациям прикладных платформ.
  • Масштабируемость распределенных систем (Distributed System Scalability), отражающая возможность функционирования прикладного программного обеспечения независимо от развития топологии и ресурсов распределенных систем.
  • Прозрачность реализаций (Implementation Transparency), т.е. сокрытие от пользователей за интерфейсами систем особенностей их реализации.
  • Системность и точность спецификаций функциональных требований пользователей (User Functional Requirements), что обеспечивает полноту и ясность определения потребностей пользователей, в том числе в определении состава применяемых стандартов."

Это позволяет решать следующие задачи:

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

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

Всего в списке стандартов POSIX более трех десятков элементов. Их имена традиционно начинаются буквой "Р", после которой расположено четырехзначное число с дополнительными символами. Существуют также групповые имена стандартов POSIX1, POSIX2 и т.д. Например, POSIX1 связан со стандартами на базовые интерфейсы ОС (Р1003.1х, где вместо х либо пусто, либо символы от a до g; таким образом, в этой группе 7 документов), а POSIX3 – методы тестирования (два документа – Р2003 и Р2003n).

X/Open, OSF и Open Group

Основанная в 1984 году рядом компьютерных фирм организация X/Open своей основной задачей ставила согласование и утверждение для разных версий UNIX стандартов общего программного интерфейса и программной среды для приложений. В 1988 году появился документ XPG3 (X/Open Portability Guide3). Он включал POSIX 1003.1 – 1988 и стандарт на графическую систему X Window System (MTI). Этот документ был развит, включая последние идеи UNIX версии BSD и System V. Он получил название XPG4.2 [14].

X/Open объединила свои усилия с Open Software Foundation, создав The Open Group, которая до настоящего времени работает над идеологией открытых систем. С момента создания ей принадлежит торговая марка UNIX. Фирма активно работает (вместе с IEEE, ISO и IEC) над последними стандартами операционных систем.

Заметим, что OSF была образована рядом организаций в ответ на объединение Sun Microsystems и AT&T для разработки операционной системы, претендующей на универсальность. Сегодня организация The Open Group является главным держателем стандартов UNIX. Она размещает на своем сайте много самой разнообразной информации, начиная от истории описания "What is UNIX" ("Что такое UNIX") и заканчивая серией стандартов Single Unix, Unix95, Unix98, Unix03, ISO/IEC 9945:2003, а также UNIX System API Table.

В этот неправительственный консорциум входят около 200 членов. В их числе правительственные организации, учебные заведения и представители бизнеса разных стран. Приведем (в алфавитном порядке) нескольких представителей компьютерного бизнеса членов The Open Group:

AT&T Hewlett-Packard IBM
Intel NEC Corporation Oracle
Red Hat (R), Inc. Sun Microsystems SUSE LINUX Products GmbH

В заключение этого раздела заметим, что существует еще много менее значимых стандартов на программное обеспечение. Один из них, Linux Standard Base (LSB), создавался Free Standards Group. Но последняя объединилась с Open Source Development Labs (OSDL) и образовала новую организацию The Linux Foundation. Назовем и еще один документ – лицензию BSD (программная лицензия университета Беркли, применяемая для распространения UNIX-подобных операционных систем BSD).

Основные понятия, связанные с интерфейсом операционных систем

В области информационных технологий имеется несколько фундаментальных понятий. Одно из них – "интерфейс". Отметим, что оно может трактоваться с различных точек зрения. В предыдущей главе описано понятие "Интерфейс системных вызовов". Если искать такой термин в "Словарях" Yandex, то будет получено более десятка определений термина, большая часть которых дана в сочетаниях с другими терминами, например: "Интерфейс передачи данных", "Программный интерфейс", "Прикладной интерфейс". В словаре "Естественные науки" на ГЛОССАРИЙ.RU дается следующее определение фундаментальному понятию.

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

В "Издательском словаре-справочнике" [61] есть такое определение основному термину "интерфейс". Это:

  1. Система связей и взаимодействия устройств компьютера.
  2. Средства взаимодействия пользователей с операционной системой компьютера, или пользовательской программой. Различают графический интерфейс пользователя (взаимодействие с компьютером организуется с помощью пиктограмм, меню, диалоговых окон и пр.) и интеллектуальный интерфейс (средства взаимодействия пользователя с компьютером на естественном языке пользователя).

Как видим, здесь этот термин имеет два значения. Но мы кратко остановимся на втором – "интерфейс пользователя". На уже упомянутом нами источнике ГЛОССАРИЙ.RU он определяется так: "Интерфейс пользователя – это элементы и компоненты программы, которые способны оказывать влияние на взаимодействие пользователя с программным обеспечением, в том числе:

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

По мере развития вычислительной техники методы и средства взаимодействия пользователя с операционной системой менялись. Широкое распространение цифровых вычислительных машин привело к режиму общения между человеком и ЭВМ на специальном языке. Сначала, в период пакетной обработки заданий, это реализовалось с применением специальных носителей информации (например, перфокарт, на которые наносились задания для компьютера). Но в дальнейшем, с широким распространением терминалов и клавиатуры, основным стал командный режим работы пользователя, при котором взаимодействие строилось на основе системы встроенных команд. В свободной энциклопедии "Википедия" он определен так.

Интерфейс командной строки (англ. Command line interface, CLI) – разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются в основном путем ввода с клавиатуры текстовых строк (команд), в UNIX-системах возможно применение мыши. Также известен под названием "консоль".

Приведем приблизительный фрагмент экрана, который появляется в режиме командной строки (рис. 4.1).


Рис. 4.1.

Слева в строке появляется приглашение ( [asplinux@asplinuxlive ~] ), после него можно набрать команду, результаты которой выводятся далее. Приведем пример выполнения команды date в системе Linux (рис. 4.2).


Рис. 4.2.

Первые операционные системы фирмы Microsoft для персональных компьютеров IBM PC (они назывались MS DOS) также поддерживали командный режим, схожий с другими системами. Строка, в которой набирались команды, была схожей с приведенными выше. Сегодня командный режим операционных систем обеспечивается эмуляторами cmd.exe (для 32-х разрядного режима) или command.com (для 16-х разрядного режима). В графическом режиме семейства UNIX/Linux командная строка эмулируется программой Терминал (xterm).

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

"Norton Commander (NC) – популярный файловый менеджер для DOS, первоначально разработанный американским программистом John Socha (некоторые дополнительные компоненты были полностью или частично написаны другими людьми: Linda Dudinyak – Commander Mail, вьюеры; Peter Bradeen – Commander Mail; Keith Ermel, Brian Yoder – вьюеры). Программа была выпущена компанией Peter Norton Computing (глава – Питер Нортон), которая позже была приобретена корпорацией Symantec".

Приведем пример снимка экрана этого файлового менеджера (рис. 4.3).


Рис. 4.3. Легендарный файловый менеджер Norton Commander

Популярность программы была настолько велика, что появились многочисленные клоны, которые более или менее точно копировали нортоновский интерфейс. К примеру, DOS Navigator, визуально схожий с Norton Commander-ом, предоставлял даже большие возможности. Для операционной системы Microsoft Windows появились Volkov Commander, FAR Manager, Total Commander и другие аналогичные программы. Впоследствии клоны появились и на других операционных системах: BSD, GNU/Linux – Midnight Commander, Krusader.

Norton Commander не только спровоцировал целую серию собственных клонов и реплик, но и внес в русский язык пару новых слов – "нортон" и "коммандер" стали в жаргоне пользователей ПК синонимами словосочетания "файловый менеджер".

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

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

Также имеется музыкальная группа Nord'n'Commander.

В разных версиях Linux используется аналог такой программы, называемой Midnight Commander. Приведем ее вид (рис. 4.4), когда она вызвана в режиме эмуляции командной строки.


увеличить изображение
Рис. 4.4. Программа Midnight Commander, выполненная в Терминале

Но идея разделений окна на две части, в которых представлено содержимое каталогов, осталась привлекательной и при появлении операционной системы только с графическим интерфейсом – Windows 95. Аналоги Norton Commander для этой и последующих версий многочисленны. В интегрированной графической среде UNIX аналогом NC является GNOME Commander. Приводим вид (рис. 4.5) файлового менеджера Total Commander (ранее известного как Windows Commander) операционной системы Windows XP [62].


увеличить изображение
Рис. 4.5. Файловый менеджер Total Commander

Но сегодня командный режим уходит в прошлое, уступая место другим. Кроме командного, определяются еще два современных вида интерфейса: WIMP и SILK.

WIMP-интерфейс (Window – окно, Image – образ, Menu – меню, Pointer – указатель). Характерной особенностью этого вида интерфейса является то, что диалог с пользователем ведется не с помощью команд, а с помощью графических образов – меню, окон, других элементов. Хотя и в этом интерфейсе подаются команды машине, но это делается "опосредованно", через графические образы. Этот вид интерфейса реализован на двух уровнях технологий: простой графический интерфейс и "чистый" WIMP-интерфейс.

SILK-интерфейс (Speech – речь, Image – образ, Language – язык, Knowledge – знание). Этот вид интерфейса наиболее приближен к обычной, человеческой форме общения. В рамках этого интерфейса идет обычный "разговор" человека и компьютера. При этом компьютер находит для себя команды, анализируя человеческую речь и находя в ней ключевые фразы. Результат выполнения команд он также преобразует в понятную человеку форму. Этот вид интерфейса наиболее требователен к аппаратным ресурсам компьютера, и поэтому его применяют в основном для военных целей.

Долгое время возможности компьютеров, их технические характеристики предписывали пользователям работу в командном режиме как в основном. Первые персональные компьютеры также использовали его. Но в последние годы такой режим вытеснен другим – графическим. Он потребовал от компьютера больших ресурсов, но привнес новое – удобство, разнообразный дизайн, многозадачность (правда последняя может быть реализована и в командном режиме). Для обозначения графического режима используют аббревиатуру GUI (Graphics User Interface), что дословно переводят как "графический интерфейс пользователя", но часто при переводе заменяют на "многооконный графический интерфейс".

Первое появление графического интерфейса (рис. 4.6) следует связывать с фирмой XEROX. В ее лаборатории PARC (Palo Alto Reseach Center) в 1973 году создавался компьютер Alto. Последний был оснащен мышью и хорошим монитором. Считают, что этот компьютер обладал GUI, но широкого распространения не получил. Xerox все-таки решается вдохнуть жизнь в экспериментальный Alto, выпустив на рынок его полноценного коммерческого преемника – компьютер Star.


Рис. 4.6. Первый графический интерфейс от фирмы Xerox

Приведем высказывание из статьи Олега Свиргстина [63]: "Alto был первым в мире компьютером, на котором были практически реализованы метафора "рабочего стола" и графический пользовательский интерфейс, прежде существовавшие только в теоретических разработках".

Для операционных систем семейства UNIX, как и многих других, долгое время командный режим работы был основным. Пожалуй, сегодня он используется в основном для администрирования, его потеснил режим графического интерфейса. Фирма Microsoft более 10 лет (с 1981 года) обеспечивала персональным компьютерам IBM PC только командный режим, в то время как у соперников уже в 1984 году был реализован GUI. Правда, эта компания стремилась реализовать последний режим работы, что и было достигнуто в середине 90-х.

Приведем рисунок, иллюстрирующий этапы работы операционных систем Microsoft и UNIX в командном и графическом режимах. Из него видно, что для операционных систем UNIX/Linux до настоящего времени графический режим является надстройкой над командным, а для Windows – командный режим как основной прекратил существование в 1995 году (рис. 4.7).


Рис. 4.7. Командный и графический интерфейс семейства UNIX/Linux и Windows

Отметим, что операционная система MS DOS последние свои годы снабжалась надстройкой, обеспечивающей пользователями GUI. Названия этих графических оболочек были Windows1, Windows2, Windows3.

Из других графических интерфейсов назовем OPENSTEP, реализованный на компьютерах фирмы NeXT. Его создавал Стивен Джобс, основатель фирмы Apple, в период, когда он покинул ее и пытался завоевать мир новой разработкой. Этот интерфейс в дальнейшем был перенесен и на другие компьютерные платформы (рис. 4.8).

Обратите внимание на его отличия от того, что в это время предлагала фирма Microsoft со своей Windows95 (пример рабочего стола приведен в главе 2, в части, посвященной операционным системам этой фирмы).

По адресу http://www.guidebookgallery.org/guis можно познакомиться с "галереей" графических интерфейсов пользователей на разных компьютерных платформах. Приведем два снимка экрана, на которых представлен перечень всех элементов галереи (рис. 4.9).


Рис. 4.8. Графический интерфейс OPENSTEP Jan 1997 платформы

Отдельно остановимся на списке из 5 элементов Desktop metaphor GUI (non monolitic). Они содержат ссылки на описание систем, обеспечивающих графический интерфейс пользователя UNIX. Здесь коротко упомянем только два, остальные подробно рассматриваются дальше.


Рис. 4.9а. Галерея графических интерфейсов на разной аппаратуре (часть 1)

На этих рисунках обратите внимание на более чем десяток типов рабочих столов (от Amiga OS до Xerox Star/View Point/Global View). Хотя рабочий стол Windows занимает одно из мест, но на сегодняшний день многие производители приняли его стандарты. В этом же ряду упомянуты системы, активно влиявшие на развитие операционных систем, но сегодня уже не существующие. Среди них:

  • OS/2 от IBM, долгое время являвшаяся конкурентом Windows;
  • BeOS, созданная корпорацией Ве Inc и обладавшая в момент своего выпуска многими пионерскими новинками. Это работа на 64-разрядной аппаратуре, удобный интерфейс пользователя и многое другое.


Рис. 4.9б. Галерея графических интерфейсов на разной аппаратуре (часть 2)

OPEN LOOK представляет собой спецификацию графического интерфейса пользователя рабочих станций UNIX. Была создана в конце 1980-х годов Sun Microsystems и AT&T при участии Xerox. Эта спецификация была основной для операционной системы на ранних стадиях реализации графического интерфейса. Впоследствии утеряла свое значение в связи с появлением графического интерфейса Motif от OSF. Common Desktop Environment (CDE) – среда рабочего стола, основанная на системе Motif. Она была создана The Open Group вместе с рядом фирм: Hewlett-Packard, IBM, Novell. Некоторое время она была промышленным стандартом для UNIX-систем.

Режим GUI используется в разных операционных системах. Многие его разработчики пытались найти свой, наиболее привлекательный для пользователей "стиль". Со временем они вынуждены были оглядываться на то, что делают другие фирмы, или даже объединяться для стандартизации составляющих графического интерфейса. Современное представление о графическом интерфейсе, на наш взгляд, объединяет все лучшее от разных производителей. Думается, поиски в этом направлении продолжатся и далее, хотя часто говорят о том, что с первых шагов становления графического интерфейса ничего принципиально не изменилось – все его основные элементы остаются прежними (рабочий стол, меню, иконки).

Пожалуй, следует отметить и еще одну тенденцию: последние варианты реализации графического интерфейса построены с "оглядкой" на то, что реализовано в операционных системах Windows. Это объясняется большой их долей (около 90%) на рынке персональных компьютеров.

Как уже говорилось выше, для систем UNIX долгое время – с начала 70-х годов и, пожалуй, до конца 80-х – единственным режимом был командный режим работы. Сегодня он уступил свое место графическому. В семействе операционных систем UNIX (напомним, работающих на разных аппаратных платформах) графический интерфейс пользователя поддерживается системой X Window System. Основной сайт с информацией о ней имеет адрес http://www.x.org. Последняя версия, представленная там, имеет имя X11R7.5.

К истории X Window system

X Window system появилась в результате объединения усилий двух исследовательских групп MIT: группа, ответственная за сетевую программу (проект "Афина" – Project Athena) и Лаборатория информатики (Laboratory for Computer Science). До десятой версии X Window этот проект реализовали три программиста: Роберт Шейфлер (Robert Sheifler), Джим Геттис (Jim Gettys) и Рон Ньюмен (Ron Newman). Двое из них работали в MIT, а третий в DEC [16, 17].

Первоначально разрабатываемая в MIT (Массачусетском технологическом институте) система X Window стала распространяться свободно. Было создано несколько версий, и последняя из них, успешно используемая до настоящего времени, имела номер, присвоенный при создании и равный 11. Чаще других применяется версия 11, имеющая номер реализации 6. Поэтому на компьютерах с установленной системой Window часто встречаются каталоги, в названии которых есть символы X11R6 или X11.

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

В 1987 году ряд фирм решили создать единый стандарт оконного интерфейса для UNIX и для этого основали X Consortium ("Консорциум X"). В нем приняли участие IBM, DEC, HP и другие компании. Этот проект возник в противовес объединению AT&T и Sun. С 1997 X Consortium преобразовалась в "Открытую группу Х" (X for the Open Group) [16]. Информацию о деятельности этой организации (ее современное имя X.Org Foundation) можно получить в Интернете [64].

В статье [65] приведены примеры четырех исторически появлявшихся видов графического интерфейса XWindows (OpenLook, Motif, KDE и трехмерный графический интерфейс). Там о них говорится следующее:

"Эволюция пользовательских интерфейсов, построенных на основе X Window, наглядно доказывает преимущество выбранного разработчиками системы подхода. Свобода в определении политик и простота использования механизмов позволили X Window пройти эволюционным путем от внешне примитивного вида OpenLook к де-факто стандартному экранному представлению примитивов пользовательского интерфейса Motif, к гибко настраиваемому современному виду KDE и, наконец, к прообразам трехмерного интерфейса".

Заметим, что трехмерный графический интерфейс появился сравнительно недавно. Но самые последние версии популярных операционных систем реализуют его. Это относится к разновидностям Linux, Mac OS и версий Microsoft начиная с Vista [66].

Не претендуя на полноту охвата вопроса, отметим, что трехмерные рабочие столы могут быть построены на разных эффектах. Одним из первых была реализована метафора рабочей комнаты со шкафчиками, ящичками и тому подобными элементами, которые открывались, выдвигались и т.д. Другой подход, видимо, основан на объемной фигуре, которую можно поворачивать и изменять в размерах. И еще одна идея 3D Desktop предполагает использование прозрачных окон, за которыми можно увидеть информацию расположенных за ними окон. С одной из наиболее распространенных версий Linux Mandriva сегодня поставляется Metisse (рис. 4.10). Последний основан на эффекте перспективы.


Рис. 4.10. Пример трехмерного графического интерфейса Metisse дистрибутива Linux Mandriva

Для операционных систем Mac OS 3D интерфейс реализуется в Aqua. Он основан на эффекте прозрачности (рис. 4.11).


Рис. 4.11. Пример трехмерного графического интерфейса Aqua Mac OS

Еще один пример трехмерного интерфейса от Mac OS, при котором каждый пользователь работает на своей грани куба (рис. 4.12).


Рис. 4.12. Пример трехмерного графического интерфейса Aqua Mac OS

Трехмерный интерфейс операционной системы Windows Vista получил название Aero. Он построен на эффекте 3D Flip.


Рис. 4.13. Пример трехмерного графического интерфейса Aero Windows Vista

Основные понятия системы X Window

X Window system (или просто X Window, а теперь часто и Х) – графическая среда пользователя, поддерживающая одновременное выполнение многих программ в сети. В основе X Window – библиотека графических программ, используемых для создания GUI.

ЗАМЕЧАНИЕ. Отметим, что термину X Window дают разное определение. Поиск в Интернете позволяет получить их более десятка.

Достоинством системы X Window является ее мобильность (она не связана с конкретной операционной системой и не рассчитана на специфическое техническое обеспечение). Работа Х-системы основана на специфической модели клиент/сервер.

<

Последнее изменение этой страницы: 2016-06-10

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...