Смекни!
smekni.com

2011 Борис Григорьевич Миркин Профессор, Кафедра анализа данных и искусственного интеллекта опми ниу вшэ, Москва, РФ (стр. 11 из 13)

Квантовые вычисления: не биты, а кюбиты, т.е. векторы (a,b) с a соответствующим состоянию 0, b – состоянию 1, так что |a|2+|b|2=1. Алгоритм Deutsch-Jozsa решает NP-полную задачу различения между постоянной и сбалансированной булевыми функциями за один шаг. Некоторые считают, что они со временем так же решат остальные NP-полные задачи.

8.5 Эволюция языков программирования.

Алгоритмические языки – инструкций; декларативные языки; функциональные языки; сейчас наиболее популярны объектно-ориентированные языки – начатые С++ и Джава Гослинга. Я думаю, потому что они включают иерархию явлений, то как мы думаем о том, как устроены предметы. Например, тело животного включает голову, конечности, тело, и т.д. Голова включает рот, нос, глаза, и т.д. Глаза включают… Как говорил павший классик, электрон так же неисчерпаем, как и атом.

Странно, что специалисты по программированию отмечают совсем другие свойства объектно-ориентированных языков как характерные (базовые библиотеки и пр.)

Критика: Эти языки совсем не ориентированы на передачу отношений между разными аспектами явления и не очень хорошо ориентированы на отношения между классами. Это стало особенно чувствоваться в самое последнее время в связи, например, с необходимостью присваивания разных уровней доступа различным пользователям для различных задач.

Какие еще типы языков вы знаете? Согласно одному профессиональному сайту,


Функциональные
Императивные
Процедурные
Языки векторного программирования
Аспектно-ориентированные
Декларативные
Языки динамического программирования
Учебные

Немного напоминает классификацию животных из рассказа-эссе «Аналитический язык Джона Уилкинса» Хорхе Луис Борхеса: согласно «некой китайской энциклопедии» под названием «Небесная империя благодетельных знаний», животные делятся на:

  1. принадлежащих Императору,
  2. набальзамированных,
  3. прирученных,
  4. молочных поросят,
  5. сирен,
  6. сказочных,
  7. бродячих собак,
  8. включённых в эту классификацию,
  9. бегающих как сумасшедшие,
  10. бесчисленных,
  11. нарисованных тончайшей кистью из верблюжьей шерсти,
  12. прочих,
  13. разбивших цветочную вазу,
  14. похожих издали на мух.

9 Развитие баз данных и знаний

9.1 Эволюция баз данных и систем управления.

9.2. Хранилища данных

9.3. Распределенные системы и электронные коллективы.

База данных – это собрание данных, организованное таким образом, чтобы данные было легко найти, изменить, и манипулировать. Непрофессионалы классифицируют базы данных по содержанию – библиотечные базы данных, текстовые базы данных, изображения, и пр.

В информатике, главное основание – организация данных. Где-то к 80-м программисты пришли к понятию реляционной базы и модели данных, которые стали стандартом.

Реляционная модель данных:

- Структурный аспект — данные в базе данных представляют собой набор отношений, то что в анализе данных называется таблица объект-аттрибут.

- Аспект целостности — отношения (таблицы) отвечают определенным условиям целостности уровня домена (типа данных), уровня отношения и уровня базы данных.

- Аспект манипулирования — реляционная алгебра: объединение, пересечение, разность и декартово произведение, а также селекция, проекция, соединение и деление (Кодд, 1970)

Кроме того, в состав реляционной модели данных обычно включают теорию нормализации.

Следует отметить, что

  • модель является логической, а не физической – все информационное наполнение базы данных представлено одним и только одним способом, а именно — явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;
  • наличие реляционной алгебры позволяет реализовать декларативное программирование («что сделать», а не «как сделать» в процедурных языках) и декларативное описаний ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.

Взаимосвязь таблиц является важнейшим элементом реляционной модели данных. Она поддерживается внешними ключами (foreign key). Рассмотрим пример, в котором база данных хранит информацию о рядовых сотрудниках (таблица Сотрудник) и руководителях (таблица Руководитель) в некоторой организации (рис.2). Первичный ключ таблицы Руководитель - столбец Номер (например, табельный номер). Столбец Фамилия не может выполнять роль первичного ключа, так как в одной организации могут работать два руководителя с одинаковыми фамилиями. Любой сотрудник подчинен единственному руководителю, что должно быть отражено в базе данных. Таблица Сотрудник содержит столбец Номер руководителя, и значения в этом столбце выбираются из столбца Номер таблицы Руководитель (см. рис.2). Столбец Номер Руководителя является внешним ключом в таблице Сотрудник.

Особенностью настоящего этапа является то, что реляционные базы данных принимают для пользователя вид базы данных для объектно-ориентированного программирования (аn object-oriented programming database), конгруэнтной со структурой данных в классах и подклассах программного обеспечения конкретной системы. Другой популярный вид баз данных – распределенные базы данных, которые рассредоточены в разных точках компютерной сети.

Базы данных содержат коллекции данных о тоговых транзакциях, каталогах продукции и складов, профили потребителей и пр. Они позволяют пользователю считывать и записывать данные, специфицировать формат отчетных таблиц и анализировать движение данных. Типично, их хранят в мэйнфреймах, созданные и поддерживаемые на допотопных языковых средствах, так что основная задача программистов, обслуживающих подобные системы, скажем, в каком-нибудь огромном международном банке, поддерживать возможности системы для постоянно обновляемых физических способов доставки информации – новые считывающие устройства, новые стандарты компьютерных спредшитов, и пр. Основные форматы баз данных - IBM's DB2, Microsoft's Access, Oracle, Sybase, and Computer Associates.

SQL (ˈɛsˈkjuˈɛl или ˈsiːkwəl) (англ. Structured Query Language — язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.

Язык SQL делится на три части:

  • операторы определения данных (англ. Data Definition Language, DDL)
  • операторы манипуляции данными (англ. Data Manipulation Language, DML)
  • операторы определения доступа к данным (англ. Data Control Language, DCL)

Типичный запрос (к базе данных Склад):

SELECT Название, Количество, Материал FROM Деталь WHERE Номер = "Т145-А8";{ВЫБРАТЬ Название, Количество, МатериалИЗ Деталь ГДЕ Номер = "Т145-А8"}

Типичные команды:

SELECT Выбрать данные из базы данных ВЫБРАТЬ
INSERT Добавить данные в базу данных ВКЛЮЧИТЬ
UPDATE Обновить данные в базе данных ОБНОВИТЬ
DELETE Удалить данные из базы данных УДАЛИТЬ
GRANT Предоставить привилегии пользователю РАЗРЕШИТЬ
REVOKE Отменить привилегии пользователя ОТМЕНИТЬ
COMMIT Зафиксировать текущую транзакцию ЗАФИКСИРОВАТЬ
ROLLBACK Прервать текущую транзакцию ПРЕРВАТЬ

История

В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД System R (англ.), для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как англ. Structured English QUEry Language — «структурированный английский язык запросов». Позже по юридическим соображениям язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI (American National Standards Institute), официальным произношением стало [,es kju:' el] — эс-кью-эл. Несмотря на это, даже англоязычные специалисты по прежнему часто называют SQL сиквел, вместо эс-кью-эл (по-русски также часто говорят «эс-ку-эль»).

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (англ. cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.

Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System/R.

Первый официальный стандарт языка SQL был принят ANSI в 1986 и ISO (Международной организацией по стандартизации) в 1987 (так называемый SQL-86) и несколько уточнён в 1989 году. Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 г. нового расширенного стандарта (ANSI SQL-92 или просто SQL2). Следующим стандартом стал SQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже.

Создатель реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности они указывают на следующие проблемы SQL: