Загальні #
Розкажіть про функціональне програмування. #
Функціональне програмування - це парадигма програмування, заснована на використанні функцій як основний будівельний блок програми.
Основні концепції:
- Чисті функції - це функції, які не мають побічних ефектів введення-виведення та пам’яті (вони залежать тільки від своїх параметрів і повертають лише свій результат).
- Незмінність даних (Імумутабельність) - дані не змінюються після створення. Натомість створюються нові версії даних із потрібними змінами.
- Рекурсія - це використання функцій, які викликають самі себе. Рекурсія дозволяє описувати складні операції, а також по можливості замінювати звичні цикли.
- Функції вищого порядка - такі функції приймають інші функції як аргументи або повертають функції як результат.
- Каррування (Currying) - даний концепт, дозволяє легко комбінувати функції та створювати нові функції за допомогою вже існуючих.
- Лініві обчислення - це концепція, яка дозволяє обчислювати значення тільки в той момент, коли воно дійсно необхідне для виконання програми.
Переваги функціонального програмування
- Простота тестування та налагодження;
- Спрощення розробки;
- Висока швидкість роботи;
- Підтримка паралелізму;
- Гнучкість і модульність;
Недоліки функціонального програмування
- Висока складність для новачків;
- Важко виконувати оптимізацію продуктивності;
- Рекурсія може викликати накладні витрати пам’яті та швидкості;
- Не підходить для всіх типів завдань та проектів;
- Складність налагодження лінивих обчислень і пошук у них помилок;
- Обмеження в роботі з даними які змінюються;