Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Классификация языков программирования. Критерии выбора среды и языка разработки программ. (ОБЗОР ЯЗЫКОВ ПРОГРАММИРОВАНИЯ))

Содержание:

ВВЕДЕНИЕ

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

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

Объектом исследования послужили языки программирования и история развития языков программирования.

Целью курсовой работы является изучение классификации языков программирования и их развития.

Цели исследования:

  1. Просмотреть общее сведения и уровни языков программирования.
  2. Просмотреть историю развития языков программирования.
  3. Сделать обзор современных языков программирования.

Задачи исследования:

  1. Ознакомления с языками программирования.
  2. Рассмотрение истории развития языков программирования.
  3. Обзор современных языков программирования.

В первой главе рассматриваются общие сведения о языках программирования и история развития их.

Во второй главе рассматривается обзор современных языков программирования.

В данной курсовой работе использовался научно-исследовательские методы.

Применяемые технические средства: ПЭВМ: Core 2 Duo E6600 2.4 ГГц 2 x 4 Мб L2; 2 x 1024 Мб DDR3-1333МГц; NVIDIA GeForce 8600 GT 512 Мб; HDD Hitachi Deskstar 7K1000 1 Тб; Принтер: Canon LBP3010.

Программные средства ОС Windows XP Professional SP3. Данная курсовая работа выполнена в программе Microsoft Word 2003, а также были использованы другие программы: Microsoft PowerPoint, Nero StartSmart.

ГЛАВА 1. ОБЗОР ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

1.1 Язык QBE и MS Access

QBE (Query by Example, запрос по образцу) — это способ создания запросов к БД, с использованием образцов значений в виде текстовой строки. Реализации QBE осуществляют преобразование пользовательского ввода в формальный запрос к базе данных, это позволяет создавать сложные запросы без необходимости изучать более сложные языки запросов (например, SQL).
Такой метод отбора данных впервые предложен сотрудником исследовательского центра IBM в 1970 году Моше Злуфом.
Эксплуатационным преимуществом поиска QBE является то, что для формирования запроса не требуется использовать специализированный язык запросов, синтаксис которого может оказаться сложным и недоступным пользователю. Пользователю выводится окно, в котором указаны все поля данных таблицы. Введение информации в конкретное поисковое поле ограничит поиск полным либо частичным совпадением по полю. Проверка условий осуществляется только по заполненным условиям на поля. Многие практические реализации QBE допускают также не только конъюнктивное соединение условий в заполненных полях, но и другие варианты соединения условий.[2]

Основные возможности языка QBE.

QBE позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы. Этот способ задания запросов обеспечивает наглядность и не требует указания алгоритма выполнения операции – достаточно описать образец ожидаемого результата.
В каждой из современных реляционных СУБД имеется своя реализация языка QBE. На языке QBE можно задавать однотабличные и многотабличные запросы.
С помощью QBE можно выполнять следующие основные операции:

  • выборку данных
  • вычисление над данными
  • вставку новых записей
  • удаление записей
  • модификацию (изменение) данных

Результатом выполнения запроса является новая таблица, которая называется ответной (первые две операции), или обновленная исходная таблица (остальные операции). В реальных приложениях баз данных QBE используется в основном для выборки данных.
Выборка, вставка, удаление и модификация могут производиться безусловно или в соответствии с условиями, задаваемыми с помощью логических выражений. Вычисления над данными задаются с помощью арифметических выражений и порождают в ответных таблицах новые поля, называемые вычисляемыми.
Запросная форма обычно имеет вид таблицы, имя и названия полей которой совпадают с именем и названиями полей соответствующей исходной таблицы. Чтобы узнать имена доступных таблиц БД, в языке QBE предусмотрен запрос на выборку имен таблиц. Названия полей исходной таблицы могут вводиться в шаблон вручную или автоматически. Во втором случае используется запрос на выборку заголовков столбцов.
В современных СУБД, например, в Microsoft Access, многие действия по подготовке запросов с помощью языка QBE выполняются визуально с помощью мыши. В частности, визуальное связывание таблиц при подготовке запроса выполняется не элементами примеров, а просто «протаскиванием» мышью поля одной таблицы к полю другой.

По возможностям манипулирования данными при описании запросов указанные языки практически эквивалентны. Более того, на практике запрос, составленный на QBE, обычно транслируется в SQL - запрос и лишь затем выполняется.

Средства генерации запросов MS Access[4].

Microsoft Office Access или просто Microsoft Access — реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.

Основные компоненты MS Access:

  • построитель таблиц;
  • построитель экранных форм;
  • построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);
  • построитель отчётов, выводимых на печать.

Они могут вызывать скрипты на языке VBA, поэтому MS Access позволяет разрабатывать приложения и БД практически «с нуля» или написать оболочку для внешней БД. Microsoft Jet Database Engine, которая используется в качестве движка базы данных MS Access, является файл-серверной СУБД и потому применима лишь к приложениям, работающим с небольшими объёмами данных и при небольшом числе пользователей, одновременно работающих с этим данными. Непосредственно в Access отсутствует ряд механизмов, необходимых в многопользовательских БД, таких, например, как триггеры. Встроенные средства взаимодействия MS Access со внешними СУБД с использованием интерфейса ODBC снимают ограничения, присущие Microsoft Jet Database Engine.

Инструменты MS Access, которые позволяют реализовать такое взаимодействие, называются «связанные таблицы» (связь с таблицей СУБД) и «запросы к серверу» (запрос на диалекте SQL, который «понимает» СУБД). Корпорация Microsoft для построения полноценных клиент-серверных приложений на базе MS Access рекомендует использовать в качестве движка базы данных СУБД MS SQL Server. При этом имеется возможность совместить с присущей MS Access простотой инструменты для управления БД и средства разработки. Известны также реализации клиент-серверных приложений на базе связки Access 2003 c другими СУБД, в частности, MySQL Access, при работе с базой данных, иначе взаимодействует с жёстким (или гибким) диском, нежели другие программы. В других программах, файл-документ, при открытии, полностью загружается в оперативную память, и новая редакция этого файла (изменённый файл) целиком записывается на диск только при нажатии кнопки «сохранить». В Access новая редакция содержимого изменённой ячейки таблицы записывается на диск (сохраняется) сразу, как только курсор клавиатуры будет помещён в другую ячейку (или новая редакция изменённой записи записывается на диск сразу, как только курсор клавиатуры будет поставлен в другую запись (строку)). Таким образом, если внезапно отключат электричество, то пропадёт только изменение той записи, которую не успели покинуть. Целостность данных в Access обеспечивается также за счет механизма транзакций. Кнопка «Сохранить» в Access тоже есть, но в Access в режиме просмотра данных она нужна, в первую очередь, для сохранения изменённого режима показа таблицы или другого объекта — то есть, для сохранения таких изменений, как: изменение ширины столбцов и высоты строк, перестановка столбцов в режиме просмотра данных, «закрепление» столбцов и освобождение закреплённых столбцов, изменение сортировки, применение нового фильтра, изменение шрифта; цвета текста, сетки и фона и т.п.
Кроме того, в Access эта кнопка нужна в режиме «Конструктор» для сохранения изменений структуры объекта базы данных, сделанных в этом режиме. Даже если в процессе работы с файлом базы данных не применялся режим «Конструктор» и новые данные в базу данных не добавлялись (то есть если база данных только просматривалась), то всё равно файл базы данных имеет тенденцию со временем, в процессе работы с ним, всё больше и больше увеличиваться в размере. Очень способствует увеличению размера файла применение новых сортировок и фильтров (особенно если было применено несколько разных, сильно отличающихся друг от друга сортировок/фильтров).
Это приращение размера файла является, фактически, пустотой, но эта пустота лежит внутри файла, увеличивая его объём.
Чтоб вернуть файлу базы данных нормальный (минимальный) объём (то есть чтобы убрать из файла пустоту), в Access есть кнопка «Сжать и восстановить базу данных» — эту кнопку нужно время от времени нажимать (при нажатии этой кнопки никакая информация, никакие данные из файла базы данных не удаляются). Так же базу данных можно запустить с параметром /compact, что выполнит сжатие автоматически и закроет базу по окончании процесса[3].

Версии Microsoft Access:

1992 Access 1 для Windows 3.0

1993 Access 2.0 для Windows 3.1x (Office 4.3)

1995 Access 7 для Windows 95 (Office 95)

1997 Access 97 (Office 97)

1999 Access 2000 (Office 2000)

2001 Access 2002 (Office XP)

2003 Access 2003 (из комплекта программ Microsoft Office 2003)

2007 Microsoft Office Access 2007 (из комплекта программ Microsoft

Office 2007)

2010 Microsoft Office Access 2010 (из комплекта программ Microsoft

Office 2010)

2012 Microsoft Access 2013 (из офисного пакета приложений Microsoft

Office 2013)

QBE получил у пользователей столь широкое признание, что в настоящее время в той или иной мере он реализован практически во всех популярных СУБД, включая и Microsoft Access. Средства поддержки языка QBE в СУБД Microsoft Access весьма просты в эксплуатации и в то же время доставляют пользователям достаточно широкий спектр возможностей работы с данными.

1.2 Язык SQL

SQL (Structured Query Language, язык структурированных запросов) - универсальный язык, которыйприменяется для создания, модификации и управления данными в реляционных БД.

SQL в его исходном виде – это информационно-логический язык, а не язык программирования, но также он предусматривает возможность его процедурных расширений, с учётом чего его вполне можно рассматривать как язык программирования.

Стандартизация SQL.

Деятельность по стандартизации языка SQL началась практически одновременно с появлением первых его коммерческих реализаций.
Анализ документов говорит о том, что процесс стандартизации происходил сложно с использованием далеко не только научных доводов. В результате, принятый в 1989 г. Международный стандарт SQL во многих частях имеет общий характер и допускает достаточно широкое толкование. В этом стандарте полностью отсутствуют такие важные разделы, как манипулирование схемой БД и динамический SQL. Многие важные аспекты языка в соответствии со стандартом определяются в реализации.
Возможно, наиболее важными достижениями стандарта SQL являются четкая стандартизация синтаксиса и семантики операторов выборки и манипулирования данными и фиксация средств ограничения целостности БД, включающих возможности определения первичного и внешних ключей отношений и так называемых проверочных ограничений целостности. Средства определения внешних ключей позволяют легко формулировать требования так называемой целостности БД по ссылкам.
Стандарт SQL1 разделялся на два уровня. Первый уровень представлял собой подмножество второго уровня, описывавшего весь документ в целом. То есть, такая структура предусматривала, что не все спецификации стандарта SQL1 будут относиться к Уровню 1. Тем самым, поставщик, заявлявший о поддержке данного стандарта, должен был заявлять об уровне, которому соответствует его реализация языка SQL. Это значительно облегчило принятие и поддержку стандарта, поскольку производители могли реализовывать его поддержку в два этапа.

Осознавая неполноту стандарта SQL, на фоне завершения разработки этого стандарта представители различных организаций начали работу над стандартом SQL2. Работа также длилась несколько лет, было выпущено множество проектов стандарта, и в марте 1992 г. был выработан окончательный проект стандарта. Новый стандарт, озаглавленный как SQL92, представлял собой по сути расширение стандарта SQL1, включив в себя множество дополнений имевшихся в предыдущих версиях инструкций.
Данный стандарт существенно более полон и охватывает почти все необходимые для реализации аспекты: манипулирование схемой БД, управление транзакциями и сессиями (сессия - последовательность транзакций, в пределах которой сохраняются временные отношения), подключение к БД, динамический SQL. Наконец стандартизованы отношения-каталоги БД, что вообще-то не связано с языком непосредственно, но сильно влияет на реализацию языка.
В стандарте отсутствовали средства управления индексами. Конечно, эти средства обычно находятся в стороне от основных операторов, но нам не известна ни одна реализация, в которой бы их не было.
SQL92 как и SQL1 был разделён на несколько уровней, однако, во-первых, число уровней было увеличено с двух до трёх, а во-вторых они получили названия вместо порядковых цифр: начальный (entry), средний (intermediate), полный (full). Уровень «полный» как и Уровень 2 в SQL1 подразумевал весь стандарт целиком. Уровень «начальный» представлял собой подмножество уровня «средний», в свою очередь представлявшего собой подмножество уровня «полный». Уровень «начальный» был сравним с Уровнем 2 стандарта SQL1, но спецификации этого уровня были несколько расширены. Таким образом, цепочка включений уровней стандартов выглядела примерно следующим образом: SQL1 Уровень 1 - SQL1 Уровень 2 - SQL92 «Начальный» - SQL92 «Средний» - SQL92 «Полный».
После принятия стандарта SQL92 к нему были добавлены ещё несколько документов, расширявших функциональность языка. Так, в 1995 году был принят стандарт SQL/CLI (Call Level Interface, интерфейс уровня вызовов), впоследствии он был переименован в CLI95. В следующем году приняли стандарт SQL/PSM (Persistent Stored Modules, постоянно хранимые модули), который получил название PSM-96.

Типы данных SQL[7].

Данные, хранящиеся в столбцах таблиц SQL-ориентированной БД, являются типизированными, т. е. представляют собой значения одного из типов данных, предопределенных в языке SQL или определяемых пользователями путем применения необходимых средств языка. Для этого при определении таблицы каждому ее столбцу назначается тип данных, и в дальнейшем СУБД должна следить, чтобы в каждом столбце каждой строки присутствовали лишь допустимые значения.

Допустимые в SQL типы данных разбиваются на следующие категории:

  • точные числовые типы (exact numerics);
  • приближенные числовые типы (approximate numerics);
  • типы символьных строк (character strings);
  • типы битовых строк (bit strings)75);
  • типы даты и времени (datetimes);
  • типы временных интервалов (intervals);
  • булевский тип (Booleans);
  • типы коллекций (collection types);
  • анонимные строчные типы (anonymous row types);
  • типы, определяемые пользователем (user-defined types);
  • ссылочные типы (reference types).

Возможности SQL.

Изначально SQL был лишь языком запросов. В сущности, он содержал только предложение SELECT, которое позволяло формулировать запросы для выборки данных с БД. Затем язык был дополнен двумя компонентами, необходимыми для работы с базами данных. Первые — средства для определения структуры БД, которые в терминологии теории баз данных называются языком определения данных. Вторые — средства, которые позволяют заполнять базу данными, изменять и удалять. Данный компонент в теории баз данных называется языком манипулирования данными. Также было принято решение, что весь интерфейс из баз данных должен обеспечиваться одним языком, вследствие чего SQL оброс множеством функций, необходимых для управления базами данных. Приведем некоторые из них:

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

SQL существует в двух формах. В интерактивном SQL пользователь непосредственно вводит команды и получает результат. Команды встроенного SQL включаются в тексты программ на других языках. В этом случае обращения к базе данных и обработка результатов проводится этими программами.

 Представления базы данных.

В языке допускалось использование хранимых отношений БД и представляемых отношений. Наиболее удачным решением было использование для определения представлений общего аппарата операторов выборки. Любой оператор выборки может быть использован для определения представления. В языке отсутствуют какие-либо ограничения по поводу использования представлений: влюбом операторе SQL, в котором допускается использование имени хранимого отношения, допускается и использование имени представления. В SQL System R ничего не говорится о рекомендуемом способе реализации доступа к представлениям, но при любом способе эффект должен быть таким, как если бы выполнить полную материализацию представления до выполнения оператора. 
Массу проблем, исследований и предложений породила потенциальная возможность выполнения операторов манипулирования данными над представлениями. Понятно, что эта возможность легко реализуема для простых представлений, но в более сложных случаях не только реализация, но и семантика операций становится нетривиальной. Кстати, в System R операторы манипулирования данными допускались только над простыми представлениями. 
Существенной особенностью языка SQL, появившейся в нем с самого начала, является обеспечение защиты доступа к данным средствами самого языка. Основная идея такого подхода состоит в том, что по отношению к любому отношению БД и любому столбцу отношения вводится предопределенный набор привилегий. С каждой транзакцией неявно связывается идентификатор пользователя, от имени которого она выполняется (способы связи и идентификации пользователей не фиксируются в языке и определяются в реализации). 

Определение управляющих структур.

Внесение в реляционный язык, каким является SQL, явных операторов порождения и уничтожения структур физического уровня, поддерживающих эффективное выполнение запросов к БД, явилось в SQL System R чисто прагматическим решением, обеспечивающим возможность всех видов работ с БД с помощью одного языка. В SQL System R упоминаются два вида таких структур: индексы и связи (links). Индекс в его абстрактном языковом представлении - это инвертированный файл, обеспечивающий доступ к кортежам соответствующего отношения на основезаданных значений одного или нескольких столбцов, составляющих ключ индекса. Операторы языка позволяли создавать и уничтожать индексы, но никаким образом не давали возможности явно указать на необходимость использования существующего индекса при выполнении оператора выборки, решение об этом возлагалось на реализацию. С помощью оператора определения индекса можно было выразить два дополнительных утверждения, касающихся логической схемы отношения и физической структуры его хранения. Использование при определении индекса ключевого слова UNIQUE означало, что ключ этого индекса является возможным ключом соответствующего отношения. Фактически это означает наличие дополнительного механизма определения ограничения целостности отношения. Один из индексов для данного отношения мог быть определен с ключевым словом CLUSTERING. Это означает требование физической кластеризации во внешней памяти кортежей отношения с равными или близкими значениями ключа индекса. Операторы определения связи позволяли в стиле сетевой модели данных организовать во внешней памяти списки кортежей указанного отношения. Как и в случае индексов, операторы позволяли создавать и уничтожать такие списки, но не давали возможности явно указать на необходимость использования существующих списков при выполнении операторов выборки. Большая трудоемкость поддержания списков при выполнении операторов манипулирования данными и трудность выполнения оценок стоимости их использования при выполнении операторов выборки привели к тому, что механизм связей исчез из языка уже на поздней стадии проекта System R.

Типы команд SQL.

Реализация в SQL концепции операций, ориентированных на табличное представление данных, позволила создать компактный язык с небольшим набором предложений. Язык SQL может использоваться как для выполнения запросов к данным, так и для построения прикладных программ. Основные категории команд языка SQL предназначены для выполнения различных функций, включая построение объектов базы данных и манипулирование ими, начальную загрузку данных в таблицы, обновление и удаление существующей информации, выполнение запросов к базе данных, управление доступом к ней и ее общее администрирование.
Основные категории команд языка SQL:
- DDL – язык определения данных; 

- DML – язык манипулирования данными; 

- DQL – язык запросов; 

-DCL – язык управления данными; 

- команды администрирования данных;

- команды управления транзакциями. 

1.3 Transact-SQL

Transact-SQL (T-SQL) является процедурным расширением языка SQL компаний Microsoft (для Microsoft SQL Server) и Sybase (для Sybase ASE).
Transact-SQL является процедурным языком, позволяющим указать базе данных, как и где искать и обрабатывать данные. Стандартный SQL не является процедурным языком, поэтому при его использовании способы извлечения и обработки данных база данных выбирает сама. В Transact-SQL имеются, в частности, возможности объявлять локальные и глобальные переменные, курсоры, возможность программно обрабатывать ошибки, создавать и сохранять триггеры и другие процедуры, использовать циклы, знаки подстановки, преобразовывать одни типы данных в другие, создавать итоговые отчеты[5].

Transact-SQL является процедурным расширением языка SQL компании Microsoft. По сравнению с SQL он расширен следующими дополнительными возможностями:

управляющие операторы, локальные и глобальные переменные,
различные дополнительные функции для обработки строк, дат, математики и т.п., поддержка аутентификации Microsoft Windows.

Transact-SQL – это ключ к использованию SQL Server. Все приложения, взаимодействующие с экземпляром SQL Server отправляют серверу инструкции Transact-SQL.

Предыстория Microsoft SQL SERVER.

Развитие клиент-серверных технологий во второй половине 80-х было обусловлено развитием двух ключевых направлений, активно разрабатываемых с конца 70-х годов: персональных компьютеров с одной стороны, и компьютерных сетей — с другой. Долгое время СУБД были доступны лишь для мэйнфреймов, и лишь благодаря росту производительности процессоров для домашних компьютеров и мини-ЭВМ разработчики СУБД (как, например, Oracle) начали создавать соответствующие версии своих продуктов. Одной из первых СУБД для ПК стала Oracle v3, выпущенная в 1983 году. На тот момент немногочисленные владельцы ПК использовали их в основном для разработки приложений и тестирования.
Одним из ключевых этапов в развитии СУБД стал 1986 год. К этому времени появилось еще несколько компаний-разработчиков СУБД, одной из самых заметных из них стала компания Sybase, основанная двумя годами ранее. К 1986 году Sybase начала комплектовать интеллектуальные рабочие станции (как правило, разработки Sun Microsystems или Apollo Computer) с серверами базы данных (разработанных, например, Oracle). При этом сама клиент-серверная технология сделала возможным отделение модулей обработки информации (т. н. back end) от модулей интерфейса (т. н. front end). Учтя постоянный рост проникновения компьютерных сетей, поставщики решений перешли к задачам распределения остальных задач (например, форматирование отчётов, проверка данных и т. д.) среди рабочих станций сети, оставив серверу выполнять лишь задачи, требующие централизованного решения (хранение и защита данных, оптимизация потока выполнения запросов и т. д.). Существенную роль в переходе от иерархических БД к реляционным сыграли и сами разработчики СУБД. Так, IBM к этому времени уже постепенно переводила своих клиентов с иерархических СУБД (как, например, IMS) на СУРДБ DB2 и SQL/DS. Новые СУБД хотя и уступали в скорости IMS, но превосходили её в легкости программирования и обслуживания. Поставки DB2 быстро превзошли ожидания, захватив значительную долю рынка в первый же год продаж. В сентябре 1986 года Gupta Technologies представила свою разработку SQL Base, заключающую в себе концепт сервера базы данных для ПК, объединённых в сеть. Также Gupta одной из первых реализовала прозрачный доступ к мэйнфреймам IBM с запущенными на них DB2, предоставив прямой доступ к хранившимся там данным без необходимости скачивания файлов или таблиц на рабочую станцию пользователя.

К концу 1986 года использование языка SQL в качестве основного для работы с данными в СУБД стало практически повсеместным. IBM, Oracle, Sybase и Gupta использовали схожий синтаксис языка SQL для отправки сообщений от клиентской части СУБД (front end) к серверной (back end), что позволяло сочетать клиентские и серверные части разных производителей. В том же году Американский национальный институт стандартов утвердил версию языка SQL в качестве международного стандарта обработки данных, что поставило под угрозу благополучие СУБД, не обладавших поддержкой языка SQL. Так, например, компания Cullinet хотя и анонсировала поддержку языка SQL в своих СУБД для миникомпьютеров, но из-за задержки в её реализации потеряла свою долю рынка СУБД, уступив IBM и её продукту DB2.
Элементы синтаксиса MS-SQL Директивы сценария - специфические команды, используемые только в T SQL. Эти команды помогают серверу определять правила работы со скриптом и транзакциями. Например: GO - сигнализирует SQL-серверу об окончании сценария, EXEC (или EXECUTE) - выполняет процедуру либо скалярную функцию.

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

-- строковый комментарий исключает из выполнения только одну строку, перед которой стоят два минуса.

/* */- блоковый комментарий исключает из выполнения целый блок команд, заключенный в указанную конструкцию.

Идентификаторы.
Идентификаторы - специальные символы, используюемые с переменными для того, чтобы идентифицировать их тип или для группировки слов в переменную.

Виды идентификаторов:

@- идентифицирует локальной переменной (пользовательской).
@@- идентификатор глобальной переменной (встроенной).
#- идентификатор локальной таблицы или процедуры.
##- идентификатор глобальной таблицы или процедуры.
[ ]- идентификатор группировки слов в переменную.
Типы данных в MS SQL Server.

Тип данных — фундаментальное понятие теории программирования. Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям, и, возможно, способ реализации хранения значений и выполнения операций. Любые данные, которыми оперируют программы, относятся к определённым типам.
В Transact SQL у каждого столбца, локальной переменной, выражения и параметра есть определенный тип данных. Тип данных — это атрибут, который определяет, какого рода данные могут храниться в объекте: целые числа, символы, данные денежного типа, метки времени и даты, двоичные строки и т.д.

SQL Server предоставляет набор системных типов данных, определяющих все типы данных, которые могут использоваться в нем. Можно также определять пользовательские типы данных в Transact-SQL или Microsoft.NET Framework. Псевдонимы типов данных основываются на системных типах. Псевдонимы типов данных создаются при помощи конструкции CREATE TYPE. Определяемые пользователем типы данных обладают свойствами, которые зависят от методов и операторов класса, создающиеся для них на одном из языков программирования, поддерживающиеся .NET Framework.
При объединении одним оператором двух выражений с разными типами данных, параметрами сортировки, точностями, масштабами или длинами, результат определяется следующим образом:

  • Тип данных результата определяется применением правил очередности типов данных к входным выражениям. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL);
  • Параметры сортировкирезультата определяются правилами очередности параметров сортировки, если тип данных результата относится к char, varchar, text, nchar, nvarchar или ntext. Дополнительные сведения см. в разделе Очередность параметров сортировки (Transact-SQL);
  • Точность, масштаб и длина результата зависят от точности, масштаба и длины входных выражений. Дополнительные сведения см. в разделе Точность, масштаб и длина (Transact-SQL).

SQL Server предоставляет синонимы типов данных для совместимости со стандартом ISO. Типы данных в SQL Server объединены в следующие категории[10]:
-Точные числа

-Символьные строки в Юникоде

-Приблизительные числа

-Двоичные данные

-Дата и время

-Прочие типы данных

-Символьные строки

В зависимости от параметров хранения, некоторые типы данных в SQL Server относятся к следующим группам:

типы данных больших значений: varchar(max), nvarchar(max) и varbinary(max).
Типы данных больших объектов: text, ntext, image, varchar(max), nvarchar(max), varbinary(max) и xml.

Тип данных int является основным типом целочисленных данных в SQL Server. Тип данных bigint используется для хранения значений, выходящих за диапазон, поддерживаемый типом данных int.

В таблице приоритетов типов данных тип bigint располагается между smallmoney и int.

Функции возвращают bigint только в случае, если выражение параметра имеет тип bigint. SQL Server не выполняет автоматического продвижения других целочисленных типов данных (tinyint, smallint и int) до bigint.

Bit - Целочисленный тип данных, который может принимать значения 1, 0 или NULL.

decimal и numeric - Числа с фиксированной точностью и масштабом. При использовании максимальной точности числа могут принимать значения в диапазоне от -10^38+1 до 10^38-1. Синонимами по стандарту ISO для decimal являются dec и dec(p, s). numeric функционально эквивалентно decimal.

Money и smallmoney - Типы данных, представляющие денежные (валютные) значения.

Real и float - Типы приблизительных числовых данных, используемые для числовых данных с плавающей запятой.Данные с плавающей запятой являются приблизительными, поэтому не все значения из диапазона могут быть отображены точно.

date - Описывает дату

datetime - Определяет дату, включающую время дня с долями секунды в 24-часовом формате.

datetime2 - Определяет дату, включающую время суток в 24-часовом формате. Тип данных datetime2 может рассматриваться как расширение существующего типа datetime, имеющее более широкий диапазон дат, большую точность в долях секунды по умолчанию и дополнительную точность, определяемую пользователем.

datetimeoffset - Определяет дату, объединенную со временем дня, с учетом часового пояса в 24-часовом формате.

smalldatetime - Определяет дату, сочетающуюся с временем дня. Время представлено в 24-часовом формате с секундами, всегда равными нулю (:00), без долей секунд.

time - Определяет время дня. Время без учета часового пояса в 24-часовом формате.

Char, varchar - Являются символьными типами данных фиксированной или переменной длины.

Binary, varbinary - Типы двоичных данных фиксированной или переменной длины.

cursor - Тип данных для переменных или выходных параметров хранимых процедур, которые содержат ссылку на курсор. Любая переменная, созданная с типом данных cursor, может принимать значение NULL.
hierarchyid - Тип данных hierarchyid является системным типом данных переменной длины. Тип данных hierarchyid используется для представления положения в иерархии. Столбец типа hierarchyid не принимает древовидную структуру автоматически. Приложение должно создать и назначить значения hierarchyid таким образом, чтобы они отражали требуемые связи между строками.

sql_variant - Тип данных, хранящий значения различных типов данных, поддерживаемых SQL Server.

table - Специальный тип данных, который может быть использован для хранения результирующего набора для обработки в будущем. Переменная table используется в первую очередь для временного хранения набора строк, возвращаемых как результирующий набор функции с табличным значением. Функции и переменные могут бытьобъявлены как имеющие тип table. Переменные table могут использоваться в функциях, хранимых процедурах и пакетах.

uniqueidentifier - 16-байтовый идентификатор GUID

  • GUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов. Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,4028?1038), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала.
  • xml - Тип данных, в котором хранятся XML-данные. Можно хранить экземпляры xml в столбце либо в переменной типа xml.

ГЛАВА 2. ПЕРЕДАЧА ДАННЫХ ПО СЕТИ

Хотя стек протоколов и называется TCP/IP, сами протоколы TCP и IP являются важнейшими, но не единственными представителями этого семейства.

Каждый уровень коммуникаций обслуживается несколькими протоколами. Рассмотрим их более подробно.

TCP и UDP - протоколы транспортного уровня, организующие поток данных между конечными системами для приложений верхнего уровня. Эти протоколы значительно отличаются друг от друга.

TCP (Transmission Control Protocol) обеспечивает надежную передачу данных между двумя хостами. Он позволяет клиенту и серверу приложения устанавливать между собой логическое соединение и затем использовать его для передачи больших массивов данных, как если бы между ними существовало прямое физическое соединение. Протокол позволяет осуществлять дробление потока данных, подтверждать получение пакетов данных, задавать таймауты (которые позволяют подтвердить получение информации), организовывать повторную передачу в случае потери данных и т.д. Поскольку этот транспортный протокол реализует гарантированную доставку информации, использующие его приложения получают возможность игнорировать все детали такой передачи.

Протокол UDP (User Datagram Protocol) реализует гораздо более простой сервис передачи, обеспечивая подобно протоколам сетевого уровня, ненадежную доставку данных без установления логического соединения, но, в отличие от IP, - для прикладных систем на хост-компьютерах. Он просто посылает пакеты данных, дейтаграммы (datagrams), с одной машины на другую, но не предоставляет никаких гарантий их доставки. Все функции надежной передачи должны встраиваться в прикладную систему, использующую UDP. Протокол UDP имеет и некоторые преимущества перед TCP. Для установления логических соединений нужно время, и они требуют дополнительных системных ресурсов для поддержки на компьютере информации о состоянии соединения. UDP занимает системные ресурсы только в момент отправки или получения данных.

Поэтому если распределенная система осуществляет непрерывный обмен данными между клиентом и сервером, связь с помощью транспортного уровня TCP окажется для нее более эффективной. Если же коммуникации между хост-компьютерами осуществляются редко, предпочтительней использовать протокол UDP.

Почему же существуют два транспортных протокола TCP и UDP, а не один из них?

Дело в том, что они предоставляют разные услуги прикладным процессам.

Большинство прикладных программ пользуются только одним из них. Программист выбирает тот протокол, который наилучшим образом соответствует его потребностям.

Если нужна надежная доставка, то лучшим может быть TCP, если же нужна доставка датаграмм, то лучше может быть UDP. Если нужна эффективная доставка по длинному и ненадежному каналу передачи данных, то лучше может подойти протокол TCP, если же нужна эффективность на быстрых сетях с короткими соединениями, то лучшим может быть протокол UDP.

Среди известных распределенных приложений, использующих TCP, - такие как Telnet, FTP и SMTP. Протоколом UDP пользуется, в частности, протокол сетевого управления SNMP. Протоколы прикладного уровня ориентированы на конкретные прикладные задачи. Они определяют как процедуры по организации взаимодействия определенного типа между прикладными процессами, так и форму представления информации при таком взаимодействии.

Протокол TELNET позволяет обслуживающей машине рассматривать все удаленные терминалы как стандартные «сетевые виртуальные терминалы» строчного типа, работающие в коде ASCII, а также обеспечивает возможность согласования более сложных функций (например, локальный или удаленный эхо-контроль, страничный режим, высота и ширина экрана и т.д.) TELNET работает на базе протокола TCP. На прикладном уровне над TELNET находится либо программа поддержки реального терминала (на стороне пользователя), либо прикладной процесс в обсуживающей машине, к которому осуществляется доступ с терминала. Работа с TELNET походит на набор телефонного номера. Пользователь набирает на клавиатуре что-то вроде telnet delta и получает на экране приглашение на вход в машину delta. Протокол TELNET существует уже давно. Он хорошо опробован и широко распространен. Создано множество реализаций для самых разных операционных систем.

Протокол FTP (File Transfer Protocol) распространен также широко как TELNET. Он является одним из старейших протоколов семейства TCP/IP. Также как TELNET он пользуется транспортными услугами TCP. Существует множество реализаций для различных операционных систем, которые хорошо взаимодействуют между собой.

Пользователь FTP может вызывать несколько команд, которые позволяют ему посмотреть каталог удаленной машины, перейти из одного каталога в другой, а также скопировать один или несколько файлов.

Протокол SMTP (Simple Mail Transfer Protocol) поддерживает передачу сообщений (электронной почты) между произвольными узлами сети internet. Имея механизмы промежуточного хранения почты и механизмы повышения надежности доставки, протокол SMTP допускает использование различных транспортных служб. Он может работать даже в сетях, не использующих протоколы семейства TCP/IP. Протокол SMTP обеспечивает как группирование сообщений в адрес одного получателя, так и размножение нескольких копий сообщения для передачи в разные адреса.

Сетевая файловая система NFS (Network File System) впервые была разработана компанией Sun Microsystems Inc. NFS использует транспортные услуги UDP и позволяет монтировать в единое целое файловые системы нескольких машин с ОС UNIX. Бездисковые рабочие станции получают доступ к дискам файл-сервера так, как будто это их локальные диски. NFS значительно увеличивает нагрузку на сеть. Если в сети используются медленные линии связи, то от NFS мало толку. Однако, если пропускная способность сети позволяет NFS нормально работать, то пользователи получают большие преимущества. Поскольку сервер и клиент NFS реализуются в ядре ОС, все обычные несетевые программы получают возможность работать с удаленными файлами, расположенными на подмонтированных NFS-дисках, точно также как с локальными файлами.

Протокол SNMP (Simple Network Management Protocol) работает на базе UDP и предназначен для использования сетевыми управляющими станциями. Он позволяет управляющим станциям собирать информацию о положении дел в сети internet.

Протокол определяет формат данных, их обработка и интерпретация остаются на усмотрение управляющих станций или менеджера сети.

TCP и UDP идентифицируют приложения по 16-битным номерам портов. Серверы приложений обычно имеют заранее известные номера портов. Например, в каждой реализации TCP/IP, которая поддерживает сервер FTP, этот протокол передачи файлов получает для своего сервера номер TCP-порта 21. Каждый Telnet-сервер имеет TCP-порт 23, а сервер протокола TFTP (Trivial File Transfer Protocol) - UDP-порт 69. Службам, которые могут поддерживаться любой реализацией TCP/IP, назначаются номера портов в диапазоне от 1 до 1023. Назначение номеров портов находится в ведении организации Internet Assigned Numbers Authority (IANA).

Клиент приложения обычно «не интересуется» номером своего порта для транспортного уровня, который он использует. Ему лишь необходимо гарантировать, что этот номер уникален для данного хоста. Номера портов клиентов приложений принято называть краткосрочными (т.е. недолговечными), поскольку в общем случае клиенты существуют ровно столько времени, сколько работающий с ним пользователь нуждается в соответствующем сервере. (Серверы, напротив, находятся в рабочем состоянии все время, пока включен хост, на котором они работают.) В большинстве реализаций TCP/IP краткосрочным номерам портов выделен диапазон от 1024 до 5000.

Internet Protocol (IP) - основной протокол сетевого уровня, позволяющий реализовывать межсетевые соединения. Он используется обоими протоколами транспортного уровня. IP определяет базовую единицу передачи данных в internet, IP-дейтаграмму, указывая точный формат всей информации, проходящей по сети TCP/IP. Программное обеспечение IP выполняет функции маршрутизации, выбирая путь данных по паутине физических сетей. Для определения маршрута поддерживаются специальные таблицы; выбор осуществляется на основе адреса сети, к которой подключен компьютер-адресат. Протокол IP определяет маршрут отдельно для каждого пакета данных, не гарантируя надежной доставки в нужном порядке. Он задает непосредственное отображение данных на нижележащий физический уровень передачи и реализует тем самым высокоэффективную доставку пакетов.

Кроме IP, на сетевом уровне используются также протоколы ICMP и IGMP. ICMP (Internet Control Message Protocol) отвечает за обмен сообщениями об ошибках и другой важной информацией с сетевым уровнем на другом хосте или маршрутизаторе.

IGMP (Internet Group Management Protocol) используется для отправки IP-дейтаграмм множеству хостов в сети.

На самом нижнем уровне - сетевого интерфейса - используются специальные протоколы разрешения адресов ARP (Address Resolution Protocol) и RARP (Reverse Address Resolution Protocol). Эти протоколы применяются только в определенных типах физических сетей (Ethernet и Token Ring) для преобразования адресов сетевого уровня в адреса физической сети и обратно.

Адресация в сети.

Коммуникационная система считается универсальной, если она предоставляет возможность любому хосту взаимодействовать с любым другим хостом. Для того чтобы добиться такой универсальности, необходимо определить глобальный метод идентификации компьютеров в распределенной системе для доступа к ним. В TCP/IP выбрана схема идентификации, аналогичная адресации в физических сетях. Каждому сетевому интерфейсу присваивается уникальный 32-битный адрес (IP-адрес), который используется для всех коммуникаций с этим интерфейсом по internet. IP-адрес компьютера имеет определенную структуру. Она задает идентификатор сети, к которой подсоединен компьютер, и уникальный идентификатор самого компьютера. На рисунке 4 показаны различные классы internet-адресов.

Для 32-битных IP-адресов принята десятичная нотация, в которой каждый из четырех байтов адреса записывается десятичным числом. Адреса класса С, например, охватывают диапазон от 192.0.0.0 до 223.255.255.255. Структура адресов различных классов делает достаточно очевидным их применение. Адреса класса С, в которых 21 бит отводится для идентификатора сети и только 8 бит - для идентификатора хоста, присваиваются компьютерам локальных сетей небольших организаций, которые объединяют до 255 машин. Более крупные организации могут получить адреса класса В, которые способны обслужить до 256 сетей, в состав которых входит до 64 тыс. рабочих станций. И наконец, адреса класса А присваиваются компьютерам, подключенным к ограниченному числу глобальных сетей очень большого масштаба, например, в Arpanet.

Помимо адресов, предназначенных для одного хоста (unicast), существуют также широковещательные (broadcast) и групповые (multicast) адреса. Широковещательные адреса позволяют обращаться ко всем хостам сети. В них поле идентификатора хоста состоит только из единиц. Механизм IP-адресации предоставляет возможность широковещательной передачи, но не гарантирует ее, поскольку она зависит от характеристик конкретной физической сети. В Ethernet, например, широковещательная передача может выполняться с той же эффективностью, что и обычная передача данных, но есть сети, которые вообще не поддерживают такой тип передачи или имеют для этого ограниченные возможности.

Групповые адреса (адреса класса D) используются для отправки сообщений определенному множеству адресатов (multicasting). Такая возможность необходима для многих приложений, например для реализации интерактивных конференций, отправки почты или новостей группе получателей. Для поддержки групповой передачи хосты и маршрутизаторы используют протокол IGMP, который предоставляет всем системам в физической сети информацию о том, какие хосты принадлежат к какой группе в настоящее время.

Уникальный IP-адрес назначается каждому сетевому интерфейсу специальной организацией, Internet Network Information Center (InterNIC), которая отвечает за выделение адресов сетям, объединенным в мировую сеть Internet. Назначение идентификаторов хостов не входит в компетенцию InterNIC и находится в ведении системного администратора. До 1 апреля 1993 г. (дата создания InterNIC) регистрационное обслуживание для Internet (назначение IP-адресов и имен доменов DNS) выполнялось организацией Network Information Center (NIC). В настоящее время NIC выполняет запросы только для сети DDN (Defense Data Network). Всех остальных пользователей Internet обслуживает регистрационный сервис InterNIC.

В связи с бурным ростом Internet 32-битная схема адресации нынешней версии Internet Protocol, IPv4, уже не удовлетворяет потребности Мировой сети. Новая версия, IPv6, проект которой был обнародован в 1991 г., призвана решить эти проблемы. IPv6 обеспечит 128-битный формат IP-адреса и будет поддерживать автоматическое назначение адресов.

TCP/IP дает пользователям возможность работать не с адресами хост-компьютеров, а с их именами, что, конечно, намного удобнее для человеческого восприятия.

Распределенная база данных DNS (Domain Name System) обеспечивает отображение IP-адресов в имена хостов. Любое приложение может вызвать стандартную библиотечную функцию для преобразования IP-адреса в соответствующее имя хоста или наоборот. Эта база данных является распределенной, поскольку ни один объект в internet не обладает всей информацией об именах. Каждый объект (например, университетский факультет, компания или подразделение компании) поддерживает свою базу данных и имеет серверную программу, к которой могут обращаться другие системы (клиенты) в сети. DNS обеспечивает протокол, по которому взаимодействуют эти клиенты и серверы.

ЗАКЛЮЧЕНИЕ

В курсовой работе рассмотрены различные языки обращения к данным и управления ими в современных СУБД:

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

SQL (англ. Structured Query Language — «Структурированный язык запросов») — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL основывается на исчислении кортежей

Transact SQL, который является расширением языка SQL, которое используется в СУБД Microsoft SQL Server. В работе затрагивается тема работы с СУБД Microsoft SQL Server – одной из популярнейших на сегодняшний день локальных систем управления базами данных, которая Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных, в том числе с хранящимися во внешних по отношению к самому приложению СУБД.

Для тестирования нам необходимы только аргументы функций (результат работы не зависит от внешних переменных и т. п.).

Программа в функциональном стиле чудесным образом готова к параллельной работе: последовательные вызовы функций можно пускать в соседних потоках (так как на них не действуют внешние факторы) и им не нужны блокировки (то есть, проблемы синхронизации отсутствуют). Хороший стимул уделить время этой теме, учитывая повальное распространение многоядерных процессоров.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. C++,Turbo Pasckal,QBasik:Эволюция языков программирования http://langprog.far.ru/historylangprog.html. -27.05.10.
  2. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолоС, 2015.-272 с
  3. Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. — М.: Финансы и статистика, 2016. — 768 с.: ил.
  4. Малышев Р.А. Локальные вычислительные сети: Учебное пособие/ РГАТА. – Рыбинск, 2015. – 83 с.
  5. Островский В.А. Информатика: учеб. для вузов. М.: Высшая школа, 2016. —511 с.: ил.
  6. Семакин И.А., Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ.,2018. – 105с.
  7. Симонович С.В. Информатика. Базовый курс/Симонович С.В. и др. — СПб.: издательство «Питер», 2017. — 640 с.: ил.
  8. 1. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с.
  9. 2. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 153 с.
  10. 3. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с.
  11. Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. — М.: Центр ЮрИнфоР, 2011. — 276 с. — ISBN 5-89158-079-9
  12. Гаврилова Т. А., Хорошевский В. Ф. Базы знаний интеллектуальных систем. Учебник. — СПб.: Питер, 2018.
  13. Джозеф Джарратано, Гари Райли «Экспертные системы: принципы разработки и программирование» : Пер. с англ. — М. : Издательский дом «Вильямс», 2006. — 1152 стр. с ил.