- •Вопрос 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. Классификация и типы вс. Многомашинные и многопроцессорные вс. Представление вс на основе распределения потоков команд и данных (классификация Флинна)
Непосредственное манипулирование
Можно выделить определенные этапы, через которые приходится проходить человеку, выполняющему работу. Он должен знать:
что он хочет получить на выходе;
как минимум одну последовательность действий, приводящую к успешному результату;
где ему найти все объекты, участвующие в процедуре;
как определять годность объектов к использованию;
как управляться с объектами.
Существует способ ускорить выполнение этих этапов. Он называется непосредственным манипулированием (direct manipulation). Смысл этого метода очень прост. Пользователь не отдает команды системе, а манипулирует объектами. Это значительно более естественный для человека способ. Первым популярным применением этого метода была корзина для удаления файлов на Macintosh (начиная с Windows 95, такая корзина стала стандартом и в Windows-мире, хотя присутствовала она и раньше). Смысл действия заключается в том, что если перетащить в корзину пиктограмму файла, этот файл будет фактически стерт.
Кстати, чтобы метод хорошо работал, корзина должна постоянно «плавать» над другими окнами. Привязанность корзины к рабочему столу служит препятствием для полноценного использования метода непосредственного манипулирования.
Несмотря на то, что пример с корзиной наиболее известен, назвать его единственным нельзя. Например, одно и то же действие (перетаскивание) работает и при удалении, и при перемещении файла. Более того, если перетащить файл в окно электронного письма, которое пользователь в данный момент пишет, файл будет вставлен в письмо как вложение. Это значит, что непосредственное манипулирование позволяет серьезно снизить как количество команд в системе, так и длительность обучения.
Еще одно преимущество непосредственного манипулирования пересекается с методами уменьшения количества ошибок пользователя. Предположим, что пользователь собрался стереть важный системный файл, который стирать нельзя. Методы выбора команды в меню и в панели инструментов, равно как и метод непосредственного манипулирования, здесь сработают – элемент можно будет превентивно заблокировать. Если же пользователь попытается стереть файл, нажав на Delete, система окажется неспособна как-то показать неправомочность его действий (разве что писком или сообщением об ошибке , что в общем-то недопустимо). А теперь предположим, что пользователь собрался стереть важный файл, который стирать не рекомендуется. Ни один из методов, кроме непосредственного манипулирования (можно будет поменять пиктограмму корзины на время, пока курсор, с зажатым в него файлом, будет находиться над ней), здесь не сработает, т.е. этот метод отличается от остальных своей гибкостью.
Потеря фокуса внимания (прерывание)
Абсолютное большинство офисных работников в своей деятельности постоянно сталкиваются с прерываниями. Пришедшее электронное письмо, телефонный звонок, рассказанный коллегой анекдот, курение – всё это примеры прерываний. Более того, существует довольно много видов деятельности, для которых наличие прерываний является неотъемлемым свойством, таковы, например, работа оператора службы поддержки или деятельность менеджера, значительную часть дня решающего текущие вопросы.
Таким образом, прерывания оказывают значительное влияние на деятельность таких пользователей, при этом это влияние следует считать негативным. Во-первых, восстановление после прерываний занимает определенное время, которое отнимается от времени работы (не говоря уже о том, что само прерывание чаще всего является потерей времени). Во-вторых, прерывания грозят человеческими ошибками, вызванными тем, что человек в момент прерывания забывает о том, что он делал. Нелишне также отметить, что переключения внимания, вызванные прерываниями, как правило, вызывают значительное утомление и тем самым снижают производительность труда работников.
Дело в том, что у человека есть только один фокус внимания, так что при любом отвлечении (которое есть не что иное, как переключение на другую задачу) старый фокус внимания теряется. Было бы еще ничего, если бы возвращение фокуса требовало только изменения направления взгляда. Но при отвлечении новые стимулы заменяют содержимое кратковременной памяти, так что для возвращения к работе от пользователя требуется заново поместить в свою память нужную информацию.
Таким образом, снижение воздействия прерываний на деятельность работников способна повысить эффективность этой деятельности. При этом специфика ситуации заключается в том, что от самих прерываний, как правило, избавиться либо трудно, либо невозможно. В таких условиях снизить их влияние можно, лишь облегчив возвращение работников к прерванному действию.
Итак, для продолжения работы пользователь должен знать:
на каком шаге он остановился;
какие команды и параметры он уже дал системе;
что именно он должен сделать на текущем шаге;
куда было обращено его внимание на момент отвлечения.
Можно предложить следующие общие подходы, которые могут быть использованы разработчиками интерфейсов при проектировании систем, ориентированных на частые прерывания:
Система должна быть снабжена возможностью "заморозить" свое текущее состояние. В таком состоянии система не должна реагировать ни на какие действия пользователя (нажатие клавиш, передвижение мыши и т.п.). Причем выход из такого режима следует реализовать таким образом, чтобы возможность непроизвольного выхода из него была полностью исключена. Естественно, при нахождении системы в таком состоянии пользователю должны предлагаться простые и внятные инструкции, объясняющие, как выйти из такого состояния (аналог такого решения известен многим по играм, в которых в любой момент можно было нажать кнопку "Pause", "отдышаться" и продолжить игру)
Необходимо предусмотреть механизмы для объединения типовых составных операций. Так, например, последовательность разрозненных действий следует преобразовывать в интерактивные, но объединенные общей логикой процедуры (Мастера или нечто подобное). Это позволит пользователям четко понимать, на каком этапе выполнения действия он находится в данный момент времени.
Необходимо полноценно визуализировать рабочие объекты манипулирования. При копировании текста через буфер обмена пользователи практически не имеют возможности понять, что находится в буфере обмена (и находится ли там вообще что-либо), до тех пор, пока не они вставляют содержимое буфера в документ. Если содержимое буфера обмена видно всё время, этой проблемы бы не было, при этом нагрузка на память была бы минимальна.
Необходимо показывать пользователям, какие фрагменты информации были введены давно, а какие – недавно. Если бы использовалась метафора "высыхающих чернил", количество проблем пользователей (затрат времени, ошибок) было бы ощутимо меньше. Использование такой метафоры позволит визуально отобразить отличие недавно внесенных изменений от изменений, внесенных давно. Суть метафоры заключается в том, что цвет актуальных объектов манипулирования (например, набранных слов) изменяется по мере прохождения определенного времени с момента непосредственной работы с ними. Естественно, что при этом пользователям следует предоставить возможность самостоятельно настраивать такие параметры как "скорость засыхания" и дискретность изменения цвета.
Реализация предложенных рекомендаций поможет пользователям, работающим в сложных условиях частых прерываний, значительно повысить производительность труда, уменьшить количество ошибок, повысить субъективную удовлетворенность.
