Можно создать дубликат:
Why functional languages?Преимущества и использование функционального языка программирования
Я начал программировать с C/C++, VB, и в конечном итоге Python - все императивные языки. Я прочитал курс о языках программирования и узнал свой первый функциональный язык - OCaml. Это было ужасно.
Синтаксис и другие ужасы в стороне, OCaml принял мой императивный мыслительный процесс и выбросил его из окна. Это было неприятно. Я настаивал на том, что все, что можно было бы сделать функционально, можно было бы сделать также императивно. Я думал о функциональном программировании как обязательном программировании без конечности (побочные эффекты). В ответ на мое разочарование единственным преимуществом моего профессора могло стать способность FPL распараллелить функции, свободные от побочных эффектов.
В любом случае, достаточно говорить.
- Каковы преимущества, которые предлагают FPL выше IPL?
- Есть ли что-нибудь, что можно легко сделать в FPL, что нелегко сделать в IPL?
- Есть ли реальные примеры использования FPL, или они в основном служат академическими упражнениями? (Когда я говорю «реальный мир», я имею в виду проект, который в значительной степени зависит от функционального аспекта языка и не вливает FPL в сценарий, где он не принадлежит).
Спасибо,
Advait
основном дублируют: http://stackoverflow.com/questions/36504/ почему-функциональные языки –
Просто краткий намек: язык OO «предотвращает» доступ к всем переменным, скрывая их за абстракциями. Это помогает вам контролировать сложность. Аналогично, FP предотвращает манипулирование общим состоянием и, таким образом, помогает вам писать, например, параллелизуемый код. –
Я видел этот пост и заметил, как все говорят о простом параллелизме. Я не был удовлетворен ни одним из ответов. Я считаю, что параллелизация вызовов стандартных функций не обеспечит больших преимуществ по производительности, позволяя программисту явно распараллелить свой собственный код (особенно потому, что накладные расходы на запуск нового потока для выполнения потенциально тривиальной функции довольно велики). Когда выбор предоставляется программисту (когда/что распараллеливать), он получает наибольшую свободу - преимущества производительности параллельности без костылей FPL. – advait