- •Вопрос 2. Спецификация, представление, реализация абстрактных типов данных.
- •Вопрос 3. Многомашинные вс. Реализация на основе ес эвм. Кластерные вс.
- •Типы кластеров:
- •Вопрос 2. Линейные структуры данных: стек, очередь, дек
- •Вопрос 3. Сравнительный анализ и основные компоненты инструментальных среды разработки пользовательских интерфейсов. Классификация элементов пользовательского интерфейса
- •Вопрос 1. Конкретные реализации языков функционального программирования: язык программирования Лисп, основные объекты, примитивы, списки, правила составления программ.
- •Вопрос 2. Семантическая теория программ. Вычислимость и разрешимость
- •Вопрос 3. Формальные методы описания диалоговых систем. Законы Фитса и Хика.
- •Вопрос 1. Основные конструкции логической программы: факты, правила, запросы, логические переменные. Операционная и декларативная семантика логических программ.
- •1. 5. Декларативный и процедурный смысл программ
- •Вопрос 2. Интерфейсы. Способы согласования аппаратных структур. Организация асинхронных интерфейсов
- •Элементы процесса как поведенческой категории :
- •Дескриптивный асинхронный процесс (dp)
- •Асинхронный процесс (ap)
- •Инициаторы
- •Вопрос 3. Эргономика пользовательского интерфейса. Критерии эргономичности интерфейса. Человеческие ошибки. Методы предотвращения ошибок. Снижение чувствительности системы к ошибкам.
- •Типы ошибок
- •Методы предотвращения ошибок
- •Как избежать сообщений об ошибках
- •Вопрос 1. Интерпретация и корректность логических программ. Абстрактный интерпретатор, значение логической программы, вычислительная модель
- •Вопрос 2. Порядковые статистики (Гулаков сказал что его не будет)
- •Субъективная удовлетворенность
- •Типичные интерфейсные ошибки отечественного по
- •Программа перегружена элементами управления
- •Терминология не адекватна знаниям пользователя о системе
- •От пользователя постоянно требуется дополнительная информация
- •Вопрос 1. Программирование баз данных. Динамическая база данных. Добавление и удаление фактов в процессе работы программы.
- •Вопрос 2. Поиск и кодирование (сжатие) данных, кодовые деревья, оптимальные префиксные коды
- •Вопрос 1. Рекурсивное программирование на логическом языке. Рекурсивные структуры данных – списки. Объявление списков. Составные списки. Голова и хвост списка. Примеры работы со списками.
- •Вопрос 2. Бинарный поиск, хеширование
- •Вопрос 3. Тестирование и отладка программного обеспечения. Структурное и функциональное тестирование. Особенности тестирования объектно-ориентированного по. Автоматизация процесса тестирования.
- •Вопрос1. Вычислительная модель программы на логическом языке. Согласование целевых утверждений. Сопоставление и унификация. Детерминизм.
- •Вопрос 2. Понятие выполнения сети. Свойства сети (устойчивость, безопасность, консервативность).
- •Вопрос 3. Автоматизация проектирования программного обеспечения на базе case-технологий. Принципы построения и т.Д.
- •Вопрос 1. Множественные выражения Программирование второго порядка Недетерминированное программирование
- •Вопрос 2. Нелинейные структуры данных: иерархические списки, деревья и леса, бинарные деревья
- •Вопрос 1. Вне логические предикаты. Ввод-вывод. Доступ к программам и обработка программ. Металогические предикаты. Сравнение не основных термов.
- •Вопрос 2. Алгоритмы сортировки
- •Сортировка разделением (Quicksort)
- •Вопрос 1. Constraint–Пролог: операционная семантика обобщение механизма унификации, понятие constraint'а. Операционная модель Constraint-пролоГа.
- •Вопрос 2. Нелинейные структуры: обходы деревьев
- •Вопрос 3. Качество по. Критерии качества: сложность, корректность, надежность, трудоемкость. Методика оценки качества по. Метрические особенности объектно-ориентированных пс. Сертификация по
- •Вопрос 1. Cancelled мистером г.
- •Вопрос 2. Стандартные схемы программ. Методы формальной спецификации и верификации.
- •Вопрос 1. Использование деревьев в задачах поиска: бинарные деревья поиска, случайные, оптимальные, сбалансированные по высоте и рандомизированные деревья поиска
- •. Деревья цифрового поиска
- •Вопрос 2. Определение асинхронного процесса как описания модели вычислительного процесса. Глобальные свойства – асинхронность, недетерминированность, параллельность.
- •1. Задачи сортировки; внутренняя и внешняя сортировка
- •2. Подклассы асинхронного процесса. Эффективный асинхронный процесс
- •Длительность реакции системы
- •Субъективное восприятие скорости работы
- •Приемы для уменьшения субъективного восприятия
- •1. Оптимальная сортировка.
- •2. Конвейерный процесс. Автономный процесс. Асинхронный процесс как метамодель.
- •Непосредственное манипулирование
- •Потеря фокуса внимания (прерывание)
- •Ограничение принятия решений
- •1. Анализ сложности и эффективности алгоритмов поиска и сортировки.
- •2. Классификация сетей (ординарные, автоматные, маркированный граф).
- •Понятность системы
- •Ментальная модель
- •Метафора
- •Аффорданс
- •Стандарт
- •1. Файлы: организация и обработка, представление деревьями: b-деревья.
- •2. Сетевое представление параллельных процессов. Области применения сетей Петри
- •3. Основы теории формальных языков и грамматик. Основные понятия и определения. Операции над языками. Классификация формальных языков и грамматик по порождающей способности
- •1. Алгоритмы на графах: представления графов, схемы поиска в глубину и ширину, минимальное остовное дерево, кратчайшие пути.
- •2.1.Поиск в глубину
- •2.2 Поиск в ширину.
- •2. Протоколы взаимодействия объектов вычислительных структур. Понятие протокола.
- •3. Вывод контекстно-свободных (кс) – грамматик и правила построения дерева вывода. Синтаксический разбор. Способы задания схем грамматик. Форма Бэкуса-Наура.
- •1. Теория сложности алгоритмов: np-сложные и труднорешаемые задачи.
- •2. Недетерминированные конечные автоматы. Конечные преобразователи и переводы. Преобразование некоторых грамматик к автоматному виду.
- •3. Объектно-ориентированное проектирование. Принципы проектирования. Схемы, диаграммы, инструменты.
- •1. Детерминированные конечные автоматы. Эквивалентные состояния и автоматы.
- •2. Синтаксический анализ. Метод оперативного предшествования. Восходящие и нисходящие методы синтаксического анализа.
- •2. Жизненный цикл программного обеспечения. Структура жизненного цикла согласно международного стандарта.
- •1. Нисходящие распознаватели. Ll(k) – грамматики. Построение детерминированного нисходящего распознавателя.
- •2. Параллельная обработка как основа высокопроизводительных вычислений. Уровни организации параллелизма: уровень заданий, программ и команд. Системы (языки) параллельного программирования.
- •1. Восходящие распознаватели. Lr(k) грамматики. Построение грамматики.
- •2. Понятие архитектуры вычислительной системы (вс). Архитектура как набор компонент и как система уровневых интерфейсов. Основные аппаратные и программные элементы вс.
- •1.1. Архитектура как набор взаимодействующих компонент
- •1.2. Архитектура как интерфейс между уровнями физической системы
- •1. Магазинные преобразователи. Определение магазинного преобразователя. Перевод, определяемый преобразователем.
- •2. Архитектура системы команд. Микропроцессоры (мп) с полным (cisc) и сокращённых (risc) набором команд. Основные принципы risc- архитектуры. Организация risc мп Alpha 21x64 фирмы dec.
- •Особенности архитектуры Alpha компании dec
- •1. Описание перевода или трансляции. Синтаксически-управляемые (су) – схемы.
- •2. Основные идеи объектно-ориентированных языков программирования. Создание абстрактных типов данных. Инкапсуляция. Полиморфизм. Наследование.
- •3. Развитие архитектур современных мп. Конвейеризация и динамическое выполнение потока команд. Суперскалярность. Архитектура epic мп Intel itanium.
- •1. Транслирующие грамматики. Построение транслирующей грамматики по су-схеме. Атрибутные транслирующие грамматики.
- •3. Векторные и векторно-конвейерные вс. Структура векторного процессора. Матричные вс.
- •1. Трансляторы, интерпретаторы и компиляторы. Стадии работы компиляторы. Лексический анализ.
- •3. Системы массовой параллельной обработки (мрр). Супер эвм фирмы sgi - Cray t3e(t3d) -1200.
- •2. Классификация и типы вс. Многомашинные и многопроцессорные вс. Представление вс на основе распределения потоков команд и данных (классификация Флинна)
Вопрос 1. Конкретные реализации языков функционального программирования: язык программирования Лисп, основные объекты, примитивы, списки, правила составления программ.
Основная особенность ЛИСПа – в нем поддерживается один составной тип данных списки. Самый популярный диалект языка лисп common lisp. В основе языка Lisp лежит использование двух основных конструкций - списков и атомов. Атомом в языке Lisp называется имя, состоящее из букв, цифр и специальных знаков. Атом, не являющийся числом, называется символом (т.е. атом a10 это символ, а атом 10 - не символ). Обычно интерпретатор Lisp не делает разницы между прописными и строчными буквами. Иными словами, символы Atom, ATOM или atom эквивалентны .Как уже было сказано, наряду с символами в Lisp также используются числа, которые также представляют собой ограниченную пробелами последовательность знаков. Основными типами чисел являются целые и дробные. Все числа в Lisp являются константами, в то время как символы являются по умолчанию переменными.
Другой важной конструкцией языка являются списки. Список – это структура, которая либо пуста, либо состоит из головы и хвоста. Хвост также является списком. Список представляет собой заключённый в скобки набор атомов или списков, разделённых пробелами. Примером списка может быть, например, (a b) или ((a) (b)). Списки предназначены для хранения структурированной (в общем случае древовидной) информации и могут использоваться для хранения сложных данных. В языке Lisp также имеется специальный символ для представления пустого списка, т.е. (). Это символ NIL, также означающий логическую ложь. Соответственно, логическую истину обозначает символ T.
В Лиспе принята единообразная префиксная нотация. Вычисляя значение вводимого выражения, интерпретатор по первому символу определяет, что оно представляет собой – функция или данные. Для запрета на вычисления используется функция quote, возвращающая аргумент. Вычисление функции в программе представляет собой замену её вызова на её результат.
Лисп определяют как беззнаковый язык программирования, тип определяется во время выполнения программы. Определение анонимной функции представляет собой лямбда выражение в виде (lambda (p1...pn) F), где p – список формальных параметров, F – тело лямбда-выражения. Для связывания символа с лямбда-выражением в коммон лиспе существует функция defun (defun symbol (p1...pn) F).
Вопрос 2. Семантическая теория программ. Вычислимость и разрешимость
Некоторые вопросы семантической теории программ.
Программирование теоретическое – математическая дисциплина, изучающая математические абстракции программ, трактуемых как объекты, выраженные на формальном языке, обладающие определенной информационной и логической структурой и подлежащие исполнению на автоматических устройствах.
Т.п. сформировалось на основе двух моделей вычислений:
последовательных программ с памятью или операторных программах;
рекурсивных программ.
Обе модели строятся над абстрактной алгебраической системой <D,,>, образованной предметной областью D, конечным набором (сигнатурой) функциональных = {1, 2, … , m} и предикатных ={1,… n} символов с заданным для каждого символа числом его аргументов (арностью).
Определение класса программ слагается из трех частей:
схемы программ (синтаксиса)
интерпретации;
семантики.
Схема программы – это конструкционный объект, показывающий, как строится программа с использованием сигнатуры и других формальных символов.
Интерпретация – это задание конкретной предметной области и сопоставление символам сигнатуры конкретных функций и предикатов (базовых операций), согласованных с предметной областью и арностью символов.
Семантика – это способ сопоставления каждой программе результата ее выполнения.
Как правило, с программами связывают вычисляемые ими функции.
Схема программ с памятью, называемая также алголоподобной, или операторной, схемой, задается в виде конечного ориентированного графа переходов, имеющего обычно одну входную и одну выходную вершины, вершины с одной (преобразователи) и двумя (распознаватели) исходящими дугами.
С помощью символов сигнатуры и счетного множества символов переменных и констант обычным образом строится множество функциональных и предикатных термов.
Каждому распознавателю сопоставляется некоторый предикатный терм, а преобразователю – оператор присваивания, имеющий вид y =, где y – символ переменной, а - функциональный терм.
Конечная совокупность всех переменных в схеме образуют ее память.
Интерпретация в дополнение к конкретезации базовых операций предписывает каждой переменной область ее изменения, а каждой константе – ее значния.
Интерпретация обычно входит в семантику как параметр, поэтому схема прогрммы задает множество программ и вычисляемые ими функции, которое получается при варьировании интерпретаций над некоторым запасом базовых операций.
Для программ с памятью обычна т.н операционная семантика,состоящая из алгоритма выполнения программы на заданном состоянии памяти.
Программа выполняется при движении по графу переходов:
++ при попадании на распознаватель вычисляется предикатный терм и происходит переход по дуге, соответствующей значению предиката.
++ при попадании на преобразователь с оператором x := a вычисляется значение a и присваевается переменной x.
Результат выполнения программы – состояние памяти при попадании на выходную вершину.
Схема рекурсивной программы, или рекурсивная схема, использует кроме функциональных т.п. условные термы, образуют вместо (первыми (функциональными) множество вычислительных термов, если задаем условный терм в виде (|1 | 2), где - предикатный терм, а 1 и 2 – вычислительные термы.
n! = n(n-1)! = n(n-1)(n-2)!
Указанные формализмы отмечают уровни изобразительных средств языков программирования:
++ если операторные схемы близки к структуре машинной программы
++ то рекурсивные схемы ближе к исходной формулировке задач, подлежащих программированию.
Исследования по теоретическому программированию несут в себе отпечаток общематематических средств, используемых при изучении моделей программы.
++ формально-комбинаторные методы формируют теорию схем программ, которая изучает свойства программ, инвариантные относительно выбора интерпретации базовых операций.
++ логические методы изучают способы определения семантики программы, а так же ищут закономерность в процессе построения программы.
++ алгебраические методы, отвлекаясь от конкретной структуры программы, концентрируют свое внимание на изучении множеств, возникающих при рассмотрении программы или класса программ.
