
Шаг 6. Парадигмы программирования
Баллов за прохождение: 1
Парадигмы программирования
Парадигмы программирования - различные методы и подходы для написания кода, позволяющие решать определенные задачи в разработке ПО по разному.
Давайте рассмотрим их подробнее:
Процедурное программирование
Процедурное программирование - это способ написания программ, при котором код разделяется на отдельные функции(процедуры), которые в свою очередь выполняют определенные задачи.
Например, вы собираете мебель по инструкции. Каждый шаг инструкции(соединить две доски, прикрутить ручку к шкафу, ножки к дивану) здесь является отдельной процедурой, таким образом вместо того чтобы описывать весь процесс сборки одним текстом, мы следуем маленьким, понятным шагам.
Преимуществами процедурной парадигмы является:
- Более простая проверка кода, так как отдельные его части проверять проще, чем большой объем.
- Так как программа разделяется "на части" благодаря функциям, мы можем использовать их повторно без дублирования кода
- Улучшенная читабельность кода
Пример процедурных языков: C, Pascal, Basic, Fortran
Объектно-ориентированное программирование(ООП)
ООП - Парадигма, в которой код представлен в виде классов и объектов. Классы зачастую используются для моделирования реальных объектов, например, у собаки есть порода, 4 лапы и хвост, она может сидеть, лежать, бегать и тд. На основе классов создаются объекты, или экземпляры класса.
ООП поддерживает 3 принципа: Наследование, Полиморфизм и Инкапсуляция
Пример языков: Python, Java, C++.
Данная парадигма является самой актуальной на сегодняшний день. Большинство программ на Python пишутся используя именно эту парадигму. Настоятельно рекомендуем Вам ознакомиться с курсом Простой ООП для того, чтобы полностью понять её концепцию и повысить свой уровень знаний на порядок выше и смело называть себя программистом, ведь без знания ни одной концепции не получится написать большую и функциональную программу.
Видео-объяснение
Функциональное программирование
Функциональное программирование - стиль программирования, при котором главными "строительными блоками" в нем являются математические функции.
Плюсами этого подхода являются:
- Упрощение разработки
- Повышение надежности
- Легкость тестирования
- Высокая скорость работы
Пример языков: Haskell, F#, OCalm
Логическое программирование
Логическое программирование основано на математической логике, а программы в ней - это логические утверждения и правила вывода
Логическое программирование можно примерно представить как обучение ребенка, вы заведомо указываете объекты которые "недоступны", а остальные изначально помечаются как доступные
Преимущества логического программирования:
-
Операции, совершаемые в логическом программировании всегда понятны
-
Результат не зависит от выбранного пути реализации
Пример языка: Prolog
Декларативное программирование
Декларативное программирование описывает ожидаемый результат, а не способ получения этого результата.
Это обобщенный термин, к его подвидам так же часто относят функциональное и логическое программирование.
Примеры языков: SQL, Haskell
Императивное программирование
Императивное программирование является противоположностью декларативного программирования и делает акцент на способе достижения результата, а не на самом результате, т.е. описывает пошаговые инструкции выполнения программы
Процедурное программирование является подвидом императивного программирования.
Примеры языков: Java, Python, JavaScript
Событийно-ориентированное программирование
Событийно-ориентированное программирование - парадигма программирования, выполнение программы в которой является результатом действия пользователя(например нажатие кнопкой мыши, сенсор, скролл страницы).
Применяется данный подоход в построении пользовательских интрефейсов приложения, в играх и для серверных приложений, для решение проблемы порождений множества обслуживающих процессов.
Пример языка: JavaScript
Конкурентное программирование
Конкурентное программирование - парадигма, при которой происходит несколько вычислений одновременно, которые могут взаимодействовать друг с другом, благодаря управлению потоками обеспечивается эффективность выполнения программы.
Вычисления запускаются, проходят и завершаются в пересекающихся промежутках времениБ они также могут происходить абсолютно одновременно, но это не обязательно.