СПб.: БХВ-Петербург, 2002. — 320 с.: ил. — ISBN 5-94157-069-4.
Современное программирование излагается как искусство заставить компьютер решить задачу, возникшую перед человеком. Даны единые основания математики и программирования, краткие сведения из области графов, теории вероятностей и информации (в ее математическом толковании). Приведены основные понятия и конструкции современных языков программирования.
Рассмотрен ряд вопросов теории программирования с упором на математическую семантику языковых конструкций.
Введение
Математические основыФормальные языкиНеформальный взгляд на формализацию
Алфавиты, слова, языки
Структура формальных теорий
Логические формальные теории
ЯзыкИнтерпретации
Две точки зрения на математику
Значения формул
Примеры
Выполнимость и общезначимость
Некоторые общезначимые формулы
Теоремы об истинности и общезначимости
Исчисление высказыванийАксиоматика
Теорема о дедукции
Некоторые леммы о выводимости
Теорема о полноте
Другие аксиоматики исчисления высказываний
Формальные теории первого порядкаАксиоматика
Теорема о дедукции
Некоторые теоремы об истинности и общезначимости
Непротиворечивость
Теоремы о выводимости
Теории первого порядка с равенством
Теория множествОсновные понятия
Пары и кортежи (n-ки)
Отношения
Графы и деревья
Соответствия и отображения
Отношения порядка
О парадоксах теории множеств
Еще раз о двух математиках
Вероятности и информацияСлучайные события
Случайные величины
Об измерении информации
Случайные процессы
Теория вычислимостиВведение
Язык Лисп
Модель арифметики
Моделирование машины Тьюринга
Семантика рекурсивных функций
Теория неподвижной точки
На общем фоне
Библиографическая справка
Основные понятия и конструкции языков программированияПрограммыДанные и информацияЯзыки программирования
Описание синтаксиса языков
Описание семантики
Структуры данныхПростые значения и их представление
Составные значения и их типы
Структуры действийПеременные и их объявления
Операции и выражения
Операторы и структура программы
Работа со ссылками
Более сложные средстваПроцедуры
Алгоритмы над графами
Файлы и операторы для работы с ними
Примечания в программах
Старые новые веянияО функциональном стиле программирования
Объекто-ориентированное программирование
Анализ свойств программОператорные схемыОценка трудоемкости алгоритмов
Доказательство свойств программ
Завершаемость алгоритмов
Структурированные схемы
Экономия памяти
Формализация семантики языков программированияМодельный язык и его операционная семантика
Исчисление программ
Состояния и преобразователи состояний
Целые и логические выражения
Преобразователи состояний для операторов
Преобразователи предикатов
Преобразователи предикатов для операторов
Обоснование правил деривационной семантики
Операторные схемы, рекурсия и циклы
Денотационная семантика составных значений и указателейВекторы, записи и ссылки
Состояния, имена, выражения
Объявления, генераторы и присваивания
Блоки
Простые переменные как указатели
Динамические типы
Преобразователи предикатов для присваивания
Денотационная семантика процедур и функцийНерекурсивные процедуры и функции
Рекурсивные процедуры
Преобразователи предикатов для процедур
Послесловие. За что боролись?
Решения упражнений
Список литературы