Я часто слышал, что функциональное программирование решает множество проблем, которые сложны в процедурном/императивном программировании. Но я также слышал, что это не здорово в некоторых других проблемах, что процедурное программирование просто отлично подходит.
Прежде чем я открою свою книгу о Haskell и погрузиться в функциональное программирование, мне хотелось бы по крайней мере базовое представление о том, что я действительно могу использовать для нее (за пределами примеров из книги). Итак, что же такое функциональное программирование? Каковы проблемы, для которых он не подходит?
Update
У меня есть хорошие ответы об этом до сих пор. Я не могу дождаться, чтобы начать изучать Haskell сейчас - мне просто нужно подождать, пока я не освою C:)
Причины, по которым функциональное программирование велико:
- Очень краткий и лаконичный - он может выражать сложные идеи короткими, непромокаемыми утверждениями.
- Легче проверять, чем императивные языки - хорошо, когда безопасность в системе критическая.
- Чистота функций и неизменность данных делает параллельное программирование более правдоподобным.
- Хорошо подходит для написания сценариев и написания компиляторов (я был бы признателен за то, что, хотя).
- Математические проблемы решаются просто и красиво.
Области, в которых борьба с функциональным программированием:
- Debatable: веб-приложения (хотя, я думаю, это будет зависеть от приложения).
- Настольные приложения (хотя это зависит от языка, вероятно, F # будет хорош в этом, не так ли?).
- Все, что критически важно для производительности, например игровые движки.
- Все, что связано с большим количеством состояний программы.