Файл: Обзор языков программирования высокого уровня.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 22.04.2023

Просмотров: 89

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

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

Предмет исследования: специфика разработки программных приложений с помощью языка программирования C#.

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

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

  1. Анализ особенностей объектно-ориентированных языков программирования.
  2. Обзор существующих популярных парадигм реализации программного обеспечения.
  3. Аналитический обзор популярных языков программирования java, c#, python.
  4. Выполнение практической реализации программного приложения средствами языка программирования c#.
  5. Описание разработанного состава программного приложения
  6. Описание основных функциональных возможностей программного приложения.

В первом разделе был проведен анализ особенностей объектно-ориентированных языков программирования. Рассмотрены и описаны основные положения согласно тематике работы, описаны основополагающие термины и понятия. Описаны результаты обзора существующих парадигм реализации программного обеспечения на базе современных объектно-ориентированных языков. В разделе приведены 2 иллюстрации схематического отображения рассмотренных положений и материалов.

Во втором разделе проведены результаты выполненного аналитического обзора некоторых популярных языков программирования, являющихся востребованными на рынке труда разработчиков программного обеспечения. В частности, описаны возможности высокоуровневых языков программирования Java, C# и Python. По каждому из рассмотренных языков разработки программного кода приведены иллюстрации, демонстрирующие концептуальные положения и особенности функционального состава используемых средств. Приведены основные преимущества описанных языков.

Третий раздел отражает специфику практической реализации программного приложения по обработке графических файлов средствами языка высокоуровневого программирования C# и среды разработки MS Visual Studio 2017. Описан состав разработанного проекта программного приложения с соответствующими иллюстрациями. Приведено описание реализации функциональных возможностей разработанного программного приложения, приведены скриншоты основных форм и результатов обработки фотоизображений.


ГЛАВА 1 ОСОБЕННОСТИ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

1.1. Вводные положения и обзор используемой терминологии

Языки программирования - формальные знаковые системы, предназначенные для записи компьютерных программ. Языки программирования определяют набор лексических,  синтаксических и  семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением [1].

Высокоуровневые языки программирования разработаны для оперативности и удобства использования для разработки приложений программистами. Основная черта таких языков - абстракция, представляющая смысловую конструкцию, которая кратко описывает используемые структуры данных с возможными операциями, формализация которых на базе машинного кода является трудоемкой и длительной [2].

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

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

Большая часть современных языков программирования высокого уровня поддерживает парадигму объектно-ориентированного программирования (ООП) [3].

ООП — это методика организации программного кода на основании группировки и представления его в виде объектов, являющихся отдельными элементами, включающими свои функции (методы) и информацию (поля).

Спецификой современных языков программирования высокого уровня является отсутствие необходимости в учете особенностей отдельных архитектур и систем, что позволяет переносить и использовать разработанные приложения на разных компьютерах. Достаточно одной предварительной перекомпиляции программного продукта под конкретную операционную систему и архитектуру. Это позволяет сократить время, необходимое на разработку программного приложения, что является критичным параметром при работе над большими проектами [4].


Структурная схема подразделения языков программирования на 2 направления(низкоуровневые и высокоуровневые) приведена на рис.1.

Рисунок 1 – Структурная схема классификации языков программирования

Языки высокого уровня призваны к упрощению процессов решения трудоемких задач в программировании существующего и будущего программного обеспечения.

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

Все существующие современные языки программирования часто классифицируют по таким поколениям [5]:

– первое поколение: применение на ЭВМ первого поколения с машинно–ориентированным использованием и ручным процессом управлением памятью;

– второе поколение: применение автокодов или мнемонических символов для представления команд программы;

– третье поколение: языки программирования высокого уровня общего типа и назначения, которые использовались в первую очередь для разработки и реализации пакетов прикладных программ в нужной предметной области (Паскаль, Бейсик, Си);

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

– пятое поколение: объектно–ориентированные, декларативные и визуальные высокоуровневые языки программирования. Данные языки применяются в настоящее время и используются для разработки клиент-серверных приложений, мобильных систем и распределенных веб-ресурсов. Примерами таких языков являются Си++, Java, C#, Visual Basic, Delphi.

В настоящее время наиболее востребованными языками программирования высокого уровня являются C++, Java, C# и др (рис.2).

Рисунок 2 – Статистика современной воcстребованности языков программирования высокого уровня

1.2. Обзор существующих популярных парадигм реализации программного обеспечения


1. Объектно-ориентированный метод разработки современного программного обеспечения.

Объектно-ориентированное программирование (ООП) это современная парадигма программирования, опирающаяся на такие ключевые понятия, как объект и класс, позволяющая организовать гибкую структуру программного кода проекта.

ООП появилась посредством развития идеологии функционально-процедурного программирования, в которой не было четкой связи между данными, процедурами и функциями, их вызов осуществлялся в ручную, а обработка передавалась посредством операторов типа goto [6].

На развитие парадигмы ООП существенное значение оказало концептуальные понятия события и компонента.

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

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

Для ООП характерно использование следующих концепцій (рис.2).

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

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

Наследование позволяет описать новый, создаваемый разработчиком, класс, который базируется на уже существующем классе, при этом новый класс (потомок) может полностью или частично заимствовать методы и поля старого класса (родителя).

Полиморфизм  позволяет пользователю использовать объекты с одним и тем же программным интерфейсом без детализации информации о структуре и типе самого объекта [12].


Рисунок 2 – Концепции ООП

2. Функциональный метод разработки современного программного обеспечения.

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

Данный подход был впервые продемонстрировано Джоном Маккарти в методах реализации языка программирования Лисп еще во второй половине ХХ века [17].

Наиболее актуальные подходы, предложенные Маккарти были использованы и применены другими языками программирования. Часто данный метод применяется при смене используемых технических технологий реализации, т.е. тогда, когда существенно возрастает роль аналитики для решения различных научно-исследовательских кейсов и задач.

Функциональный стиль разработки программного обеспечения концептуально объединяет ряд подходов к идентификации и формализации процессов вычисления на базе строгих понятий и методов символьной обработки используемых данных. Зависимость функционального программирования от классических математических основ делает возможным наследование доказательств построения результата в коде программы. При этом, возможно применение целого ряда различных методов для абстрагирования при решении задачи [19].

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

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

Недостатком данной парадигмы является отсутствие присваиваний и их замены на порождение новых данных, что явным или неявным образом приводит к необходимости контроля над выделением и очисткой памяти [5].