- •Предисловие
- •Введение
- •1Архитектура эвм
- •1.1 Биты и их хранение
- •1.1.1Вентили и триггеры
- •1.1.2Другие способы хранения битов
- •1.1.3Шестнадцатеричная система счисления
- •1.2 Оперативная память
- •1.2.1Структура памяти
- •1.2.2Измерение емкости памяти
- •1.3 Устройства хранения данных
- •1.3.1Магнитные диски
- •1.3.2Компакт-диски
- •1.3.3Магнитные ленты
- •1.3.4Хранение и поиск файлов
- •1.4 Представление информации в виде двоичного кода
- •1.4.1Представление текста
- •1.4.2Американский национальный институт стандартов
- •1.4.3Iso - международная организация по стандартизации
- •1.4.4Представление числовых значений
- •1.4.5Представление изображений
- •1.4.6Представление звука
- •1.5 Двоичная система счисления
- •1.5.1Альтернатива двоичной системе счисления
- •1.5.2Дроби в двоичной системе счисления
- •1.5.3Аналоговые и цифровые устройства
- •1.6 Хранение целых чисел
- •1.6.1Представление в двоичном дополнительном коде
- •1.6.2Сложение в двоичном дополнительном коде
- •1.6.3Проблема переполнения
- •1.6.4Представление с избытком
- •1.7 Хранение дробей
- •1.7.1Представление с плавающей точкой
- •1.7.2Ошибка усечения
- •1.8 Сжатие данных
- •1.8.1Общие методы сжатия данных
- •1.8.2Сжатие звука
- •1.8.3Сжатие изображений
- •1.9 Ошибки передачи данных
- •1.9.1Контрольный разряд четности
- •1.9.2Коды с исправлением ошибок
- •2Манипулирование данными
- •2.1 Архитектура эвм
- •2.1.1Сложение двух чисел, хранящихся в оперативной памяти
- •2.1.2Кто и что изобрел?
- •2.2 Машинный язык
- •2.2.1Система команд
- •2.2.2Кэш-память
- •2.2.3Арифметико-логические команды
- •2.2.4Команды управления
- •2.2.5Деление двух значений, хранящихся в памяти
- •2.3 Выполнение программы
- •2.3.1Пример выполнения программы
- •2.3.2Команды переменной длины
- •2.3.3Программы и данные
- •2.4 Арифметические и логические операции
- •2.4.1Логические операции
- •2.4.2Сравнение вычислительной мощности эвм
- •2.4.3Операции сдвига
- •2.4.4Арифметические операции
- •2.5 Связь с другими устройствами
- •2.5.1Связь через контроллер
- •2.5.2Строение шины
- •2.5.3Скорость передачи данных
- •2.6 Другие архитектуры
- •2.6.1Конвейерная обработка
- •3Операционные системы и организация сетей
- •3.13.1. Эволюция операционных систем
- •3.1.1Однопроцессорные системы
- •3.1.2Многопроцессорные системы
- •3.2 Архитектура операционной системы
- •3.2.1Программное обеспечение
- •3.2.2Полезное единообразие или вредная монополия?
- •3.2.3Компоненты операционной системы
- •3.2.4Операционная система linux
- •3.2.5Начало работы операционной системы
- •3.3 Координирование действий машины
- •3.3.1Понятие процесса
- •3.3.2Управление процессами
- •3.3.3Модель «клиент-сервер»
- •3.4 Обработка конкуренции между процессами
- •3.4.1Семафор
- •3.4.2Взаимная блокировка
- •3.5 Сети
- •3.5.1Основы организации сетей
- •3.5.2Интернет
- •3.5.3Топология сети Интернет
- •3.5.4Система адресов Интернета
- •3.5.5Электронная почта
- •3.5.6Всемирная паутина
- •3.6 Сетевые протоколы
- •3.6.1Управление правом отправки сообщений
- •3.6.2Сеть ethernet
- •3.6.3Javascript, апплеты, cgi и сервлеты
- •3.6.4Многоуровневый принцип программного обеспечения Интернета
- •3.6.5Комплект протоколов tcp/ip
- •3.6.6Протоколы рорз и imap
- •3.7 Безопасность
- •3.7.1Протокол защищенных сокетов
- •3.7.2Группа компьютерной «скорой помощи»
- •4Алгоритмы
- •4.1 Понятие алгоритма
- •4.1.1Предварительные замечания
- •4.1.2Формальное определение алгоритма
- •4.1.3Определение алгоритма
- •4.1.4Абстрактная природа алгоритма
- •4.2 Представление алгоритма
- •4.2.1Примитивы
- •4.2.2Псевдокод
- •4.3 Создание алгоритма
- •4.3.1Искусство решения задач
- •4.3.2Итеративные структуры в музыке
- •4.3.3Первый шаг в решении задачи
- •4.4 Итеративные структуры
- •4.4.1Алгоритм последовательного поиска
- •4.4.2Управление циклом
- •4.4.3Алгоритм сортировки методом вставок
- •4.5Рекурсивные структуры
- •4.5.1Поиск и сортировка
- •4.5.2Алгоритм двоичного поиска
- •4.5.3Управление рекурсивными структурами
- •4.6 Эффективность и правильность
- •4.6.1Эффективность алгоритма
- •4.6.2Проверка правильности программного обеспечения
- •4.6.3По ту сторону проверки правильности программ
- •5Языки программирования
- •5.1 Исторический обзор
- •5.1.1Ранние поколения
- •5.1.2Интерплатформенное программное обеспечение
- •5.1.3Независимость от машины
- •5.1.4Парадигмы программирования
- •5.2 Основные понятия традиционного программирования
- •5.2.1Культуры языков программирования
- •5.2.2Переменные и типы данных
- •5.2.3Структуры данных
- •5.2.4Константы и литералы
- •5.2.5Операторы присваивания
- •5.2.6Управляющие операторы
- •5.2.7Комментарии
- •5.3 Процедурные единицы
- •5.3.1Процедуры
- •5.3.2Событийно-управляемые программные системы
- •5.3.3Параметры
- •5.3.4Функции
- •5.3.5Операторы ввода-вывода
- •5.4 Реализация языка программирования
- •5.4.1Процесс трансляции программы
- •5.4.2Реализация java
- •5.4.3Компоновка и загрузка
- •5.4.4Пакеты разработки программного обеспечения
- •5.5 Объектно-ориентированное программирование
- •5.5.1Классы и объекты
- •5.5.3Конструкторы
- •5.5.4Дополнительные возможности
- •5.6 Параллельные операции
- •5.7 Декларативное программирование
- •5.7.1Логическая дедукция
- •5.7.2Язык программирования Prolog
- •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.2.7Тестирование
- •6.2.8Современные тенденции
- •6.3 Модульность
- •6.3.1Модульная реализация программы
- •6.3.2Связь модулей системы
- •6.3.3Связность модуля
- •6.4 Методики проектирования
- •6.4.1Нисходящее и восходящее проектирование
- •6.4.2Модели проектирования
- •6.4.3Разработка открытых программных продуктов
- •6.5 Инструменты проектирования
- •6.6 Тестирование
- •6.7 Документация
- •6.8 Право собственности на программное обеспечение и ответственность
- •Часть 3 организация данных
- •7Структуры данных
- •7.1 Основы структур данных
- •7.1.1Опять абстракция
- •7.1.2Статические и динамические структуры
- •7.1.3Указатели
- •7.2 Массивы
- •7.3 Списки
- •7.3.1Непрерывные списки
- •7.3.2Реализация непрерывных списков
- •7.3.3Связные списки
- •7.3.4Поддержка абстрактного списка
- •7.4 Стеки
- •7.4.1Откат
- •7.4.2Реализация стека
- •7.5 Очереди
- •7.5.1Проблема указателей
- •7.6 Деревья
- •7.6.1Реализация дерева
- •7.6.2Сбор мусора
- •7.6.3Пакет бинарного дерева
- •7.7 Пользовательские типы данных
- •7.7.1Пользовательские типы
- •7.7.2Классы
- •7.7.3Описательное и процедурное знание
- •7.7.4Стандартная библиотека шаблонов
- •7.8 Указатели в машинном языке
- •8Файловые структуры
- •8.1 Роль операционной системы
- •8.1.1Таблицы размещения файлов
- •8.2 Последовательные файлы
- •8.2.1Обработка последовательных файлов
- •8.2.2Консорциум производителей программного обеспечения для www
- •8.2.3Текстовые файлы
- •8.2.4Текстовые и двоичные файлы
- •8.2.5Вопросы программирования
- •8.2.6Семантическая сеть
- •8.3 Индексация
- •8.3.1Основные положения индексации
- •8.3.2Вопросы программирования
- •8.3.3Расположение файлов на дисках
- •8.4 Хэширование
- •8.4.1Хэш-система
- •8.4.2Проблемы распределения
- •8.4.3Аутентификация посредством хэширования
- •8.4.4Вопросы программирования
- •9Структуры баз данных
- •9.1 Общие вопросы
- •9.2 Многоуровневый подход к реализации базы данных
- •9.2.1Система управления базой данных
- •9.2.2Распределенные базы данных
- •9.2.3Модели баз данных
- •9.3 Реляционная модель баз данных
- •9.3.1Вопросы реляционного проектирования
- •9.3.2Системы баз данных для персональных компьютеров
- •9.3.3Хронологические базы данных
- •9.3.4Реляционные операции
- •9.3.5Вопросы реализации
- •9.3.6Язык sql
- •9.4 Объектно-ориентированные базы данных
- •9.5 Поддержка целостности базы данных
- •9.5.1Пространственные базы данных
- •9.5.2Протоколы фиксации/отката изменений
- •9.5.3Блокировка
- •9.6 Воздействие технологий баз данных на общество
- •10Искусственный интеллект
- •10.1 Интеллект и машины
- •10.1.1Конечный результат или имитация
- •10.1.2Истоки искусственного интеллекта
- •10.1.3Тест Тьюринга
- •10.1.4Машина для решения головоломки из восьми фишек
- •10.2 Распознавание образов
- •10.3 Мышление
- •10.3.1Продукционные системы
- •10.3.2Интеллект, основанный на поведении
- •10.3.3Деревья поиска
- •10.3.4Эвристика
- •10.4 Искусственные нейронные сети
- •10.4.1Основные свойства
- •10.4.2Приложение теории
- •10.4.3Ассоциативная память
- •10.5 Генетические алгоритмы
- •10.6 Прочие области исследования
- •10.6.1Обработка лингвистической информации
- •10.6.2Рекурсия в естественных языках
- •10.6.3Роботы
- •10.6.4Системы баз данных
- •10.6.5Экспертные системы
- •10.7 Обдумывая последствия
- •10.7.1Сильный искусственный интеллект против слабого
- •11Теория вычислений
- •11.1 Функции и их вычисление
- •11.1.1Теория рекурсивных функций
- •11.2 Машины Тьюринга
- •11.2.1Основы машины Тьюринга
- •11.2.2Истоки машины Тьюринга
- •11.2.3Тезис Черча-Тьюринга
- •11.3 Универсальные языки программирования
- •11.3.1Скелетный язык
- •11.3.2Существуют ли инопланетяне?
- •11.3.3Универсальность скелетного языка
- •11.4 Невычислимая функция
- •11.4.1Проблема останова
- •11.4.2Неразрешимость проблемы останова
- •11.5 Сложность задач
- •11.5.1Измерение сложности задачи
- •11.5.2Пространственная сложность
- •11.5.3Полиномиальные и не полиномиальные задачи
- •11.5.5Детерминированность против недетерминированности
- •11.6Шифрование с открытым ключом
- •11.6.1Шифрование при помощи задачи о ранце
- •11.6.2Популярные системы шифрования
- •11.6.3Модульная арифметика
- •11.6.4Обратно к шифрованию
9.6 Воздействие технологий баз данных на общество
В прошлом совокупности данных рассматривались как неподвижные, пассивные сущности. Каждая из них была разработана и использовалась для определенной цели. В местной библиотеке велся физический список, содержащий имена и адреса посетителей. В каждой книге находилась отдельная карточка с названием книги. Если книгу выдавали на руки, карточку доставали, записывали на ней имя человека, взявшего ее, и помещали в картотеку библиотеки. При возвращении книги карточку возвращали в книгу; если же книгу не вернули вовремя, сотрудник библиотеки мог связаться со взявшим ее человеком, использовав информацию из списка посетителей.
В этой ручной системе можно было получить список всех книг, которые брал определенный человек, но это потребовало бы поиска среди всех книг тех карточек, на которых записано его имя, и стоимость такого поиска была бы слишком высока для этой операции. Таким образом, хотя записи библиотеки содержали информацию о вкусах читателей, посетители библиотеки могли быть уверены, что эта информация останется в тайне. Однако сегодня большинство библиотек автоматизированы, и данные об отдельных читателях легко найти. Следовательно, библиотеки могут предоставить такую информацию торговым фирмам, органам юстиции, политическим партиям, работодателям и отдельным людям. Пути распространения непредсказуемы.
Пример с библиотекой показывает возможности широкого спектра приложений баз данных. Технология упростила сбор данных, слияние и сравнение различных наборов данных, получение связей, которые в противном случае остались бы погребенными в массе информации.
Сегодня сбор информации проводится в огромных масштабах. В некоторых случаях процесс очевиден, в других он выполняется более тонко. Данные собираются явно, когда человека просто просят ответить на какие-либо вопросы. Это может быть сделано на добровольной основе, в виде опросов или регистрационных форм, или принудительно, обманом или постановлением правительства. Иногда ответ на вопрос, добровольно или нет собирается информация, зависит от точки зрения человека. Является ли предоставление персональной информации для оформления займа добровольным? Различие зависит от того, было ли получение займа благоприятной возможностью или необходимостью. Для того чтобы использовать кредитную карточку в некоторых розничных магазинах, сегодня требуется регистрация подписи в цифровом формате. И снова вы предоставляете эту информацию добровольно или принудительно, в зависимости от ситуации.
Скрытые случаи сбора данных не требуют прямого общения с субъектом. Например, кредитные компании регистрируют покупки держателей их кредитных карт, узлы в Интернете устанавливают личность посетителей, а социальные работники записывают номера машин, припаркованных на специальных университетских стоянках. В этих случаях человек, к которому относятся данные, может не знать о сборе информации и даже о существовании баз данных, в которые вносятся эти сведения.
Иногда действия по сбору данных очевидны. Например, магазин может предлагать скидки своим постоянным покупателям, заблаговременно зарегистрировавшимся в этом магазине. Процесс регистрации может включать выпуск идентификационных карт, которые необходимо предъявлять во время оплаты покупки для получения скидки. В результате администрация магазина может составить отчет о закупках определенных покупателей, а стоимость такого отчета далеко превосходит сумму предоставленных скидок.
Конечно, стимулирует сбор данных именно ценность информации, увеличивает которую технология баз данных, позволяющая связывать данные для получения скрытой информации. Например, покупки можно классифицировать и построить графики предпочтений покупателей, имеющие огромное маркетинговое значение. Формы для подписки на журналы о бодибилдинге можно отправить тем, кто недавно купил тренажеры, а похожие формы для подписки на журналы о дрессировке собак можно отправить покупателям еды для собак. Альтернативные способы комбинирования информации иногда бывают очень изобретательными. Например, записи о социальном благополучии сравнили с криминальной информацией и смогли найти и арестовать нарушителей условий досрочного освобождения, а в 1984 году в Службе воинской повинности в США для идентификации граждан, уклонившихся от призыва на воинскую службу, использовали список дней рождения детей, полученный от популярного поставщика мороженого1.
Информационная разработка
Информационная разработка — это процесс получения информации из совокупности данных. Она может стать полезным инструментом в совершенно, казалось бы, невероятных ситуациях, например ее использовали для определения функций отдельных генов в молекулах ДНК и описания свойств таких организмов, как вирусы. Часто информационные разработки используются для поиска закономерностей и определения, являются ли они стабильными или это простое совпадение. Например, случай, когда в определенном круглосуточном магазине продали большое количество выигрышных лотерейных билетов, не следует считать показательным, тогда как информация о том, что покупатели, приобретающие различные закуски, также часто покупают замороженные ужины, может представлять ценность для управляющего бакалейным магазином.
Существует несколько подходов для защиты общества от злоупотребления базами данных. Один из них — применение способов правовой защиты. К сожалению, принятие закона не исключает его нарушения, просто превращает это действие в незаконное. Показательный пример — это закон о вторжении в личную жизнь, принятый в США в 1974 году, целью которого была защита граждан от неправомерного использования правительственных баз данных. Одним из положений этого закона было требование, чтобы правительственные организации сообщали о существовании внутренних баз данных в Федеральном регистре, и граждане могли получить и исправить касающуюся их информацию. Однако правительственные органы не спешили выполнять данный закон. Это не обязательно предполагает преступные намерения. Во многих случаях проблема кроется в бюрократизме. Но тот факт, что бюрократы могут создавать базы данных с информацией о гражданах, и о существовании этих баз невозможно узнать, не добавляет оптимизма.
Другое, и, возможно, более мощное средство контроля над злоупотреблением базами данных — это общественное мнение. Информация из баз данных не будет использована не по назначению, если наказания за злоупотребления превысят возможные выгоды, а наказание, которого компании боятся больше всего, — это неблагоприятный образ в глазах общества, что и делает такой подход верным. В начале 1990-х годов именно общественное мнение прекратило продажу крупнейшими кредитными организациями списков рассылки в маркетинговых целях. Совсем недавно America Online (крупнейший поставщик услуг Интернета) уступил давлению общества против практики продажи информации о клиентах теле-маркетерам. Даже правительственные органы уступили общественному мнению. В 1997 году Администрация социального обеспечения в США изменила свой план размещения записей о социальном обеспечении в Интернете, когда общество поставило вопрос о безопасности этой информации. В таких случаях результат был получен в течение нескольких дней — заметный контраст по сравнению с длительными судебными разбирательствами.
Конечно, во многих случаях применение баз данных обеспечивает преимущества и владельцу, и субъекту данных, но возможность утери конфиденциальности данных существует всегда, и ее надо рассматривать всерьез. Вопросы личной информации существенны, если данные точные, но они принимают невероятные масштабы, если в данных содержится ошибка. Представьте себе отчаяние, которое овладело бы вами, когда вы узнали бы, что оценка вашей кредитоспособности была сделана неправильно из-за ошибочной информации. Представьте проблемы, которые еще более усилились бы, если бы эта неверная информация была распространена среди множества организаций и институтов.
Проблемы личной безопасности являются и всегда будут главным побочным эффектом развития технологии в целом и баз данных в частности. Решить эту проблему могут образованные, внимательные и активные граждане.
