Что даёт функциональное программирование
- Переменные обозначают конкретные объекты (из области значения).
 
- Более ясная семантика, программы больше соответствуют математическим 
 объектам или объектам реального мира.
 
- Прозрачность по ссылкам: каждое выражение определяет единственную величину,
 возможно ссылаться на него (на такое же выражение) из разных частей
 программы - оно даёт тот же результат.
 
- Функции высшего порядка.
 
- Рекурсивные (самоссылающиеся) определения 
 функций - аналог циклов.
 
- Простой синтаксис — легче формально проверить 
 корректность, выполнить преобразование и оптимизацию.
 
Императивные языки ближе к железу
 они позволяют
компилировать в более эффективный машинный код.
Функциональные языки — большая выразительность и элегантность.
Предлагают понятия, более естественные и близкие людям.