Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить курсы бесплатно
ГлавнаяБлогПарадигмы программирования: какие бывают и на что влияют
Парадигмы программирования
6 097
Время чтения: 15 минут

Парадигмы программирования: какие бывают и на что влияют

6 097
Время чтения: 15 минут
Сохранить статью:
Сохранить статью:

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

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

В статье рассказывается:

  1. Понятие парадигмы программирования
  2. Что не относится к парадигме программирования
  3. Императивная парадигма программирования
  4. Декларативная парадигма программирования
  5. Сравнение парадигм программирования
  6. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

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

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

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

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

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

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

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

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

Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 28047 pdf иконка

Есть так называемые многопарадигмальные языки, которые позволяют адаптировать код под различные парадигмы программирования. Например, Python и JavaScript.

Императивная парадигма программирования

Наиболее распространённой и простой парадигмой является императивный вариант. Её основное отличие заключается в последовательном выполнении операций.

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

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

Императивная парадигма программирования
Императивная парадигма программирования

Процедурное программирование

Языки: C, Pascal, COBOL, ALGOL, BASIC, Fortran и т.д.

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

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

Рассмотрим ещё один пример. Когда человек сообщает официанту название напитка, который хочет получить, его вряд ли интересует, что должен будет сделать работник кафе. Ему важно получить конкретный результат. Примерно то же самое происходит и при вызове функции. Разработчику не нужно знать, что сделает функция для выполнения поставленной задачи. Необходимо лишь помнить название процедуры и технику ее использования.

Объектно-ориентированное программирование

Языки: Java, Python, C++, Ruby, C#, Objective-C, PHP и т.д.

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

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

Объектно-ориентированное программирование
Объектно-ориентированное программирование

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

Декларативная парадигма программирования

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

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

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

Функциональная парадигма программирования

Языки: Haskell, Erlang, Scala, F#, OCaml, ELM, Lisp и т.д.

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

Дарим скидку от 60%
на обучение «Инженер-программист» до 12 мая
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

Либо бариста вообще не найдёт какао-бобов и функция отобразит ошибку «невозможно приготовить ванильный мокко». Именно такие изменения, которые произошли в процессе исполнения функции, называются побочными эффектами.

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

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

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

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

Сравнение парадигм программирования

Рассмотрим конкретный пример. Возьмём несколько чисел:

5, 1, 3, 9, 12, 583, 998, 7538, 72, 53, 71, 85, 7, 2, 9

Задача заключается в том, чтобы получить из этого ряда все числа, которые больше 3, но меньше 100.

Сравнение парадигм программирования
Сравнение парадигм программирования

Если человек будет писать код декларативным методом, то ему нужно будет вбить следующую команду: получить из массива N все числа, которые больше 3 и меньше 100. Программисту неважно, каким образом программа будет решать поставленную задачу. Ему лишь нужно сформулировать искомый результат.

Только до 9.05
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

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

  • сформировать массив N с числами …;
  • объявить переменную i со значением 0;
  • начало цикла:
  • если значение элемента номер i больше 3 и меньше 100, то добавить его в массив N2;
  • прибавить к переменной i единицу;
  • повторять, пока значение переменной i меньше количества элементов массива N;
  • конец цикла;
  • вернуть массив N2.
Таким образом, в оперативном программировании специалисту нужно указать, как программа должна получить искомый результат, а в декоративном — просто написать, что он хочет получить.

В качестве примера проанализируем два языка — C# и SQL

C# (императивный) SQL (декларативный)
int[] N = new int[] { 5, 1, 3, 9, 12, 583, 998, 7538, 72, 53, 71, 85, 7, 2, 9 };

List<int> nums = new List<int>();

for(int i = 0; i < N.Length; i++)

{

if(N[i] > 3 && N[i] < 100)

{

nums.Add(N[i]);

}

}

int[] N2 = nums.ToArray();

SELECT num FROM N WHERE num > 3 AND num < 100;

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

Привлекает мир кодирования и создания программ? На курсе программиста с нуля до Junior вы освоите основы, познакомитесь с языками и инструментами разработки, и станете готовы к созданию своих первых проектов в IT-индустрии.

Выделяют три основные причины:

  1. Декоративное программирование вообще не может работать без императивного. Компьютер не понимает, что нужно разработчику. Он воспринимает лишь конкретные инструкции, в которых записана чёткая последовательность действий. Следовательно, чтобы декларативное программирование на SQL начало работать, нужны заранее сформированные инструкции.
  2. С помощью декларативного программирования не получится работать с задачами, для решения которых необходимо иметь доступ к состоянию программы. К примеру, если разработчику требуется понять, поставлена ли галочка в checkbox. Декоративное программирование не позволяет отслеживать состояние и его изменения.
  3. Императивное программирование имеет меньше ограничений. Именно по этой причине она часто применяется в творческих сферах деятельности. В особенности это касается областей, где важна последовательность выполняемых действий

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

Практически все языки могут работать как с декоративной, так и с оперативной парадигмой, хотя заточены под одну из них. Яркий пример — C#. В нем есть элементы из обеих парадигм.

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

Учтите, что результат программы — это не только те задачи, которые она выполняет, но и то, каким образом написан ее код. Если он будет слишком сложным, то другие программисты не смогут его прочитать. Это затруднит процесс исправления ошибок и улучшения программы.

Оцените статью
Рейтинг: 5
( голосов 2 )
Поделиться статьей
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
До конца акции осталось
0 дней 00:00:00
Дарим скидку 64% на обучение «Разработчик»
  • Получите новую профессию с гарантией трудоустройства
  • Начните учиться бесплатно, 3 месяца обучения в подарок
Забронировать скидку на обучение
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...