Квантовые вычисления: не биты, а кюбиты, т.е. векторы (a,b) с a соответствующим состоянию 0, b – состоянию 1, так что |a|2+|b|2=1. Алгоритм Deutsch-Jozsa решает NP-полную задачу различения между постоянной и сбалансированной булевыми функциями за один шаг. Некоторые считают, что они со временем так же решат остальные NP-полные задачи.
8.5 Эволюция языков программирования.
Алгоритмические языки – инструкций; декларативные языки; функциональные языки; сейчас наиболее популярны объектно-ориентированные языки – начатые С++ и Джава Гослинга. Я думаю, потому что они включают иерархию явлений, то как мы думаем о том, как устроены предметы. Например, тело животного включает голову, конечности, тело, и т.д. Голова включает рот, нос, глаза, и т.д. Глаза включают… Как говорил павший классик, электрон так же неисчерпаем, как и атом.
Странно, что специалисты по программированию отмечают совсем другие свойства объектно-ориентированных языков как характерные (базовые библиотеки и пр.)
Критика: Эти языки совсем не ориентированы на передачу отношений между разными аспектами явления и не очень хорошо ориентированы на отношения между классами. Это стало особенно чувствоваться в самое последнее время в связи, например, с необходимостью присваивания разных уровней доступа различным пользователям для различных задач.
Какие еще типы языков вы знаете? Согласно одному профессиональному сайту,
Функциональные
Императивные
Процедурные
Языки векторного программирования
Аспектно-ориентированные
Декларативные
Языки динамического программирования
Учебные
Немного напоминает классификацию животных из рассказа-эссе «Аналитический язык Джона Уилкинса» Хорхе Луис Борхеса: согласно «некой китайской энциклопедии» под названием «Небесная империя благодетельных знаний», животные делятся на:
- принадлежащих Императору,
- набальзамированных,
- прирученных,
- молочных поросят,
- сирен,
- сказочных,
- бродячих собак,
- включённых в эту классификацию,
- бегающих как сумасшедшие,
- бесчисленных,
- нарисованных тончайшей кистью из верблюжьей шерсти,
- прочих,
- разбивших цветочную вазу,
- похожих издали на мух.
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"} Типичные команды:
История
В начале 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: