- •Язык программирования. Общие принципы построения и использования языков программирования.
 - •Стандарты языков программирования.
 - •Лямбда-исчисление. Аппликация, абстракция, редукция, преобразование.
 - •Списки и функциональные выражения в функциональных языках программирования.
 - •Механизмы и средства взаимодействия программы с операционной системой.
 - •Функциональное программирование. Основные положения. Основные отличия от других типов языков программирования.
 - •Классификация языков программирования. Близость языков программирования к естественному языку.
 - •Унификация и хорновский клоз в логических языках программирования.
 - •Модель вычислений функциональных языков программирования.
 - •Языки программирования низкого уровня.
 - •Средства разработки графического интерфейса пользователя. Эргономические свойства человеко-машинного интерфейса.
 - •Процедурные языки программирования. Основные отличия от других типов языков.
 - •Обоснование выбора языка программирования.
 - •Перегрузка в языках программирования.
 - •Логические языки программирования. Основные положения и понятия. Основные отличия от других типов языков программирования.
 - •Объектно-ориентированные языки программирования (ооп). Основные отличия от других концепций языков программирования.
 - •Полиморфизм в ооп. Виртуальные функции. Таблицы виртуальных функций.
 - •Структура языка программирования. Синтаксис и семантика языка программирования. Расширенная форма Бэкуса-Наура.
 - •Наследование в ооп. Множественное наследование. Проблемы множественного наследования.
 - •Инкапсуляция в ооп. Контроль доступа.
 - •Понятие класса и объекта в ооп. Атрибуты, методы, конструктор и деструктор, статические члены класса.
 - •Диаграммы классов uml. Основные элементы и обозначения.
 - •Данные. Средства описания данных. Типизация языка.
 - •Преобразования типов. Контроль соответствия типов данных.
 - •Ооп. Основные концепции ооп.
 - •Современные интегрированные схемы разработки программ. Основные компоненты среды программирования.
 - •Декомпозиция программ.
 - •Трансляторы. Интерпретация и компиляция.
 - •Макропроцессоры и макрогенераторы.
 - •Потоки и процессы. Сходства и различия.
 - •Мониторы и защищаемые переменные в параллельном программировании.
 - •Семафоры в параллельном программировании. Типы семафоров.
 - •Отладчики. Генераторы кода и приложений.
 - •Параллельная обработка данных и параллелизм. Параллельное и распределенное программирование.
 - •Основные проблемы параллельного и распределенного программирования.
 - •Оценка максимально возможного параллелизма.
 - •Основные модели параллельного программирования.
 - •Оптимизатор. Основные функции оптимизатора.
 - •Обработка исключительных ситуаций. Иерархия и виды исключительных ситуаций.
 - •Операторы обработки исключительных ситуаций в различных языках программирования.
 - •Элементарные типы данных.
 - •Перегрузка данных, операторов, методов.
 - •Составные типы данных.
 - •Механизмы логического вывода. Прямая и обратная цепочки рассуждений.
 - •Пространство имен, область видимости, время жизни переменных.
 - •Ошибки при работе с вещественными числами. Смешанная арифметика.
 - •Операторы выбора и условные операторы.
 - •Вещественные числа. Способы представления. Операции над вещественными числами.
 - •Оператор присваивания. Операторы цикла.
 - •Распределение памяти при выполнении программы.
 - •Динамические структуры данных. Реализация динамических структур данных с помощью указателей.
 - •Библиотеки программ и классов. Статические и динамические библиотеки. Критерии проектирования библиотек.
 - •Подпрограммы. Формальные и фактические параметры подпрограмм.
 - •Передача параметров подпрограмме.
 - •Программный стек и его изменение.
 - •Рекурсивный и итерационный методы решения задач. Виды рекурсий.
 - •Общая характеристика языков ассемблера: назначение, принципы построения и использования; структура языка.
 - •Сериализация и десериализация. Методы сериализации объектов в базу данных.
 
- 
Структура языка программирования. Синтаксис и семантика языка программирования. Расширенная форма Бэкуса-Наура.
 
Синтаксис – это набор правил, определяющих какие последовательности символов допустимы. Задается с помощью формальной нотации.
Синтаксическая категория представляет собой ту конструкцию ЯП, которая описывается. Описание задают формальные правила. Для описания правил используют следующие обозначения:
- 
прямой жирный текст – фактические символы
 - 
курсив – синтаксические категории
 - 
[A] – элемент А входит или не входит в описание синтаксиса
 - 
{А} – 0 или более повторений элемента А
 - 
(АВ) – группировка элементов
 - 
| - или
 
Семантика языков программирования - это смысл синтаксических категорий ЯП, это интерпретация (смысловое значение) абстрактного синтаксиса (допустимых конструкций языка), выраженная в терминах той или иной математически строгой модели. Семантика связана с используемой концепцией программирования.
Расширенная форма Бекуса-Наура используется для описания контекста свободных и формлаьных грамматик и представляет собой некоторые правила продукции(?):
Левая часть – нетерминальный символ. Правая – терминальный или нетерминальный. Правая часть определяет метод конструкции членов синтаксических категорий в терминах других синтаксических категорий или\и терминальных символах.
Форма Бэкуса-Наура (БНФ) была впервые применена при описании Алгола-60. БНФ совпадает по сути с нотацией КС-грамматик, отличаясь лишь обозначениями. Предусмотрены следующие метасимволы:
- 
— служат для выделения нетерминалов — понятий языка.
 - 
| — «или». Разделяет альтернативные правые части правил.
 - 
— «есть по определению». Заменяет стрелку, используемую при записи продукций КС-грамматик.
 
Терминальные символы записываются как есть, никаких специальных способов их выделения не предусмотрено. Вот пример определений на БНФ, взятый из спецификации Алгола-60 — «Модифицированного сообщения»:
- 
<простое арифметическое выражение> ::=
 - 
<терм> 1 Окак операции типа сложения> <терм> |
 - 
<простое арифметическое выражение>
 - 
<знак операции типа сложения> <терм>
 - 
<знак операции типа сложения> ::= + | -
 
Как видим, для выражения повторений используется рекурсия, причем повсеместно — левая. БНФ использована Н. Виртом при описании языка Паскаль. Хотя в нотацию были добавлены метаскобки {и}, обозначающие повторение, применены они лишь в отдельных случаях, в то время как, например, грамматика выражений леворекурсивна.
- 
Наследование в ооп. Множественное наследование. Проблемы множественного наследования.
 
Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.
Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.
