Файл
Событие
Объект синхронизации (мьютекс, семафор)þ
Канал данных
Понятие файла
Объект ОС, однозначно идентифицирующий какой-либо информационный ресурс и обладающий набором характеристик.
Понятие файловой системы
Регламент, определяющий способ организации, хранения и именования данных на носителях информации.
Функции файловой системы
Именование файлов
Организация программного интерфейса работы с файлами для приложений
Отображение логической модели файловой системы на физическую организацию хранилища данных
Разграничение прав доступа к файлам
Организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств и т.п.
Содержание параметров файла необходимых для правильного его взаимодействия с другими объектами ОС
Понятие тома данных
В современных ОС логический элемент разделения физического носителя данных.
Инструментальное ПО
Набор программ, предназначенных для создания других программ.
Понятие разработки приложений
Процесс создания компьютерных программ.
Состоит из:
Анализа
Проектирования
Кодирования
Тестирования
Сопровождения
Средства для разработки
Язык программирования
Программы для компиляции, компоновки, интерпретации
Библиотеки подпрограмм
Из истории ЯП
Машинный язык
Автокод (язык ассемблера)þ
Процедурные языки
....
Типы данных
Элементарные (числа, символы)þ
Массивы
Строки
Структуры
Логические
Указатели
Понятие подпрограммы
Однозначно идентифицируемая часть программы, содержащая описание определённого набора действий.
Операторы (инструкции) ЯП
Наименьшая автономная часть ЯП.
Инструкции делятся на:
Управления
Пересылки данных
Вычисления
Сравнения
Определения
Прикладное ПО
Бывает открытое и закрытое.
Оболочка ОС
Интерпретатор команд ОС, предоставляющий интерфейс взаимодействия пользователя с функциями ОС.
Бывает: консольной и графической
Базы данных
Структурированный набор данных, описывающий характеристики каких-либо объектов.
Система управления БД
Специальный программный комплекс, предназначеный для организации и ведения БД.
Основные функции СУБД
Управление данными на ВЗУ
Управление данными в памяти
Журналирование
Организация поиска
Организация интерфейса
Компоненты СУБД
Ядро
Процессор языка БД
Подсистема управления транзакциями
Сервисные программы
Классификация СУБД
По модели организации данных
Сетевая / Иерархическая / Реляционная / Объектно-ориентированная / Объектно-реляционная
По архитектуре хранения
Локальная / Распределённая
По способу доступа
Файл-серверная / Клиент-серверная / Встраиваемая
Модульное программирование
Разделение программы на модули, которые состоят из процедур и данных, которыми они оперируют.
Объектно-ориентированное программирование
Подход к проектированию и программированию, при котором основными концепциями являются объекты и классы.
Класс – тип, описывающий устройство объекта. Максимальное приближение к сущности реального мира.
Объект - - экземпляр класса.
Основные понятия ООП
Абстракция данных
Инкапсуляция
Наследование
Полиморфизм
Логическое программирование
Подход к программированию, снованный на выводе новых фактов из данных фактов согласно заданным логическим правилам. Логическое программирование основано на теории математической логики.
Классы программных средств. Операционные системы. Системы программирования. Программные продукты.
Операционные системы. Функции операционной системы (ОС): управление задачами, управление данными, связь с оператором. Системное внешнее устройство и загрузка ОС. Резидентные модули и утилиты ОС. Управляющие программы (драйверы) внешних устройств. Запуск и остановка резидентных задач. Запуск и прекращение нерезидентных задач. Управление прохождением задачи и использованием памяти. Понятие тома и файла данных. Сообщения операционной системы. Команды и директивы оператора.
Системы программирования. Понятие разработки приложений. Состав системы программирования: язык программирования (ЯП), обработчик программ; библиотека программ и функций. История развития и сравнительный анализ ЯП.
Язы́к программи́рования — формальная знаковая система, предназначенная для записи компьютерных программ.
Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.
Со времени создания первых программируемых машин человечество придумало уже более восьми с половиной тысяч языков программирования.[1] Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Язык программирования может быть представлен в виде набора спецификаций, определяющих его синтаксис и семантику.
Для многих широко распространённых языков программирования созданы международные стандарты. Специальные организации проводят регулярное обновление и публикацию спецификаций и формальных определений соответствующего языка. В рамках таких комитетов продолжается разработка и модернизация языков программирования и решаются вопросы о расширении или поддержке уже существующих и новых языковых конструкций.
Язык программирования строится в соответствии с той или иной базовой моделью вычислений и парадигмой программирования.
Несмотря на то, что большинство языков ориентировано на императивную модель вычислений, задаваемую фон-неймановской архитектурой ЭВМ, существуют и другие подходы. Можно упомянуть языки со стековой вычислительной моделью (Forth, Factor, Postscript и др.), а также функциональное (Лисп, Haskell, ML и др.) и логическое программирование (Пролог) и язык Рефал, основанный на модели вычислений, введённой советским математиком А. А. Марковым-младшим.
В настоящее время также активно развиваются проблемно-ориентированные, декларативные и визуальные языки программирования.
Компилируемые и интерпретируемые языки
Языки программирования могут быть разделены на компилируемые и интерпретируемые.
Программа на компилируемом языке при помощи специальной программы компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполнимый модуль, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.
Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора. Можно сказать, что процессор компьютера — это интерпретатор машинного кода.
Кратко говоря, компилятор переводит исходный текст программы на машинный язык сразу и целиком, создавая при этом отдельную исполняемую программу, а интерпретатор выполняет исходный текст прямо во время исполнения программы.
Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно компилируемого языка, как, например, Паскаль, можно написать интерпретатор. Кроме того, большинство современных «чистых» интерпретаторов не исполняют конструкции языка непосредственно, а компилируют их в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов).
Для любого интерпретируемого языка можно создать компилятор — например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения.
Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем, при каждом изменении текста программы требуется её перекомпиляция, что создаёт трудности при разработке. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.
Интерпретируемые языки обладают некоторыми специфическими дополнительными возможностями (см. выше), кроме того, программы на них можно запускать сразу же после изменения, что облегчает разработку. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных усилий.
Однако интерпретируемые программы выполняются заметно медленнее, чем компилируемые, кроме того, они не могут выполняться без дополнительной программы-интерпретатора.
Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.