1.       Пользовательский интерфейс операционной среды

 

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

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

Пользовательский интерфейс (ПИ) - user interface - правила взаимодействия пользователя с приложением (или операционной средой), а также средства и методы, с помощью которых эти правила реализованы.

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

Графический интерфейс пользователя (GUI) - графическая среда организации взаимодействия пользователя с вычислительной системой. Графический интерфейс позволяет управлять поведением вычислительной системы через визуальные элементы управления: окна, списки, кнопки, гиперссылки и т.д.

Классификация ПИ:

Характеристики ПИ

  1. Интуитивность. Использование знакомых пользователю понятий и образов.
  2. Согласованность. Согласованный интерфейс позволяет пользователям переносить имеющиеся знания на новые задания.
  3. Дружественность. Дружественный интерфейс должен предотвращает ситуации, которые могут закончиться ошибками, предупреждает пользователя о возможных ошибках и способах их предупреждения.
  4. Принцип "обратной связи". Каждое действие, произведенное пользователем должно получать подтверждение (визуальное или звуковое). Полезно также предоставление информации о состоянии процесса.
  5. Простота интерфейса. "Делайте простые вещи простыми, а сложные возможными". Простота интерфейса означает обеспечение простоты работы в сочетании с реализацией доступа к широким функциональным возможностям. Один из возможных путей поддержания простоты ПИ - представление на экране информации, минимально необходимой для выполнения пользователем очередного шага задания. Другой путь - размещение и представление элементов управления на экране с учетом их смыслового значения и логической взаимосвязи. Этот подход ориентируется на ассоциативное мышление пользователя.

 

Параллельное существование терминов операционная система и операционная среда, связано с тем, что операционная система может поддерживать несколько прикладных операционных сред.

 

Самые популярные среды рабочего стола:

- GNOME (GNU Network Object Model Environment - сетевая объектная среда GNU) - это программное обеспечение с открытым кодом, разработка которого является частью проекта GNU.

- KDE (К Desktop Environment - графический пользовательский интерфейс фирмы Corel) - это свободно распространяемое программное обеспечение с открытым исходным кодом проекта KDE.

 Оба включают:

-   рабочую поверхность, содержащую значки;

- нижнюю панель, содержащую значки, нажатие на которые приводит к запуску соответствующих приложений или меню;

- множество приложений, таких как почтовые программы, обозреватели, редакторы файлов и т.д.

- меню для запуска приложений;

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

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

- инструменты управления для настройки вашей системы.

  GNOME и KDE различаются между собой главным образом утилитами управления и инструментами настройки рабочего стола.

2.       Файловые системы и управление файлами

 

Файл – поименованная область внешней памяти, имеющая своё имя.

 

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

   Классификации файлов:

                1. текстовые, бинарные.

                2. простые, каталоги, устройства, специальные.

                3. системные, архивные, скрытые

   История развития файлов и файловых систем

                - массивы данных простой структуры

                - индексные файлы

                - каталоги с информацией о файлах

                - сетевая и иерархическая структура каталогов

                - база данных

Каталог - это составленный в определенном порядке перечень каких-либо однородных предметов (в нашем случае файлов).

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

В широком смысле понятие "файловая система" включает:

- совокупность всех файлов на диске,

- наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске,

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

 

Классификация файловых систем

По предназначению файловые системы можно классифицировать на следующие категории:

·         для носителей с произвольным доступом (например, жёсткий диск). Поскольку доступ к дискам в разы медленнее, чем доступ к оперативной памяти, для прироста производительности во многих файловых системах применяется асинхронная запись изменений на диск.

·         для носителей с последовательным доступом (например, магнитные ленты).

·         для оптических носителей — CD и DVD.

·         виртуальные файловые системы: AEFS и др.

·         сетевые файловые системы: NFS, GmailFS.

·         для флэш-памяти ExtremeFFS

Основные функции любой файловой системы нацелены на решение следующих задач:

·         именование файлов;

·         программный интерфейс работы с файлами для приложений;

·         отображения логической модели файловой системы на физическую организацию хранилища данных;

·         устойчивость файловой системы к сбоям питания, ошибкам аппаратных и программных средств;

·         содержание параметров файла необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.)

Собственно операторы управления файлами:

mkdir создаёт новый каталог. Просто укажите имя каталога, который вы

хотите создать после имени команды.

                cd используется для смены рабочего каталога.

rmdir удаляет каталоги из файловой системы

echo выводит указанный текст на экран

cat это сокращение от ''concatenate'' (сцеплять, связывать). Была разработана для объединения нескольких текстовых файлов в один.

Для изменения временных атрибутов файла используется утилита touch. С помощью этой утилиты можно изменить отметку времени доступа и отметку времени изменения файла.

Утилита cp применяется для копирования файлов.

 

Сравнительная таблица файловых систем

 

FAT

FAT32

NTFS

Системы, её поддерживающие

DOS, Windows9Х, NT всех версий

Windows98, NT, XP всех версий

NT4, NT5, 2000, XP, 2003

Максимальный размер тома

2 Гбайт

практически неограничен

практически неограничен

Макс. число файлов на томе

примерно 65 тысяч

практически не ограничено

практически не ограничено

Имя файла

с поддержкой длинных имен - 255 символов, системный набор символов

с поддержкой длинных имен - 255 символов, системный набор символов

255 символов, любые символы любых алфавитов (65 тысяч разных начертаний)

Безопасность

нет

нет

да (начиная с NT5.0 встроена возможность физически шифровать данные)

Устойчивость к сбоям

средняя

плохая (средства оптимизации по скорости привели к появлению слабых по надежности мест)

полная - автоматическое восстановление системы при любых сбоях

Экономичность

минимальная (огромные размеры кластеров на больших дисках)

улучшена за счет уменьшения размеров кластеров

максимальна. Очень эффективная и разнообразная система хранения данных

Быстродействие

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

полностью аналогично FAT, но на дисках большого размера (десятки гигабайт) начинаются серьезные проблемы с общей организацией данных

система не очень эффективна для малых и простых разделов (до 1 Гбайт), но работа с огромными массивами данных и внушительными каталогами организована как нельзя более эффективно и очень сильно превосходит по скорости другие системы

 

 

 

 

 

 

 

 

 

3.       Ассемблеры и макроязыки

 

Ассемблер (от англ. assemble — собирать) — компилятор с языка ассемблера в команды машинного языка.

Язык ассемблера - согласно ГОСТ 19781-90 - язык программирования; символьная форма машинного языка с рядом возможностей, характерных для языка высокого уровня.

Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием.

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

Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM) и Microsoft Macro Assembler (MASM).

Плюсы языка ассемблера

1.                   Использование меньшего количества команд и обращений в память позволяет увеличить скорость и уменьшить размер программы.

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

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

Минусы языка ассемблера

1.                   Большие объёмы кода и большое число дополнительных мелких задач, что приводит к тому, что код становится очень сложно читать и понимать => усложняется отладка и доработка программы.

2.                   Меньшее количество доступных библиотек, их малая совместимость между собой.

3.                   Проблемы с межплатформенностью.

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

- Быстродействие (драйверы);

- Размер кода (загрузочные сектора, программное обеспечение для микроконтроллеров и процессоров с ограниченными ресурсами, вирусы, программные защиты);

Применение

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

 

С использованием программирования на ассемблере производятся:

·                     Оптимизация критичных к скорости участков программ написанных на языке высокого уровня, таком как C++. Это особенно актуально для игровых приставок, у которых фиксированная производительность.

·                     Создание операционных систем (ОС). ОС часто пишут на Си, языке, который специально был создан для написания одной из первых версий Unix.

·                     Программирование микроконтроллеров (МК) и других встраиваемых процессоров. По мнению профессора Танненбаума, развитие МК повторяет историческое развитие компьютеров новейшего времени.[1] На сегодняшний день для программирования МК весьма часто применяют ассемблер. В МК приходится перемещать отдельные байты и биты между различными ячейками памяти. Программирование МК весьма важно, так как, по мнению Танненбаума, в автомобиле и квартире современного цивилизованного человека в среднем содержится 50 микроконтроллеров.[2]

·                     Создание драйверов. Некоторые участки драйверов, взаимодействующие с аппаратным обеспечением, программируют на ассемблере. Хотя в целом в настоящее время драйверы стараются писать на языках высокого уровня в связи с повышенными требованиями к надёжности. Надёжность для драйверов играет особую роль, поскольку в Windows NT и Linux драйверы работают в режиме ядра. Одна ошибка может привести к краху системы.

·                     Создание антивирусов и других защитных программ.

·                     Написание трансляторов языков программирования.

Компиляторы - это программы, которые преобразуют исходные тексты программ, написанные на языке программирования высокого уровня, в программу на машинном языке.

Интерпретаторы выполняют аналогичную функцию, но делают это построчно всякий раз во время исполнения программы.

 

 

 

 

 

Макроязык - набор правил для объявления и использования макросов. Макросы используются в языках программирования, например, в Ассемблере и в прикладных программах, например, в Microsoft Office. Макроязык - программное средство, позволяющее пользователю задавать в тексте условные эквиваленты определенных его фрагментов. Макроязык состоит из:

·                     макроопределений, создаваемых пользователем; и

·                     из программ-препроцессоров, переводящих макроопределения в результирующие тексты.

Макропроцессор - модуль системного ПО, позволяющий расширить возможности языка Ассемблера за счет предварительной обработки исходного текста программы. Макрос в языке ассемблера Макрос - символьное имя, заменяющее несколько команд языка ассемблера. Может включать в себя: инструкции, данные, метки (в том числе и локальные). В зависимости от используемого ассемблера синтаксис объявления макроса может существенно различаться. Большинство современных ассемблеров поддерживают передачу входных параметров макросу. Макросы <разворачиваются> в последовательность кода и данных во время ассемблирования.

Достоинства макросов

·                     упрощение и ускорение написания программы

·                     повышения компактности

·                     повышение наглядности текста программы

Недостатки макросов

·         использование <шаблонного кода> в то время как для каждой конкретной ситуации код, возможно, можно улучшить.

·         использование одной процедуры, вызываемой N раз часто выгоднее.

·         использования вставки одного и того же макроса N раз в текст программы => теряется <контроль над каждым байтом программы>.

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

Генезис.

  Автокоды для машинных языков (194х-195х).
  Макропроцессоры и постпроцессоры для языков программирования (195х-196х)
  Встроенные макропроцессоры в макроассемблеры и языки С (196х-197х)
  Макросы в приложениях (например, MS Office) (с 198х)
  Шаблоны функций и классов в языках ОО-программирование (с 199х)
  Шаблоны функций и Шаблоны классов
  Паттерны проектирования программных комплексов (с 199х)
  Метаязык XML для создания языков разметки (с1998).

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

Существуют четыре основных задачи, решаемых макропроцессором:

1.                   Распознавание макроопределений.

2.                   Хранение макроопределений.

3.                   Распознавание макрокоманд.

4.                   Расширение макрокоманд и подстановка параметров.

Таким образом, макропроцессор должен распознавать и обрабатывать макроопределения и макрокоманды.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.       Формальные системы и языки программирования

Формальные системы (ФС) – это совокупность абстрактных объектов, не связанных с внешним миром, в котором представлены правила оперирования множеством символов в строго синтаксической трактовке без учета смыслового содержания. (А никто и не говорил, что будет легко :)

Признаки формальной системы:

  1. Наличие конечного алфавита (словарь).
  2. Правило построений формул. Формулы не могут быть неправильно построенными, но могут быть неверными.
  3. Должно быть задано конечное число аксиом. Аксиома – это формула, считающейся истинной без доказательства.
  4. Правила вывода. Позволяют выводить теоремы из аксиом или других теорем. Теорема – формула, истинность которой доказана с помощью правил вывода из аксиом или других теорем.

Множество символов и множество формул в совокупности определяют язык или сигнатуру формальной теории.

Чаще всего имеется возможность эффективно выяснять, является ли данная формула аксиомой; в таком случае теория называется эффективно аксиоматизированной или аксиоматической.

Множество аксиом может быть конечным или бесконечным.

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

Для каждого правила вывода R и для каждой формулы A эффективно решается вопрос о том, находится ли выбранный набор формул в отношении R с формулой A, и если да, то A называется непосредственным следствием данных формул по правилу R.

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

Формула называется теоремой, если существует вывод, в котором эта формула является последней.

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

Теория, в которой не все формулы являются теоремами, называется абсолютно непротиворечивой.

 

Для эрудиции: В 30-е гг. XX века Курт Гёдель показал, что есть целый класс теорий первого порядка, являющихся неполными. Более того, формула, утверждающая непротиворечивость теории, также невыводима средствами самой теории. Этот вывод имел огромное значение для математики, так как формальная арифметика (а на ней базируется теория действительных чисел, без которой нельзя представить современную математику) является как раз такой теорией первого порядка, а, следовательно, формальная арифметика и все теории, содержащие ее, в том числе теория действительных чисел, являются неполными.

 

Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.

Язык программирования (алгоритмический язык) - набор правил, определяющих, какие последовательности символов составляют программу и какие вычисления описывает программа.

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

 

Три основные характеристики языков программирования:

1.                   Уровень языка - характеризуется сложностью задач, решаемых с помощью этого языка.

2.                   Мощность языка - характеризуется количеством и многообразием задач, алгоритмы решения которых можно записать, используя язык. Чем выше уровень языка, тем ниже его мощность и наоборот.

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

Существует большое количество других характеристик:

1.                   Надежность - язык должен обеспечивать минимум ошибок при написании программ. Более того, язык должен быть таким, чтобы неправильные программы было трудно писать.

2.                   Удобочитаемость - легкость восприятия программ человеком. Это характеристика важна при коллективной работе, когда несколько человек работают с одними и теми же текстами программ.

3.                   Полнота - характеризует способность описать класс задач в некоторой предметной области.

4.                   Гибкость - характеризует легкость выражения необходимых действий.

5.                   Мобильность - независимость от аппаратных средств, обеспечивающая переносимость программного обеспечения.

6.                   Эффективность - обеспечение эффективной реализации, которая включает:

·                     эффективную реализацию компилятора;

·                     эффективную генерацию компилятором кода программ.

 

Классификации языков программирования

В настоящее время сложилось довольно много классификаций языков программирования.

Классификация по поддерживаемым методологиям:

·                     языки структурного программирования;

·                     языки параллельного программирования(императивного);

·                     языки объектно-ориентированного программирования;

·                     языки функционального программирования;

·                     языки логического программирования;

·                     языки программирования в ограничениях.

Классификация по принадлежности к семействам.

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

·                     семейство универсальных языков.

·                     семейство уникальных языков.

·                     семейство языков параллельного программирования.

·                     С- семейство языков.

·                     Pascal-семейство языков.

·                     Ada-семейство языков.

·                     Simula-семейство языков.

·                     Lisp-семейство языков.

·                     Prolog-семейство языков.

Классификация по ориентации на предметные области:

·                     языки форматирования текстов.

·                     языки разметки.

·                     языки скриптов.

·                     промежуточные языки программирования.

·                     языки создания графики.

·                     языки описания аппаратуры.

·                     языки описания виртуальной реальности.

·                     языки конфигурирования.

Классификация по степени абстракции от аппаратуры:

·                     языки низкого уровня. Такие языки имеют простые машиноподобные команды и осуществляют прямой доступ к памяти. Пример – ассемблер для любой архитектуры.

·                     языки высокого уровня. Языки предоставляют возможность определять сложные структуры данных, доступ к памяти осуществляется через операции. Пример - Pascal, С и Ada.

·                     языки сверхвысокого уровня. Команды исполняются на полностью абстрактной машине, полностью скрыт доступ к памяти. Пример - Prolog, SETL, APL, Miranda.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.       Интерактивные системы

 

Интерактивная ИС - информационно-вычислительная система, в которой передача и обмен информацией происходят в режиме диалога.

Интерактивный режим (от англ. interaction - взаимодействие) - режим непосредственного взаимодействия человека и компьютера.

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

Модальный диалог - требует обязательного ответа.

Немодальный диалог - возможность отложенного ответа или отмены.

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

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

Интерактивность — это способность информационно-коммуникационной системы, без участия человека, активно и разнообразно реагировать на действия пользователя. Говорят, что система «умная», то есть обладает каким-то интеллектом.

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

Так же не является интерактивностью способность людей общаться в форумах и создавать сообщества.

Примеры:

·                     Интерактивная система просмотра системных руководств;

·                     Интерактивная система изучения английского языка

·                     Интерактивная Web-система тестирования "WebTest"

·                     Интерактивная презентация...

 

Hosted by uCoz