Файл: Классификация языков программирования высокого уровня.pdf
Добавлен: 30.03.2023
Просмотров: 458
Скачиваний: 2
СОДЕРЖАНИЕ
1.1 История развития языков программирования
2. Обзор современных языков программирования
3. Классификация языков программирования
3.2. Языки программирования низкого уровня
3.3. Языки программирования высокого уровня
3.4. Объектно-ориентированные языки
3.5. Декларативные языки программирования
3.6 Логическое программирование
3.7. Языки сценариев (скрипты)
3.5. Декларативные языки программирования
Суть функционального (аппликативного) программирования определена А.П. Ершовым как «способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части является введение имени функции, а единственным правилом композиции – оператор суперпозиции функций. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передачи управления».
Ключевым понятием в функциональных языках является выражение. К ним относятся константы, структурированные объекты, функции, их тела и вызовы функций. Функциональный язык программирования состоит из: совокупности базовых функций; классов констант, действия над которыми могут производить функции; предписаний, устанавливающих правила построения выражений и новых функций на основе базовых или рекурсивно через себя.
Первым таким языком стал Лисп (LISP, LISt Processing - обработка списков), созданный в 1959 г. Джоном Маккарти. Этот язык ориентирован на структуру данных в форме списка и позволяет организовать эффективную обработку больших объемов текстовой информации. Существенная черта языка – единообразие программных структур и структур данных: все выражения записываются в виде списков.
3.6 Логическое программирование
Создание языка искусственного интеллекта Пролог (PROLOG, PROgramming in LOGic – программирование в терминах логики) в 1973 г. французским ученым Аланом Кольмероэ открыло новую область – логическое или реляционное программирование.
Концепция логического программирования базируется на понятии отношение. Логическая программа – это совокупность аксиом и правил, определяющих отношения между объектами и целью.
Выполнение программы представляет собой попытку доказательства логического утверждения, построенного из программы по правилам, определенным семантикой используемого языка. Результатом вычислений является вывод следствий из аксиом. Алгоритм логической программы предполагает определение и перечень специфических свойств объектов и отношений между ними, а не определение порядка выполнения отдельных шагов. Это подтверждает декларативный характер логического языка программирования. Логические программы не отличаются высоким быстродействием, так как процесс их выполнения сводится к построению прямых и обратных цепочек рассуждений разнообразными методами поиска.
Программа на языке Пролог, в основу которой положена математическая модель теории исчисления предикатов, строится из последовательности фактов и правил, затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. Пользователь только описывает структуру задачи, а внутренний механизм Пролога сам ищет решение с помощью методов поиска и сопоставления.
3.7. Языки сценариев (скрипты)
Язык JavaScript. JavaScript появился в 1995 году, когда язык Java был уже достаточно широко известен. К тому времени, однако, существовал прототип языка JavaScript — язык описания скриптов (сценариев) LiveScript, встроенный в браузер Netscape Navigator 2.0. Впоследствии компания Netscape отказалась от названия LiveScript и в сотрудничестве с компанией Sun Microsystems, создавшей язык программирования Java, начала разработку нового языка, получившего название JavaScript [6,7].
Несмотря на некоторое сходство в синтаксисе и методах создания объектов, языки Java и JavaScript мало похожи. Определение языка JavaScript как "облегченной версии" языка Java является неточным. Многие утверждают, что язык JavaScript – это язык описания сценариев, а не язык программирования. Однако описание сценариев и программирование тесно связаны между собой, несмотря на то, что скрипты и программы применяются для различных целей. С введением обработчиков событий HTML-документы стали более "живыми", поскольку разработчики получили возможность определять их поведение в зависимости от действий пользователя. Важен тот факт, что JavaScript-программы действительно являются выполняемым содержимым документов; они физически находятся внутри HTML-документов, в отличие от Java-апплетов, которые существуют вне документов, их активизирующих. Пример реакции системы на действия человека приведен на рис. 3.1. Курсор мыши в своем движении по экрану остановился на символе сноски. В результате обработки произошедшего события поверх основного текста документа всплыл текст сноски. Читателю не нужно использовать прокрутку документа, чтобы добраться до сноски, она сама появляется перед ним и сама исчезает, если курсор мыши сдвинуть в сторону от символа сноски.
положение курсора мыши
Рис. 6. Пример использования скриптов в документах
Все события, происходящие в браузере Navigator, например, нажатие кнопки или переход к другой странице, обнаруживает и обрабатывает операционная система, передавая результирующие параметры JavaScript-программам. Важность этих событий состоит в том, что они позволяют программным элементам документов и браузеру более тесно взаимодействовать друг с другом. Например, JavaScript-программа включается, когда пользователь покидает страницу, и выполняет при этом необходимые, запланированные автором действия. JavaScript-программы могут обрабатывать множество других событий, таких как выбор нового элемента списка или инициализация формы. Кроме того, язык JavaScript хорошо приспособлен для проверки правильности описания и заполнения форм, обработки строк и динамического создания HTML-элементов. Он позволяет создавать их динамически, в процессе взаимодействия с пользователем, что называется "на лету". Почти во всех сложных приложениях HTML для управления внешним видом документа используются JavaScript-программы, динамически создающие HTML-элементы и даже целые документы. В частности, чтобы Web-страница приобрела новый внешний вид, ее автору не нужно вручную изменять исходный текст, это делают скрипты.
В результате, с помощью JavaScript-программ вы можете:
- формировать HTML-документы "на лету";
- производить проверку правильности данных HTML-формы перед передачей их на сервер;
- предоставить пользователю возможность вводить локальные данные для управления работой JavaScript-программы, а также выборочно выполнять различные операции;
- создавать окна сообщений и диалоговые окна для вывода предупреждающих сообщений и ввода данных;
- создавать документы с расширенными возможностями навигации, используя фреймы и автономные окна;
- обнаруживать Java-апплеты и подключаемые модули (plug-in) браузера и взаимодействовать с ними.
3.8. Языки, ориентированные на данные
В последнее десятилетие объектно-ориентированная технология нашла свое место в языках программирования, пользовательских интерфейсах, базах данных, операционных системах. Продукты, помеченные как объектно-ориентированные системы баз данных, появились на рынке, а производители реляционных систем баз данных объявляют, что они расширяют свои продукты объектно-ориентированными возможностями. Характеристика объектно-ориентированных возможностей СУБД позволит оценить преимущества нового поколения технологий баз данных.
Сегодняшние объектно-ориентированные технологии включают объектно-ориентированные языки программирования (например, С++ и Smalltalk), объектно-ориентированные системы баз данных, объектно-ориентированные интерфейсы пользователя (например, оконные системы Macintosh и Microsoft, настольные издательские системы Frame и Interleaf) и т.д. Объектно-ориентированная технология делает возможным использование "объектно-ориентированных концепций".
Термин "объектно-ориентированный" означает, в первом приближении, комбинацию инкапсуляции и наследования (наравне с термином "наследование" иногда говорят "переиспользование"). Под наследованием понимают возможность создания нового объекта путем расширения уже существующего.
Сила объектно-ориентированных концепций проистекает из объединения инкапсуляции и наследования.
Поскольку наследование делает возможным совместное использование различными классами одного набора атрибутов и методов, одна и та же программа может работать с объектами, принадлежащими ко всем этим классам. На этом основывается объектно-ориентированный интерфейс пользователя современных оконных систем. Один и тот же набор программ (открыть, закрыть, создать, выбросить, переместить и т.д.) применим к различным типам данных (изображение, текст, аудио-данные, каталог и т.д.).
Объектно-ориентированный язык программирования обеспечивает средства для того, чтобы создавать классы, описывающие объекты, создавать объекты, формировать иерархии наследования и вызывать методы для доступа к определенным объектам. Поскольку система баз данных является системным программным обеспечением, функции которого вызываются приложением, написанным на определенных базовых языках, можно выделить два различных подхода к проектированию ООБД.
Первый состоит в хранении и управлении объектами, созданными программами, которые написаны на конкретных объектно-ориентированных языках, в частности, на С++ или Smalltalk Конечно, для этого можно использовать и РБД. Однако такие базы данных ничего не знают об объектах, методах и наследовании. Поэтому необходимо написать "менеджер объектов" или "объектно-ориентированный слой" для управления методами и наследованием и для трансляции объектов в кортежи отношений. Но менеджер объектов вместе с РБД и дают ООБД (конечно, с низкой производительностью).
Другой подход предоставляет доступ к объектно-ориентированным средствам пользователям традиционных языков. Этот подход, по сути, превращает такие языки, как С, FORTRAN, COBOL и т.д., в объектно-ориентированные языки. Спроектированные таким образом ООБД могут использоваться для хранения и управления объектами, созданными программами, написанными и на объектно-ориентированных языках.
Вследствие определённых недостатков большинство этих продуктов потребует значительных усовершенствований. Объем изменений, которые потребуются, чтобы превратить их в полноценные системы, по меньшей мере сопоставимые по возможностям с современными системами баз данных, настолько велик, что трудно ожидать быстрого появления усовершенствованных продуктов, обладающих необходимыми для высококритичных приложений надежностью и производительностью.
Для модернизации языка запросов ООБД потребуется выполнение следующих операций:
1. Проектирование языка запросов.
2. Реализация процедуры синтаксического разбора запросов.
3. Добавление оптимизатора запросов - очень большого компонента системы баз данных. Большинство современных ООБД поддерживают только простые запросы и не включают изощренных оптимизаторов, которые автоматически определяли бы лучший способ обработки запроса.
4. Реализация различных алгоритмов обработки запросов для вычисления сложных запросов (соединения, операции над множествами, вложенные подзапросы).
5. Реализация нескольких методов доступа (структур для сохранения и извлечения данных), таких как универсальная сортировка, индексное B+-дерево, расширяемая хэш-таблица.
6. Проектирование и реализация каталога статистики, а также компонентов управления этим каталогом, что позволит использовать статистические данные для оптимизации запросов. Каталог должен содержать такую информацию, как число объектов в классе, число различных значений атрибута класса, максимальное и минимальное значения атрибута и так далее. Кроме того, в соответствующих системных каталогах должна поддерживаться такая информация, как число страниц, которые занимают объекты класса, наличие и высота индекса для каждого атрибута и т.д.
7. Разработка методов доступа, которые должны защитить базовые структуры данных от возможных проблем, связанных с одновременным доступом многих пользователей, и от системных сбоев и прерывания транзакций.
8. Интеграция алгоритмов обработки запросов с механизмами контроля одновременного доступа и восстановления после сбоев.
9. Нуждается в модификации компонент управления рабочим пространством, поскольку оно будет задействовано в обработке запросов. Так как рабочее пространство может содержать обновленные версии объектов, отличные от тех, которые находятся в базе, это необходимо учитывать при обработке.
Таким образом, объектно-ориентированные технологии значительно расширяют возможности использования СУБД, но продолжают оставаться актуальным направлением разработки баз данных нового поколения.
Выводы
В настоящий момент большинство современных языков программирования [3, 4] обычно включают средства и приёмы программирования различных парадигм, хотя классифицируются согласно средствам своего ядра (к примеру, язык программирования Лисп – функциональный язык, хотя включает некоторые конструкции императивного стиля). Тем самым все более сложным становится выбор языка для обучения программированию в высшей школе.
На основании фактов изложенных в данной работе можно сделать вывод о том, что программирование является очень молодой отраслью науки, и как следствие в ней отсутствует строгая и четкая классификация по тем или иным признакам. Каждый язык программирования будет сочетать в себе ряд признаков разных парадигм, что в свою очередь делает изучение как самих языков программирования, так и всей отрасли информационных технологий в целом крайне увлекательным, отчасти творческим занятием.