- •230400 «Информационные системы и технологии»
- •6 Декабря 2011 г., протокол № 4
- •Оглавление
- •Глава 1. Теория информационных процессов и систем 10
- •Глава 2. Информационные технологии 95
- •Глава 3. Архитектура информационных систем 126
- •Глава 4. Технологии программирования 150
- •Глава 5. Управление данными 239
- •Глава 6. Технологии обработки информации 315
- •Предисловие
- •Глава 1. Теория информационных процессов и систем
- •1.1. Информационные системы. Основные понятия и определения.
- •1.2. Системообразующие свойства информационных систем
- •1.3. Свойства и закономерности систем
- •1.4.Системный подход и системный анализ
- •1.5. Моделирование информационных систем
- •1.5.1. Основные понятия
- •1.5.2. Классификация методов моделирования
- •1.5.3. Математическое моделирование
- •1.6. Теория принятия решений
- •3. Неопределённость наших знаний об окружающей обстановке и действующих в данном явлении факторах (неопределённость природы).
- •4. Неопределённость действий активного или пассивного партнёра или противника.
- •1.7. Информационные процессы
- •Контрольные вопросы
- •Глава 2. Информационные технологии
- •2.1. Состав, структура, принципы реализации и функционирования информационных технологий
- •2.2. Базовые и прикладные информационные технологии
- •Прикладные программные средства включают:
- •2.3. Инструментальные средства информационных технологий
- •Контрольные вопросы
- •Глава 3. Архитектура информационных систем
- •3.1. Классификация информационных систем
- •3.2. Структура, конфигурация информационной системы
- •3.2.1. Информационное обеспечение
- •Классификаторы создаются для решения следующих основных задач:
- •3.2.2. Математическое и программное обеспечение
- •К средствам математического обеспечения относятся:
- •К средствам программного обеспечения (по) относятся:
- •3.2.3. Организационное обеспечение
- •3.2.4. Правовое обеспечение
- •3.2.5. Техническое обеспечение
- •3.3. Процесс разработки информационных систем
- •3.3.1. Выработка или выбор парадигмы программирования
- •3.3.2. Моделирование бизнес-процессов
- •3.3.3. Анализ требований, предъявляемых к ис
- •3.3.4. Разработка архитектуры
- •3.3.5. Кодирование
- •3.3.6. Тестирование информационной системы
- •3.3.7. Документирование
- •3.3.8. Внедрение информационной системы
- •3.3.9. Сопровождение информационной системы
- •Контрольные вопросы.
- •Глава 4. Технологии программирования
- •4.1. Основные понятия программного обеспечения
- •Категории специалистов, занятых разработкой и эксплуатацией программ
- •4.2. Характеристики программного продукта
- •4.3. Жизненный цикл программного продукта
- •4.4.Защита программных продуктов
- •4.5. Классы программных продуктов
- •4.6. Инструментарий технологии программирования
- •4.7. Классификация методов проектирования программных продуктов
- •4.8. Этапы создания программных продуктов
- •1. Составление технического задания на программирование
- •2. Разработка технического проекта
- •3. Создание рабочей документации (рабочий проект)
- •4. Ввод в действие
- •4.9. Структура программных продуктов
- •4.10. Структурное проектирование и программирование
- •4.11. Модульная структура программных продуктов
- •4.12. Алгоритмы
- •4.13. Классификации языков программирования и примеры языков
- •4.13.2. Основы функционального программирования с использованием языка lisp Основные свойства функциональных языков программирования
- •Распространенные языки функционального программирования
- •Основные структуры данных и базовые функции по работе с ними в среде Лисп
- •Контрольные вопросы
- •Глава 5. Управление данными
- •5.1. Основы управления данными
- •5.1.1. Информация, данные и знания.
- •5.1.2.Функции управления
- •5.2.Банки данных в информационных системах.
- •5.2.1.Концепция баз данных
- •5.2.2.Файловые системы и базы данных
- •5.2.4.Классификация банков данных
- •5.3.Моделирование и модели данных
- •5.3.1.Уровни моделирования
- •5.3.2.Виды моделей
- •5.3.3.Модели данных
- •5.3.4.Иерархическая модель данных
- •5.3.5.Сетевая модель данных
- •5.3.6.Реляционная модель данных
- •5.3.7.Постреляционная модель представления данных
- •5.3.8.Многомерные модели представления данных
- •5.3.9.Объектно-ориентированные модели представления данных
- •5.4.Проектирование базы данных
- •5.4.1.Основы реляционной алгебры
- •5.4.2.Инфологический подход к проектированию баз данных
- •5.4.3.Модель «сущность—связь»
- •5.4.4.Переход к реляционной модели данных
- •5.4.5.Пример проектирования реляционной бд средствами субд Access
- •5.5.Субд в архитектуре «клиент-сервер»
- •5.5.1.Открытые системы
- •5.5.2.Клиенты и серверы локальных сетей
- •5.5.3.Системная архитектура «клиент-сервер»
- •5.5.4.Серверы баз данных
- •5.6.Реляционный язык sql
- •Структура sql
- •Контрольные вопросы
- •Глава 6. Технологии обработки информации
- •6.1. Основные виды и процедуры обработки информации
- •6.1.1. Виды обработки информации
- •6.1.2. Основные процедуры обработки данных
- •6.2. Системы поддержки принятия решений (сппр)
- •6.2.1. Условия принятия решений
- •6.2.2. Решение задач с помощью искусственного интеллекта
- •6.2.3. Процесс выработки решения на основе первичных данных
- •6.2.4. Типы информационных систем поддержки принятия решений
- •6.2.5. Реализация процесса принятия решений
- •6.2.6. Средства разработки информационных приложений
- •6.3. Концепция хранилищ и витрин данных, достоинства и недостатки
- •6.3.1. История создания концепции хранилищ данных
- •6.3.2. Причины создания концепции хранилищ данных
- •6.3.3. Факторы и технологии складирования данных
- •6.3.4. Концепция хранилищ данных
- •6.3.5. Взаимное соотношение концепции хранилищ данных и концепций анализа данных
- •6.3.6. Реализации хранилищ данных
- •6.3.7. Субд для аналитических систем
- •6.3.8. Витрины данных
- •6.4. Искусственный интеллект и интеллектуальные системы
- •6.4.1. Цели и задачи искусственного интеллекта
- •6.4.2. Направление исследований в области искусственного интеллекта
- •6.4.3. Структура интеллектуальной системы
- •6.4.4. Разновидности интеллектуальных систем
- •Контрольные вопросы
- •Глава 7. Интеллектуальные системы и технологии
- •7.1. Теория и технологии искусственного интеллекта
- •7.2. Математическое описание экспертной системы, логический вывод
- •7.3. Искусственные нейронные сети
- •7.4. Расчётно-логические системы, системы с генетическими алгоритмами
- •(Начало цикла)
- •Создание начальной популяции
- •Размножение (Скрещивание)
- •Мутации
- •Применение генетических алгоритмов
- •7.5. Мультиагентные системы
- •Контрольные вопросы
- •Глава 8. Инструментальные средства информационных систем
- •8.1. Состав и структура инструментальных средств информационных систем
- •8.2. Тенденции развития инструментальных средств информационных систем
- •8.3. Операционные системы инструментальных средств информационных систем
- •8.4. Технические средства инструментальных средств информационных систем
- •Классификация технических средств инструментальных средств информационных систем.
- •Контрольные вопросы
- •Глава 9. Инфокоммуникационные системы и сети
- •9.1. Модели и структура информационных сетей Классическая модель построения инфокоммуникационных систем
- •9.2. Информационные ресурсы сетей
- •По способу представления:
- •По национально-территориальному признаку:
- •9.3. Теоретические основы современных информационных сетей
- •Контрольные вопросы
- •Глава 10. Методы и средства проектирования информационных систем и технологий
- •10.1. Технология проектирования информационных систем. Этапы проектирования
- •10.2. Методы проектирования информационных систем
- •10.3. Средства проектирования ис
- •Контрольные вопросы
- •Список литературы
- •143 Хорошилов а.В. Селетков с.Н. Днепровская н.В. Управление информационными ресурсами.
4.13.2. Основы функционального программирования с использованием языка lisp Основные свойства функциональных языков программирования
Для решения задачи на компьютере в большинстве случаев приходится на одном из языков программирования объяснять ЭВМ, как это сделать. Однако человека не покидает мечта другого стиля взаимодействия с компьютером – лишь описать, что нужно сделать, так, чтобы цепочки кода «как сделать» порождались автоматически. В общем случае эта мечта, по крайней мере в настоящее время, неосуществима, однако есть важные области, где удалось достичь прогресса. Стиль программирования «как сделать» получил название процедурное или императивное программирование, а «что сделать» – декларативное программирование. Функциональное программирование относится к декларативному стилю.
Функциональное программирование явилось практической реализацией математических теорий λ-исчисления (Алонзо Чёрч, 1936) и комбинаторной логики (М. И. Шейнфинкель и Хаскелл Карри). λ-исчисление возникло как один из подходов к формализации понятия «алгоритм» через безымянные функции и рекурсивные вызовы. Поэтому языки функционального программирования обращаются с вычислительными процессами как с обычными математическими функциями. Использование функционального подхода всегда наделяет программу следующими свойствами:
лаконичность кода;
возможность более гибкой модификации программы (вся программа – это совокупность независимых описаний функций, которые могут порождать абстракции друг от друга);
способность воспринимать данные как программу (таким образом, программа может порождать программу для себя самой);
принципиальная возможность распараллеливания вычислений;
возможность «ленивых» вычислений;
отсутствие побочных эффектов.
В наличии этих свойств можно убедиться, лишь начав программировать на практике. Формулировки каждого из этих свойств должны быть понятны, и только два последних требуют пояснений.
Свойство «отсутствие побочных эффектов» является следствием обращения с вычислительными процессами как с обычными математическими функциями. Допустим, мы определили некоторую функцию F(x) в процедурном языке программирования. Возможна ли такая ситуация, когда эта функция принимает разные значения от одного и того же аргумента? С точки зрения математики было бы абсурдно получить два разных результата — F(3)=9, F(3)=2. Однако в программировании такое возможно, например, F(x)=x+a, где a — глобальная переменная, значение которой может изменяться в основном теле программы. Может показаться, что мы всегда сможем, если захотим, программировать без побочных эффектов. Но процедурные языки пронизаны побочными эффектами, начиная с простого присваивания s:=s+1, заканчивая обработкой исключений. Таким образом, побо́чный эффе́кт функции — это возможность в процессе выполнения вычислений чтения и модификации значений глобальных переменных, осуществления операций ввода/вывода, реагирования на исключительные ситуации, вызова их обработчиков. Поэтому, если вызвать такую функцию дважды с одним и тем же набором значений входных аргументов, может случиться так, что в качестве результата вычисляются разные значения. Такие функции называются недетерминированными функциями с побочными эффектами.
В чистом функциональном программировании объекты можно лишь создавать; там нет переменных в традиционном понимании и им нельзя переприсвоить новое значение, их уничтожением автоматически занимается так называемый уборщик мусора. Всё это следствие того, что в чистых функциональных программах нет понятия изменения и нет понятия времени. Термин чистое функциональное программирование также употребляется специально. Дело в том, что большинство реальных функциональных языков всё-таки используют побочные эффекты, но предлагают механизмы эффективного разделения чистого функционального подхода с сопутствующими свойствами от императивного стиля.
Для объяснения, что такое «ленивые вычисления», представим ситуацию, когда в программе производятся манипуляции с бесконечной суммой чисел. В обычном случае, прежде чем подставлять бесконечную сумму в какое-либо выражение, программа попытается её упростить — вычислить, но с бесконечной суммой это сделать невозможно, а значит подставить её куда-либо не удаётся. Но мы может отложить вычисление до требуемого момента. Это и есть ленивые вычисления. В λ-исчислении ленивые вычисления инициируются так называемым нормальным порядком редукций; вычисления с максимальным упрощением перед подстановкой называются аппликативным порядком редукций. Большинство функциональных языков реализуют аппликативный порядок редукций, однако в них легко можно добиться и нормального порядка.
