Содержание: Введение. На сегодняшний день, практически все сферы человеческой деятельности автоматизированы, по средствам использования персонального компьютера совместно с возможностями программного обеспечения и языков программирования. Таким образом, современные разработчики новейшего программного обеспечения и других компьютерных возможностей продолжают совершенствовать и разрабатывать новейшие программное обеспечение позволяющие все более эффективнее реализовывать какую-либо сферу человеческой деятельности за счет создание и совершенствования новых программных кодов на различных языках программирования. Актуальность данной курсовой работы заключается в том, что знание и освоение современных языков программирования, и эффективное их использование позволяет реализовывать новейшие программные возможности с использованием персонального компьютера практически во всех сферах деятельности. Целью данной работы является теоретическое изучение основ и возможностей современных языков программирования. Для достижения поставленной цели необходимо решить ряд задач: 1. Изучить теоретическое описание наиболее популярных языков программирования; 2. Рассмотреть исторические предпосылки как самого процесса программирования, так и появления языков программирования; 3. Изучить возможности современных языков программирования на примере языка структурированных запросов SQL. Объектом данной работы являются современные языки программирования. Предмет работы возможности использования современных языков программирования. В рамках данной курсовой работы будет использован научно-исследовательский метод. В процессе написания теоретической и практической части курсовой работы будут использованы труды отечественных авторов. 1. Теоретические аспекты и техническое предназначение языков программирования. 1.1. Теоретическое понятие и историческое развитие языков программирования. Как известно, сами языки программирования не могут быть реализованы без применения персонального компьютера, таким образом, история развития языков программирования начинается с истории разработки ЭВМ. Таким образом, первой ступенью в разработке программ и языков программирования являются 20-е годы 19 века. Именно на данном этапе Ч. Бэббидж, который на тот момент времени был английским исследователем, разработал и утвердил идею о возможности предварительной записи всех действий, произведенных на вычислительной машине [18, c. 490]. Необходимо также отметить факт того, что также в тот момент времени были также созданы электронно-вычислительные машины. Соответственно, на данных машинах были разработаны первые программы, автоматизирующие деятельность по средствам данных машин, которые, в свою очередь представляли собой запись на машинных кодах. Практически также, как и в настоящее время, программист того времени для того, чтобы написать действующую и работающую программу, должен был детально и довольно четко изучить все принципы работы и строения ЭВМ. Однако, данный факт именно на том промежутке времени достаточно серьезно затруднял работу на компьютере, или, другими словами, общение человека с ЭВМ, что было основанием для программистов реализовывать кодирование программ. Результатом данных заключений и данного периода была утвержденная мысль, о том, что человеку достаточно сложно реализовывать «общение» с компьютером на языке машинных команд, следовательно, среди разработчиков появилось убеждение о необходимости разработки языков программирования [8, c. 134]. К 50-м годам был разработан первый язык программирования, который имел название «Фортан», что в переводе с иностранного языка означало «переводчик формул». Как понятно, основное предназначение данного языка было в проведении математических, и в некоторых случаях естественнонаучных расчетов. Стоит отметить факт того, что данный язык программирования и на сегодняшний день используется довольно часто среди современных программистов, деятельность которых связана с проведением научных исследований [10, c. 192]. Следующим одним из первых разработанных языков программирования был Алгол (ALGOL от ALGOrithmic Language — алгоритмический язык), который был введен в практику в 1957 году. Как понятно с представленного перевода, данный язык был предназначен как средство обучения основам программирования. В 1960 году был разработан Лисп, язык, предназначенный для обработки символьной информации. Как показывает история, по результатам эффективного использования было создано программное обеспечение, которое достаточно проще воспринималась человеком при работе с компьютером [ 4, c. 432]. В последующем, процесс создания и разработки языков программирования стал еще быстрее, что позволило достаточно скоро усовершенствовать в целом работу компьютера, или, другими словами, «общение» человека с компьютером. К более значимым разработкам того времени относятся: Язык программирования Бейсик (Beginners All-Purpose Symbolic Instruction Code, или, сокращенно, BASIC), был разработан в середине 60-х годов, и на тот момент использовался среди начинающих программистов как обучающий [3, c. 208]; PL/I (Programming Language One). Данный язык программирования был введен в практику в 1967 году. По мнению современных программистов, данный язык является наиболее мощным среди других современных языков программирования таких как СИ и Паскаль, на основании чего данный язык пользуется в современном мире популярностью среди опытных программистов и начинающих [5, c. 160]; Начало 70-х годов характеризуется появлением языка программирования Форт (FORTH — четвертый). Этот язык стал применяться в задачах управления различными системами после того, как его автор Чарльз Мур написал на нем программу, предназначенную для управления радиотелескопом Аризонской обсерватории; Следующим по счету был введен в программирование язык Паскаль, который до недавнего времени в современном обществе был достаточно часто используемым; На основании представленного языка Паскаль, был разработан Ада. Наименование данного языка программирования было реализовано в честь его разработчика Ады Лавлейс [21, c. 304]; На сегодняшний момент среди программистов вне зависимости от опыта их работы используется язык программирования С (СИ), который берет свое начало в 1972 году. Стоит отметить, что данный язык является одним из немногих, который не был запланирован для массового и долгого использования. Более того, данный язык был разработан с целью замены другого языка ассемблера, с целью разработки более эффективного программного обеспечения [12, c. 184]; Также в 80-х годах был разработан язык, который используется и на сегодняшний день, а именно С++ (СИ ++), который можно охарактеризовать как объектно-ориентированное расширение ранее представленного языка С [16, c. 216]; Язык программирования Java по сравнению с ранее представленными примерами является достаточно новым языком, так как был разработан и предложен к использованию в 1990-м году. Основной задачей перед разработчиками данного языка было совершенствование приложений, которые были разработаны с помощью С++, что позволяло исключить низкоуровневые возможности. Необходимо отметить достаточно важный факт того, что особенность данного языка программирования заключается в том, что он имеет возможность в компиляции данных не в машинный код, а в платформно-независимый байт-код (каждая команда занимает один байт). С# (Си Шарп). Данный язык является гибридом таких языков программирования как СИ и С++. Особенностью данного языка является то, что в нем реализованы исключительно все положительный моменты использования перечисленных языков и абсолютное устранение недостатков, которые вызывали трудности у пользователей при их использовании. Данный язык программирования, сегодня является практически самым популярным среди программистов [1, c. 192]. Необходимо не отметить факт того, что в последнее десятилетие заметно изменилось представления среди программистов самого понятия «метода» программирования. Другими словами, до конца прошлого столетия, среди программистов существовало представление о том, что на практике возможно реализовывать только один метод программирования — это написания программного кода. Однако, в последнее время, зарубежными разработчиками было определено, что для того, чтобы программировать не обязательно создавать прикладные пакеты и писать программный код. Результатом данного убеждения было внедрение объектно-ориентированного метода программирования, структурного метода и т.д. 1.2. Характеристика методов современного программирования. Метод, в том числе и в программировании представляет собой совокупность процедур. Как было указанно выше, в последнее десятилетие значительно изменилось понимание процессов и методов программирования, путем внедрения таких методов как объектно-ориентированный подход. На сегодняшний день, данный метод имеет значительно высокую популярность среди пользователей, особенно не имеющих большого опыта в написании программного кода. Как показывает практика, для реализации данного метода программирования используются достаточно большое количество программных продуктов, а именно Rational Rose, Rational Software, RUP, Demral , OОram и др. Однако и другие методы программирования, подразумевающие обратные процедуры, в том числе написания программного кода являются достаточно часто применяемыми, а именно структурный, модульный и другие методы. Таким образом, к основным методам современного программирования относятся: 1. Модульный, сборочный. Сначала необходимо пояснить причину двух названия при определении понятия одного метода программирования. Данный факт связан с тем, что модульный метод программирования прошел достаточно длинный путь своего становления и развития. Таким образом, данный метод, как и в настоящее время, реализуется на основании использования модулей, однако, первоначально, данное использование не позволяла программистам с помощью данного метода реализовывать большое количество функций, так как изначально данный метод мог функционировать в рамках библиотек стандартных подпрограмм общего назначения. В последующее время, после этапа совершенствования данного метода, программисты смогли реализовывать задачи касающиеся программирования современных библиотек, методов и вычисления матриц, однако по средствам использования различных модулей. В связи с появлением необходимости в объединении данных модулей, появилась необходимость в разработке сборочного метода программирования позволяющего реализовывать все недостающие функции объединения. Были созданы языки описания интерфейсов API (Application Program Interface), IDL (Interface Definition Language) и др. [2, c. 448]; 2. Структурный. Данный метод является одним из примеров тех методов, которые практически не требуют от программиста навыков написания программного кода. Более того, на сегодняшний день для реализации данного метода программирования, существует программное обеспечение, позволяющее пользователю в случае необходимости генерировать программный код на основе его разработок. Как указывают многие авторы программисты, данный метод в большей степени можно охарактеризовать ни как метод программирования, а как метод проектирования определенных задач, которые ставит перед собой программист при написании какого-либо программного кода или других целей. Таким образом, основой данного подхода является декомпозиция какого-либо процесса. На сегодняшний день, самым популярным программным обеспечением при реализации данного метода программирования является ряд CASE-средств (SilverRun, Oracle Disigner, Erwin для прямой и обратной связи с Rational Rose и др.) [9, c. 832]; 3. Следующим достаточно популярным методом программирования является объектно-ориентированный метод. Суть данного метода заключается в представлении объектов определённой задачи или ситуации, проектируемой программистом. Для более точного понимания данного метода программирования необходимо представить такое понятие как объект, под которым понимается определенное «нечто», что может быть определенным действием или участников (как живым, так и неживым предметом), в определенном процессе. Таким образом, объектно-ориентированное программирование подразумевает представление объектов в определенной последовательности, подробно отображающее какую-либо предметную область. Объекты могут быть объединены в классы. Также необходимо отметить, что каждый объект имеет атрибуты и операции, которые более подробно характеризуют его в классе. Можно сказать, что объектно-ориентированное программирование представляет собой определенный способ проектирования классов объектов, а также взаимосвязь между данными классами [19, c. 291]. 1. Наиболее существенным нововведением идеологии Microsoft .NET является компонентно-ориентированный подход к программированию. Во-первых, следует отметить то обстоятельство, что компонентно-ориентированный подход к проектированию и реализации программных систем и комплексов является в некотором смысле развитием объектно-ориентированного и практически более пригоден для разработки крупных и распределенных систем (например, корпоративных приложений). Компонентноориентированный подход может применяться во многих языках программирования с помощью стандартных конструкций (таких как: классы, интерфейсы, пакеты, модули). Существуют языки программирования, реализующие на конструктивном уровне компонентно-ориентированное программирование: В рамках языка «Java» — компонентно-ориентированное программирование реализуется посредством компонентов, называемых «JavaBeans», поддержанных в одной из ранних спецификаций языка; В платформе «.NET» — реализован компонентно-ориентированный подход, обеспечивающий создание и повторное использование компонентов для любого языка программирования, поддерживаемого платформой [20, c. 400]. По данной главе первоначально можно сделать вывод о достаточно важной значимости и необходимости в существовании и использовании языков программирования при реализации работы на современном компьютере, так как именно они являются основой разработки всех программных обеспечений которые сегодня используются среди всех компьютерных пользователей, в том числе не имеющих большого опыта. Также языки программирования являются основой при автоматизации всех существующих на сегодняшний день процессов человеческой деятельности с использованием современного компьютера. Таким образом, в данной главе было выявлено, что основой в создании и разработки языков программирования послужила необходимость в более эффективном понимании и представлении команд пользователя которые было необходимо передать компьютеру для получения определенных результатов. «Пик» разработки языков программирования приходился с начала 20-х годов прошлого столетий. После создания возможности более удобного «общения» между человеком и компьютером, возникла необходимость в разработке методов их использования, которые совершенствуются и разрабатываются и на момент сегодняшнего дня. 2. Анализ методов современного программирования на примере языка структурированных запросов SQL. 2.1. Структура языка структурированных запросов SQL. Сегодня, данный язык структурированных запросов имеет название SQL (Structured Query Language). Данное изменение обусловлено тем фактом, что данный язык, до настоящего времени пережил большое количество изменений и доработок, однако, он является стандартным языком реляционной СУБД (языком запросов). Язык структурированных запросов SQL на протяжении многих лет совершенствовался, так стоит отметить важный период в разработке данного языка, а именно, период окончания разработки проекта компании IBM под названием System/R (1979 год). Принято считать, что, начиная сданного периода, и до настоящего времени язык структурированных запросов SQL все также совершенствуется и набирает все более ценное положение в индустрии работы с базами данных. Работа над официальным стандартом языка SQL началась в 1982 году в рамках комитета ANSI. В 1986 году был утвержден первый вариант стандарта ANSI, а в 1987 году этот стандарт был утвержден и ISO. В 1989 году стандарт претерпел незначительные изменения, но именно этот вариант получил название SQL-1 или SQL-89. Язык структурированных запросов SQL является информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных [7, c. 120]. Как уже отмечалось выше, язык SQL разработан и направлен на те действия пользователя, которые необходимо совершать с данными у в какой-либо базе данных. На рисунке 1 представлен стандартный набор операций, которые может воспроизвести пользователь с базой данных с помощью структурированного языка запросов SQL. Рисунок 1 - Набор операций с помощью SQL Cоздатель языка SQL, E.Ф. Кодд, создавал данный язык на основе реляционной алгебры, которая, как известно, ориентирована на работу не с какими - либо отдельными записями, а с отношениями, другими словами множествами. Так, можно сделать следующий вывод о том, что операндами структурированного языка запросов SQL, соответственно также, как и в реляционной алгебре, являются отношения (таблицы), следовательно, выполняя некоторые операции. Их результатом так же являются отношения (таблицы). Так, по вышесказанному можно сделать вывод о том, что структурированный язык запросов SQL предназначен для работы над таблицами баз данных в целом, а именно над такими для выполнения таких действий с ними как создание, дополнение, изменение, удаление и т.д., однако, данный язык предназначен и для работы над данными находящемуся в таблицах, к действиям работы с данными относятся такие действия как создание, редактирование, выборка, добавление, удаление [14, c. 62]. Стоит отметить, что язык SQL, не считается языком программирования, точнее данный язык относится к виду непроцедурного языка программирования, так, данный язык считается языком запросов к базе данных, который направлен исключительно на работу с таблицами в базе данных, и над данными, находящимися в таблицах базы данных. Данный факт связан с тем, что в языке SQL отсутствуют операторы условного перехода, организации циклов, позволяющие управлять ходом выполнения программы. Как уже отмечалось выше, SQL является языком структурированных запросов. Под запросом, а именно SQL запрос — это некоторая команда, формируемая пользователем базы данных, которая в свою очередь предназначенная для выполнения, в используемой системе управления базами данных, определенных действий над данными и базой данных в целом. Запросы, реализующие пользователем, как средствами визуального моделирования запросов, так и средствами программирования на языке SQL, различают по мере изменений, которые требуется произвести в базе данных. Классификация данных запросов представлена на рисунке 2. Рисунок 2 - Классификация запросов Как уже отмечалось выше, все данные, находящиеся в реляционной базе данных, которая в свою очередь является используемой в реализации запросов на языке SQL, хранятся в таблицах. Поэтому, можно сказать, что все запросы, построенные на языке SQL направлены на произведение операций над таблицами в базе данных. Представим классификацию запросов данного типа: Запросы, реализуемые с целью работы над таблицами в целом, к данным операциям относятся такие как создание или какое-либо изменение таблиц; Запросы, реализуемые с целью работы над данными, находящимися в таблицах, к данным операциям относятся набор записей, редактирование, создание и т.д [15, c. 420]. Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием следующих атрибутов: Типа хранимых в каждом поле значений (таблица 1) [17, c. 384]; Связей между таблицами (задание первичных и вторичных ключей); Информации, необходимой для построения индексов. Таблица 1 – Типы хранимых в поле значений Все запросы, построенные на языке SQL, формируются с помощью операторов языка структурированных запросов SQL. Так, данные операторы, состоят из различных логических частей, которые так же, другими словами, называются предложениями. В структуре языка структурированных запросов SQL существует несколько основных операторов, к ним относятся: Операторы определения данных DDL (Data Definition Language); Операторы манипулирования данными DML (Data Manipulation Language); Операторы управления транзакциями TCL (Tool Command Language) [6, c. 100]. Операторы определения объектов базы данных DDL предназначены для работы над структурой базы данных и имеющихся в ней таблиц, а именно для создания, редактирования, добавления, удаления и других операций. Также, данные операторы предназначены для выполнения операций с доменами баз данных и представлениями. Операторы манипулирования данными DML предназначены для работы с данными, находящимися в базе данных, а также в таблица находящихся в базе данных. Операторы управления транзакциями позволяют создавать и удалять ограничения, предоставлять и отменять привилегии пользователю [11, c. 123]. Следовательно, можно сделать вывод, что предложение, сформулированное на языке SQL является обращение пользователя в базе данных с целью совершение каких либо действий над базой данных в целом или над данными находящимися в ней, которое так же приводит к изменению структуры базы данных. Запросы, реализованные пользователем, можно разделить на несколько типов: Запросы первого типа. К данным запросам можно отнести команды пользователя, направленные на создание, в имеющейся базе данных, новых таблиц, а также, команды, направленные на изменение структуры уже существующих таблиц в базе данных; Запросы второго типа, относятся к командам пользователя, направленные на работу со строками, находящимися в таблицах, к данным запросам относятся такие операции как: вставка новой строки; изменение значений полей строки или набора строк; удаление строки или набора строк. Запрос третьего типа. Данный запрос является самым необходимым запросом в использовании пользователем базы данных. Данный запрос возвращает пользователю набор полученным им строк. С данным набором строк, пользователь так же может воспроизвести одну из нескольких операций, таких как: просмотреть полученный набор; изменить все записи набора; удалить все записи набора [14, c. 62]. Таким образом, можно сделать вывод о том, что язык SQL направлен на работу пользователя в формирование выбора некоторых таблиц и строк и совершений действий над ними. На основании вышеизложенного можно привести пример предложения из операторов на выборку данных из какой-либо таблице на языке структурированных запросов SQL. Например, существует таблица в базе данных содержащая информацию о книгах, названия книг и ценах на эти книги. Пользователю требуется произвести выборку среди данных, то есть вывести на экран список книг цена которых будет составлять меньше 10, и больше 20. Для достижение желаемого результата пользователю следует реализовать следующий запрос на языке структурированных запросов SQL: SELECTНазвание, Цена FROM Книги WHERE Цена NOT BETWEEN10 AND 20 Данная команда возвращает все записи, у которых значение Цена либо меньше 10, либо больше 20. Для проверки, является ли значение колонки null- значением, используется выражение IS NULL. Как известно, язык структурированных запросов SQL является наиболее сложным языком построения запросов к базе данных, который так же вызывает затруднение при его изучении у пользователя. Так, для упрощения его использования пользователям, в соответствии с последними стандартами на данный язык запросов, а именно SQL:2003, SQL:1999, и даже SQL/92, данный язык разбит на уровни, а точнее слои, для упрощения его понимания и использования. В данных стандартах на язык структурированных запросов SQL указанны следующие уровни классификации данного языка: Базовый уровень (entry); Промежуточный уровень (intermediate); Полный уровень (full) [6, c. 100]. Как известно, выше представленная классификация является не единственной, существует еще некоторое количество подобных классификаций. К примеру, в соответствии с другой классификацией, существует несколько уровней взаимодействия конечного пользователя с системой управления базами данных, к ним относятся: Прямое взаимодействие конечного пользователя с системой управления базой данных (direct). Если сравнивать данный уровень с выше представленной классификацией, то его можно сравнить с базовым уровнем, так как, данный уровень отражает ориентированность языка на работу с множествами. Следующий уровень получил название уровня встраиваемого SQL (embedded). Данное название обусловлено тем фактом, что на данном уровне существует возможность использования языка структурированных запросов в традиционном программировании. Последний уровень данной классификации является динамическим SQL (dynamic). Данное название обусловлено тем, что L во встраиваемый SQL добавляются конструкции, позволяющие приложениям обращаться к СУБД с конструкциями прямого SQL, которые динамически образуются во время выполнения программы [7, c. 120]. На рисунке 3 данная классификация представлена графически. Рисунок 3 – Классификация взаимодействия Методы современного программирования на примере языка структурированных запросов SQL. Основная работа с базой данных проводится с использованием прикладных программ, из которых и идут запросы к базам данных. В этом случае интерактивный режим работы не может быть использован, текст SQL- запроса должен быть либо включен в прикладную программу (в том случае, если запрос полностью определен заранее), либо формироваться в процессе работы прикладной программы [18, c. 490]. Программный SQL предназначен для того, чтобы встраивать SQL-запросы в прикладную программу, написанную на одном из языков программирования. Однако, для достижения поставленной цели возникают некоторые препятствия, такие как: Компилятор с алгоритмического языка должен иметь возможность выделения в тексте прикладной программы последовательность операторов SQL; Компилятор должен объединять возможности языка программирования высокого уровня (переменные, ветвления, циклы) и возможности SQL (запросы на языке, близком к естественному) [20, c. 400]. Решение этих проблем частично описано в стандарте SQL, упомянутых ранее. Рассмотрим алгоритм выполнения SQL-запросов в интерактивном режиме работы. Например, пользователь вынужден ожидать результатов выполнения запроса в течение всего времени работы реализации SQL-запроса. Если через некоторое время пользователю снова нужно будет выполнить тот же самый запрос, СУБД вновь проделает те же самые действия, что и при предыдущем обращении. Однако, в процессе данной реализации может возникнуть некоторое несовершенство механизма: Одни и те же этапы выполняются каждый раз заново для одинаковых запросов; СУБД не может обрабатывать интерактивные запросы с опережением [14, c. 62]. Решение подобных проблем очевидно – часть действий по обработке запроса необходимо выполнять один раз, сохранять результат в некотором виде, а потом использовать столько раз, сколько необходимо. Эта идея является одной из основных идей программного SQL. Таким образом, программный SQL позволяет: Использовать операторы интерактивного SQL в тексте программы на языке программирования высокого уровня; Наряду с операторами интерактивного SQL использовать новые специальные конструкции, дополняющие SQL и увеличивающие его возможности; Для передачи параметров в запрос использовать в тексте запроса переменные, объявленные в программе; Для возврата в программу результатов запроса использовать специальные конструкции, отсутствующие в интерактивном SQL; Осуществлять компиляцию запросов совместно с программой, обеспечивая впоследствии согласованную работу программы и СУБД. Заранее (на этапе компиляции) выполнять действия по анализу и оптимизации запросов, экономя время, затрачиваемое на этапе выполнения программы. На настоящий момент используются три варианта встраивания запросов на языке SQL в прикладную программу (программного SQL): 1. статический SQL; 2. Динамический SQL; 3. Метод, основанный на различных интерфейсах программирования приложений ( API ) [6, c. 100]. Статический SQL – разновидность программного SQL, предназначенная для встраивания SQL-операторов в текст программы на языке программирования высокого уровня. Основная особенность статического SQL определяется его названием: встраиваемые запросы должны быть четко определены на стадии написания прикладной программы, так как именно конкретный текст запросов вставляется в прикладную программу. Рассмотрим два основных этапа, связанных с работой статического SQL, – компиляция программы и работа (выполнение) программы [1, c. 4]. На рисунке 5 представлена схема компиляции и сборки программы. Рисунок 4 - Схема компиляции и сборки программы Также, стоит отметить, некоторые особенности данной схемы: Программа, включающая операторы языка программирования высокого уровня (ЯПВУ) вместе с операторами SQL, подается на вход специального препроцессора, который выделяет из нее части, связанные с SQL; Вместо инструкций встроенного SQL препроцессор подставляет вызовы специальных функций СУБД. Библиотеки таких функций для связи с языками программирования существуют для всех распространенных серверных СУБД. Стоит особо отметить, что эти библиотеки имеют закрытый интерфейс, то есть разработчики библиотеки могут менять его по своему усмотрению, соответственно обновив препроцессор. Все это говорит о том, что программист не должен вмешиваться в этот процесс; Сами инструкции SQL препроцессор выделяет в отдельный файл; Программа поступает на вход обычного компилятора языка программирования, после чего получаются объектные модули. Далее эти объектные модули вместе с библиотеками СУБД собираются в один исполняемый модуль – приложение; Наряду с этими операциями происходит работа с файлом, содержащим SQLинструкции. В литературе этот модуль часто носит название «модуль запросов к базе данных» (Database Request Module, DBRM). Обработку этого модуля осуществляет специальная утилита, которая обычно носит название BIND. Для каждой инструкции SQL утилита выполняет следующие действия: осуществляет синтаксический анализ запроса (проверяет, является ли запрос корректным); проверяет, существуют ли в базе данных те объекты, на которые ссылается запрос; выбирает, каким образом осуществлять выполнение запроса – план выполнения запроса; Все планы выполнения запросов сохраняются в СУБД для последующего использования [2, c. 448]. Программа запускается на выполнение обычным образом. При необходимости выполнить запрос программой осуществляется вызов специальной функции СУБД, которая отыскивает уже сформированный ранее план выполнения запроса. СУБД выполняет запрос в соответствии с выбранным планом. Результат выполнения запроса поступает в приложение [12, c. 156]. Схема выполнения программы, представленная на рисунке 6. Рисунок 5 - Схема выполнения программы Использование описанной выше схемы позволяет пользователю воспроизводить в своей деятельности следующие действия: Использовать SQL совместно с программой на языке программирования высокого уровня; Заранее осуществлять проверку синтаксиса запросов и оптимизацию их выполнения (выбор плана). Понятно, что проверка синтаксиса выполняется быстро, но выбор плана выполнения – весьма трудоемкая процедура. Тот факт, что она выполняется один раз на этапе компиляции, позволяет говорить о существенном уменьшении накладных расходов [1, c. 192]. Однако статическая разновидность программного SQL имеет некоторые существенные ограничения. Так, переменные в запросах могут использоваться только в тех местах, где в запросах обычно стоят константы. Например, нельзя задавать имя таблицы, из которой производится выборка, а также названия столбцов, как параметр. В связи с этим при использовании статического варианта вложенного (программного) SQL необходимо на этапе написания программы точно знать состав запросов, которые необходимо будет выполнять в прикладной программе. Во многих случаях это ограничение является существенным. Для его устранения была введена новая разновидность программного SQL – динамический SQL. Динамический SQL – разновидность программного SQL, предназначенная для встраивания SQL-операторов в текст программы на языке программирования высокого уровня, допускающая динамическое формирование и выполнение запросов во время работы программы. Учитывая относительно низкую производительность динамического SQL, представляется правильным, там, где только возможно, рекомендовать использование статической разновидности SQL, применяя аппарат динамического SQL где это действительно необходимо [3, c. 208]. Динамический SQL также должен содержать дополнительные операторы (по сравнению с интерактивным SQL). Схема функционирования динамического SQL представлена на рисунке 7. Рисунок 6 - Схема функционирования динамического SQL Схема выполнения инструкции подразумевает: динамическое формирование команды SQL в строковом виде во время работы программы; передачу строкового вида инструкции в СУБД при помощи команды EXECUTE IMMEDIATE; выполнение инструкции системой управления БД, включающее синтаксический анализ, проверку параметров, оптимизацию (выбор плана) и выполнение этого плана [8, c. 123]. Основные проблемы одноэтапной схемы заключаются в том, что она не позволяет выполнять инструкции SELECT и приводит к нерациональному расходованию вычислительных ресурсов (так как при повторном выполнении той же инструкции вновь будет затрачено время на все те же действия по ее интерпретации и выполнению). Двухэтапное выполнение инструкций основано на следующем соображении: команда динамического SQL в таком виде, как она поступает на выполнение, будет выполняться неоднократно. При этом могут меняться какие-то конкретные детали. А это значит, что инструкцию можно параметризовать. Использование параметризованных инструкций позволяет сделать схему выполнения двухэтапной, разделив процесс на «подготовку инструкции» и «выполнение инструкции» [6, c. 140]. Рассматривая теоретические примеры интеграции языка SQL в программный код на каком либо программном продукте или языке, то можно отметить тот факт, что у разработчика использующего данный набор операций, существует возможность использования SQL запросов внутри используемого им программного продукта и его языка, с целью обращения к базе данных. Стоит отметить, что для достижения данной цели, совершенно не обязательно наличие расширения, в используемом программном продукте, языка SQL, который бы в свою очередь, обеспечивал официальную поддержку данного языка в рамках используемого программного продукта разработчиком. Данный факт обусловлен тем, что в основе своей, запросы сформированные на языке SQL представляют собой обычные строки в программировании, а точнее наборы таких строк, с которыми может быть совмещен любой язык программирования [8, c. 123]. Однако, стоит отметить, что данное действие так может быть и недоступным, в связи с тем фактом, что среда разработки используемого программного продукта пользователем, может не поддерживать облегченные средства обращения к базе данных (через подключение к определенной СУБД), реализация отправки SQLзапросов может представиться сложным, если вообще выполнимым заданием [3, c. 80]. С целью облегчение задачи для разработчиков и специалистов, работающих в данной области, было создано дополнительное расширение в различных системах управления базами данных, а также и языков программирования, которые в них используются. К примеру, рассматривая созданные расширение на примере языков программирования, то данные расширения проявляются в наличии библиотек, которые так же содержат в себе классы и методы программирования. Так, с помощью данных библиотек, пользователь, введя единственную стандартную функцию имеет возможность в подключении к системе управлением базой данных [19, c. 169]. Так, можно отметить, что язык структурированных запросов SQL, является универсальным языком, а точнее средством обращения к внешней базе данных. Также, по своей структуре, данный язык позволяет пользователю значительно экономить временные ресурсы для достижения определенных целей в работе с базой данных, при этом выполняя все операции в теле другого программного продукта. Так, к примеру, пользователю требуется реализовать определенные операции над данными, путем подключения к базе данных, на языке С++. Для достижения данной цели, пользователю нет необходимости тратить большое количество времени на программирование, а достаточно лишь добавить несколько стандартных функций в тело программы [8, c. 123]. Также большим преимуществом является возможность интегрировать SQL сразу в несколько компонентов одной системы, написанной с использованием разных языков программирования - например, WEB-компонент системы, написанный на Javascript, и внутренняя, инкапсулированная от пользователей часть на C++, могут использовать SQL в равной степени, создавать запросы, подключаться в БД по мере необходимости и так далее. Эта возможность еще сильнее повышает универсальность системы [4, c. 432]. По данной главе можно сделать вывод о том, что язык структурированных запросов SQL не является отдельным языком программирования, скорее данный язык является одним из методов современного программирования, при необходимости обращения к базе данных, что обосновывает актуальность выбранного примера при описании методов современного программирования. Заключение. В заключении необходимо отметить, что эффективное использование языков программирования, а именно их методы, являются основой удобства и автоматизации современной жизни человечества. В рамках данной курсовой работы было выявлено, что данная необходимость у людей возникла практически с начала прошлого столетия, также необходимо отметить, что большинство разработанных языков программирования и методов их использование практикуются и современными программистами, и разработчиками. Целью настоящей работы был анализ методов современного программирования. Для достижения поставленной цели, в первой главе курсовой работы были представлены исторические предпосылки и теоретические основы методов программирования. Первоначально, в данной главе автором была представлена теоретическая характеристика основы данной темы, а именно языка программирования. Из исторических источников было выявлено, что основной целью в разработке языков программирования было совершенствование и более эффективное взаимодействия человека и ЭВМ. Сегодня, основной целью использования современных языков программирования является усовершенствование и автоматизация (за счет разработки программного обеспечения) всех сфер деятельности человека. Далее, в данной главе была отмечена необходимость эффективного использование разработанных языков программирования, а именно необходимость в разработке эффективных методов их использования. Таким образом, далее в данной главе был представлен перечень и краткая характеристика современных методов языков программирования. Во второй главе курсовой работы представлен метод современного программирования с использованием языка структурированных запросов SQL. При обосновании данного выбора примера, необходимо отметить, что на сегодняшний день, язык структурированных запросов используется при разработке достаточно большого количества программного обеспечения, а также при их использовании, что подтверждает его популярность среди современных программистов. Также в данной главе были отмечены преимущества и недостатки в использовании данного языка программирования и методов его использования. В заключении главы был представлен перечень возможностей данного метода современного программирования. Список использованной литературы. 1. Абрамов, С.А. Математические построения и программирование / С.А. Абрамов. - М.: Наука, 2016. - 192 c 2. Баженова, И.Ю. Языки программирования: Учебник / И.Ю. Баженова. - М.: Академия, 2018. - 448 c. 3. Головин, И.Г. Языки и методы программирования: Учебник / И.Г. Головин. - М.: Академия, 2014. - 208 c. 4. Голицына, О.Л. Основы алгоритмизации и программирования: Учебное пособие / О.Л. Голицына, И.И. Попов. - М.: Форум; Издание 2-е, 2015. - 432 c. 5. Гребенников, Л.К. Программирование микропроцессорных систем на языке ПЛ/М / Л.К. Гребенников, Л.А. Летник. - М.: Финансы и статистика, 2014. - 160 c. 6. Дейт, К. Дж. SQL и реляционная теория. Как грамотно писать код на SQL / К.Дж. Дейт. - М.: Символ-плюс, 2016. - 100 c. 7. Дунаев, В.В. Базы данных. Язык SQL для студента / В.В. Дунаев. - М.: БХВПетербург, 2015. - 120 c. 8. Довек, Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. - М.: ДМК, 2016. - 134 c. 9. Кнут, Д.Э. Искусство программирования. В 3-х т. Т. 2. Получисленные алгоритмы (методы) / Д.Э. Кнут. - М.: Вильямс, 2013. - 832 c. 10. Карпов, В.Я. Алгоритмический язык Фортран / В.Я. Карпов. - М.: Наука, 2014. 192 c. 11. Кригель, А. SQL. Библия пользователя / А. Кригель. - М.: Диалектика / Вильямс, 2016. - 175 c. 12. Кундиус, В.А. Теоретические основы разработки и реализации языков программирования / В.А. Кундиус. - М.: КноРус, 2013. - 184 c 13. Макаровских, Т.А. Языки и методы программирования: Создание простых GUIприложений с помощью Visual С++ / Т.А. Макаровских, А.В. Панюков. - М.: Ленанд, 2018. - 144 c. 14. Мартишин, С.А. Проектирование и реализация баз данных в СУБД MySQL с использованием MySQL Workbench: Методы и средства проектирования информационных систем и технолог / С.А. Мартишин, В.Л. Симонов, М.В. Храпченко. - М.: Форум, 2017. - 62 c. 15. Мюллер, Р.Д. Проектирование баз данных и UML / Р.Д. Мюллер; Пер. с англ. Е.Н. Молодцова. - М.: Лори, 2013. - 420 c. 16. Макаровских, Т.А. Языки и методы программирования: Путеводитель по языку С++ / Т.А. Макаровских, А.В. Панюков. - М.: Ленанд, 2018. - 216 c 17. Маркин, А. В. Построение запросов и программирование на SQL. Учебное пособие / А.В. Маркин. - М.: Диалог-Мифи, 2014. - 384 c. 18. Скотт, Т. Основы программирования. Курс программированного обучения / Т. Скотт. - М.: Советское радио, 2016. - 490 c. 19. Стружкин, Н.П. Базы данных: проектирование. практикум: Учебное пособие для академического бакалавриата / Н.П. Стружкин, В.В. Годин. - Люберцы: Юрайт, 2016. - 291 c. 20. Стивенс, У. UNIX: разработка сетевых приложений / У. Стивенс. - М.: СПб: Питер, 2015. - 400 c. 21. Фаронов, В.В. Основы Турбо-Паскаля / В.В. Фаронов. - М.: МВТУ-Фесто дидактик, 2015. - 304 c.