Парадигмы программирования
Парадигма в переводе с греческого “пример, модель, образец”.
В программировании - это набор принципов и методов, которые определяют стиль написания программ и взаимодействие с данными. Она устанавливает основные правила и подходы к решению задач, влияет на способ организации кода, структуру данных и алгоритмы
Процедурное программирование
подробнее
Программа написанная в процедурном стиле ожидает на вход какие-то данные, выполняет ряд каких-то процедур и возвращает какой-то результат.
Функциональное программирование
подробнее
Функциональная парадигма программирования — это стиль программирования, в котором всё строится вокруг функций.
Основная идея: функции являются основными строительными блоками, а изменяемое состояние и побочные эффекты избегаются.
Основные принципы функционального программирования:
- Чистые функции (Pure Functions)
Чистая функция:- Всегда возвращает одинаковый результат для одинаковых аргументов
- Не имеет побочных эффектов (не изменяет внешнее состояние)
- Не зависит от внешнего состояния
- Неизменяемость (Immutability)
- Данные не изменяются после создания
- Вместо изменения создается новая версия данных
- Функции высшего порядка (Higher-Order Functions)
Функции, которые:- Принимают другие функции как аргументы
- Возвращают функции как результат
- Композиция функций
- Создание сложных функций из простых
- Рекурсия вместо циклов
Функциональные концепции в Python:
- Встроенные функции высшего порядка:
numbers = [1, 2, 3, 4, 5]
# map - применяет функцию ко всем элементам
squared = list(map(lambda x: x**2, numbers))
print(squared) # [1, 4, 9, 16, 25]
# filter - фильтрует элементы
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens) # [2, 4]
# reduce - сворачивает список в одно значение
from functools import reduce
sum_all = reduce(lambda x, y: x + y, numbers)
print(sum_all) # 15
- List comprehensions (частично функциональные):
# Функциональный стиль
squares = [x**2 for x in range(10) if x % 2 == 0]
# Эквивалентно:
squares = list(map(lambda x: x**2, filter(lambda x: x % 2 == 0, range(10))))
- Lambda функции:
# Анонимные функции для краткости
points = [(1, 2), (3, 1), (5, 4)]
sorted_points = sorted(points, key=lambda point: point[1])
print(sorted_points) # [(3, 1), (1, 2), (5, 4)]
Объектно-ориентированное программирование (ООП)
подробнее
Объектно-ориентированное программирование (ООП) — это парадигма программирования, в которой программа строится вокруг объектов, которые объединяют данные (атрибуты) и поведение (методы).