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

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

Категория: Не указан

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

Добавлен: 07.11.2023

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

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

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

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)


Факультет «Институт непрерывного образования»

Кафедра «Автоматизация технологических процессов и производств»















Учебная практика

по дисциплине: Введение в профессию


Сравнительный анализ парадигм императивного и декларативного программирования.








Выполнил студент группы

ПБ-11з







Федоров А.А..







Фамилия И. О.







Руководитель




оценка







уч. Степень, уч. Звание










дата, подпись




Фамилия И. О.


Санкт-Петербург

2023

Содержание


  1. Парадигма императивного программирования 3

  2. Парадигма декларативное программирования 6

  3. Сравнительный анализ 9

  4. Список использованных источников 13ц



  1. Парадигма императивная программирования


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


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

1. Операции присваивания:

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


x = 10

y = "Hello, world!"


Листинг 1 –Код присваивания значения переменной
2. Условные операторы:

Условные операторы позволяют программе принимать решение на основе условия. Например, если условие выполняется, программа выполняет определенные команды, иначе она выполняет другие команды (листинг 2).


if x > 0:

print("x положительное число")

else:

print("x отрицательное или ноль")


Листинг 2 –Код условного оператора
3. Циклы:

Циклы позволяют повторять определенные команды или блоки кода несколько раз. В императивном программировании наиболее распространены два типа циклов: цикл с предусловием и цикл со счетчиком (листинг 4, 5).


while x > 0:

print(x)

x -= 1


Листинг 3 – Код цикла с предусловием


for i in range(5):

print(i)


Листинг 4 – Код цикла со счётчиком
4. Подпрограммы:

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



def multiply(a, b):

return a * b

result = multiply(x, y)

print("Результат умножения:", result)


Листинг 5 – Пример кода подпрограмма
Это лишь некоторые из основных элементов императивного программирования. Код на императивных языках программирования описывает последовательность шагов, которые компьютер должен выполнить, чтобы достичь определенного результата. Каждая команда изменяет состояние программы, и контроль за выполнением передается от одной команды к другой.

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




  1. Парадигма декларативного программирования


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

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

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

В декларативном программировании используются различные подходы и языки, такие как функциональное программирование, логическое программирование, SQL и DSL (Domain-Specific Languages).

  1. Функциональное программирование: Функциональное программирование основывается на математических функциях и вычислениях. Оно подчеркивает использование функций первого класса, неизменяемость данных и отсутствие побочных эффектов. Функции рассматриваются как математические отображения, принимающие одни значения и возвращающие другие. Это позволяет писать более компактный и выразительный код (листинг 6).

square :: Int -> Int

square x = x * x

result = square 5


Листинг 6 – Пример функционального программирования на языке Haskell


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





% Определение отношения "отец"

отец(Андрей, Мария).

отец(Андрей, Иван).
% Определение отношения "дедушка"

дедушка(X, Y) :- отец(X, Z), отец(Z, Y).
% Запрос: кто является дедушкой Марии?

?- дедушка(X, Мария).


Листинг 7 – Пример кода логического программирования на языке prolog


  1. SQL (Structured Query Language): SQL является декларативным языком запросов, используемым для работы с реляционными базами данных. В SQL программист описывает желаемые данные или операции над ними, а система базы данных самостоятельно оптимизирует выполнение запроса (листинг 8).




SELECT name, age FROM users WHERE age > 18;


Листинг 8 – Пример кода на языке SQL


  1. DSL (Domain-Specific Languages): DSL - это специализированный язык программирования, созданный для решения конкретных задач в определенной области. DSL позволяет описывать программу с использованием терминологии, семантики и абстракций, специфичных для предметной области. Примером являются языки разметки, такие как HTML и XML, которые используются для описания структуры документов.

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

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


  1. Сравнительный анализ


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

Начнём с императивного программирования. Опишем его преимущества и недостатки.

Преимущества императивного программирования:

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

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

  3. Большая гибкость в обработке побочных эффектов: Императивные языки позволяют разработчикам легко выполнять операции с побочными эффектами, такими как чтение/запись в файлы или взаимодействие с внешними устройствами.


Недостатки императивного программирования:

  1. Сложность поддержки и отладки: Императивные программы могут быть более сложными в поддержке и отладке из-за своего изменчивого состояния. Ошибки в управлении состоянием могут быть сложными для обнаружения и исправления.

  2. Ограниченная переиспользуемость: В императивном программировании код часто направлен на конкретную задачу, что может затруднить его переиспользование или расширение для других целей.

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

Примеры приложений, где императивное программирование лучше всего подходит:

  1. Разработка операционных систем: Императивное программирование позволяет непосредственно взаимодействовать с аппаратурой и управлять ресурсами компьютерной системы.

  2. Низкоуровневое программирование: Для разработки драйверов устройств или оптимизированных приложений, требующих точного контроля над аппаратными ресурсами.

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

Конкретные сферы использующие императивный подход:

  1. Разработка игр: Игровые движки и системы разработки игр обычно используют императивное программирование для управления графикой, физикой и взаимодействием с пользователем.

  2. Системы управления базами данных: Базы данных, такие как MySQL или PostgreSQL, часто используют императивный подход для управления данными и выполнения операций чтения/записи.

  3. Микроконтроллеры и встроенные системы: Разработка программного обеспечения для микроконтроллеров и встроенных систем, которые управляют электронными устройствами, обычно требует императивного программирования для прямого взаимодействия с аппаратурой.

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

Преимущества декларативного программирования:

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

  2. Уровень абстракции: Декларативное программирование позволяет использовать высокоуровневые абстракции и переиспользовать готовые компоненты, что способствует повышению производительности и упрощению разработки.

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