- •1. Кризис программирования
- •2. Понятие жизненного цикла по
- •3. Требования к технологии проектирования
- •4. Понятия профессионального программирования
- •5. Проект и команда
- •6. Задача профессионального программирования
- •7. Алгоритмы
- •8. Модели и моделирование
- •9. Структурный подход
- •9.1. Проблема сложности
- •9.2. Сущность структурного подхода
- •9.3. Метод функционального моделирования (sadt)
- •9.3.1. Состав функциональных моделей
- •9.3.2. Методика построения модели
- •9.4. Метод моделирования процессов - потоков данных (dfd)
- •9.4.1. Общая концепция
- •9.4.2. Состав диаграмм потоков данных
- •13. Венгерская нотация
- •14. Методология и парадигма программирования
- •15. Современные методологии программирования
- •16. Методология императивного программирования
- •17. Методология объектно-ориентированного программирования
- •18. Методология функционального программирования
- •19. Методология логического программирования
- •20. Методология программирования в ограничениях
- •21. Методология структурного императивного программирования
- •22. Методология параллельного императивного программирования
- •23. Методология нейросетевого программирования
- •23.1. Модель нейрона с линейной функцией активации
- •23.2. Модель нейрона с радиальной функцией активации
- •23.3. Разработка нейросетевой модели
- •24. Основные типы ошибок в программах
- •25. Отладка и тестирование
- •26. Режимы работы компилятора Delphi для поиска ошибок
- •27. Задание режимов работы отладчика с помощью переключающих директив
- •28. Пользователи и их поддержка
- •29. Поддержка программиста: общие требования
- •29.1. Пролог модуля
- •29.2. Проектная документация
- •29.3. Оформление текста программы
- •30. Поддержка конечного пользователя
- •31. Технология программирования графики
- •31.1. Графическая подсистема оболочек Win32/64
- •31.2. Графические средства Delphi
- •31.3. Проектирование интерфейса с пользователем: компоненты стандартных диалогов
- •32.Технология компонентного программирования
- •32.1. Технология com
- •32.1.1. Общая концепция
- •32.1.2. Интерфейс com
- •32.1.3. Сервер com
- •32.2. Технология ole
- •32.2.1 Суть и содержание ole
- •32.2.2.Терминология ole
- •32.2.3. Автоматизация ole
- •32.2.4. Структурированная память
- •32.3. Технология corba
- •32.4. Технология Java
- •32.5.Технология .Net
- •33. Технология описания аппаратуры
- •Input clock, reset, en;
- •If(!reset)
- •34. Технология коллективной разработки
- •34.1. Авторская разработка
- •34.2. Коллективная разработка
- •34.2.1. Технические командные роли
- •34.2.2. Психологические командные роли
- •34.2.3. Типы совместной деятельности
- •34.3. Общинная модель разработки
- •35. Технология оценки качества по
- •35.1. Подходы к оценке качества по
- •35.2. Характеристики качества по
- •35.3. Оценка качества процесса разработки
- •35.3.1. Модель зрелости процесса разработки по
- •35.3.2. Определение возможностей и улучшение процесса создания по
- •35.4. «Достаточно хорошее» по
- •33.5. Стандартизация информационных технологий
- •Международные организации, входящие в структуру оон.
- •Промышленные профессиональные или административные организации.
- •Промышленные консорциумы.
- •36. Инструментальные средства поддержки некоторых технологических подходов
- •36.1. Инструментальные системы
- •36.1.1. Инструментальные среды программирования
- •36.1.2. Средства автоматизации разработки программ (case-средства)
- •36.1.3. Интегрированные среды
- •36.1.4. Репозитории проекта
- •36.2. Поддержка коллективной разработки: системы управления версиями
- •37. Организация диалогов
- •38. Защита программного кода
22. Методология параллельного императивного программирования
Эта методология основывается на использовании явных конструкций для параллельного выполнения выбранных фрагментов программ.
Методы и концепции:
Метод синхронизации исполняемого кода – заключается в использовании атомических операций для осуществления взаимодействия между одновременно исполняемыми фрагментами кода. Метод поддерживается концепцией примитивов синхронизации.
Синтаксис и семантика. Прямой аналог оператора в рассматриваемой методологии – процесс. Основное отличие этой методологии от императивной в том, что процессы могут исполняться параллельно. При этом выделяют следующие уровни параллелизма:
параллелизм на уровне микрокоманд;
параллелизм на уровне операторов;
параллелизм на уровне циклов и итераций;
параллелизм на уровне подпрограмм;
параллелизм на уровне потоков управления;
параллелизм на уровне процессов;
параллелизм на уровне приложений.
Суперпозиция обычно реализуется через систему процессов, обменивающихся между собой информацией о результатах вычислений.
Параллельные языки программирования используют явные конструкции для параллельного исполнения выбранных фрагментов программ.
Существует несколько языковых подходов к программированию для параллельных вычислительных систем:
Программирование на параллельном языке программирования. Причем такие языки могут быть:
универсальными (например, язык Ada);
для конкретных типов компьютеров, позволяющих эффективно транслировать программы на параллельном языке именно в эту архитектуру (например, язык Occam изначально разрабатывался для транспьютеров).
Программирование на широко распространенном языке программирования (например, C, C++, Pascal), который расширен языковыми (на уровне языка) распараллеливающими конструкциями.
Программирование с использованием дополнительных указаний компилятору на уровне языка прагм (например, по стандарту OpenMP).
Программирование на широко распространённом языке программирования с использованием высокоуровневых коммуникационных библиотек и интерфейсов для организации межпроцессорного взаимодействия. В этом случае конструкции параллелизма вынесены с языкового уровня на уровень ОС.
Применение средств автоматического распараллеливания последовательных программ такими инструментами, как компиляторы.
Известные языки программирования:
Algol-68 (1968)
Concurrent Pascal (1972)
Modula-2 (1978)
CSP (1978)
Edison (1980)
Ada (1979, 1983)
Occam (1982)
Concurrent Prolog (1983)
Linda (1985)
Oblig (1993)
Класс задач. Данная методология может очень эффективно применяться для обработки больших однородных массивов данных. Такие массивы часто встречаются в реализации вычислительных и статических методов. Кроме этого, методология параллельного программирования успешно применяется при моделировании в ОС и системах реального времени.
23. Методология нейросетевого программирования
Рассмотренные ранее подходы ориентируются на описание шагов алгоритма в программе. В соответствии с рассматриваемой методологией описание шагов алгоритма невозможно.
Прототип исполняемого кода формируется на основе понятий «искусственная нейронная сеть» (ИНС) и «тренировка». ИНС выступает своего рода «заготовкой», которая постепенно (в результате тренировки на знаниях, полученных от экспертов) превращается в адекватную модель с требуемым поведением. В последствии такая модель компилируется в эквивалентный исполняемый код или реализуется аппаратно.
Для изначального формирования ИНС применяют два основных вида нейронов:
Нейроны с линейными функциями активации.
Нейроны с радиальными функциями активации.