Что такое функциональное программирование?
Википедия определяет функциональное программирование следующим образом:
Функциональное программирование — парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних.
Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния.
В функциональном программировании функции рассматриваются как "граждане первого класса", что означает, что они могут быть привязаны к именам (включая локальные идентификаторы), передаваться в качестве аргументов и возвращаться из других функций, как и любой другой тип данных. Это позволяет писать программы в декларативном и составном стиле, где небольшие функции объединяются модульным образом.
Также полезно знать, что опытные функциональные программисты рассматривают свой код математически, что объединение чистых функций вместе похоже на объединение ряда алгебраических уравнений.
Когда пишется функциональный код, вы чувствуете себя математиком, и как только понимаете парадигму,
то хотите писать только чистые функции, которые всегда возвращают значения,
а не исключения или null
, чтобы можно было комбинировать чистые функции вместе.
Ощущение, что вы пишете математические уравнения (выражения), является движущим желанием,
заставляющим использовать только чистые функции и неизменяемые значения -
это то, что используется в алгебре и других формах математики.
Функциональное программирование - это большая тема, и нет простого способа сжать её всю в одну главу. В следующих разделах будет представлен обзор основных тем и показаны некоторые инструменты, предоставляемые Scala для написания функционального кода.
Ссылки:
- Харрисон - Введение в функциональное программирование
- A bite of functional programming (in Scala)
- Business benefits of functional programming and how to make it work for your company
- FP vs. OO List Processing
- Functional Programming by Alexander Alvin
- Functional Programming For The Rest of Us
- Functional Programming in Scala, Second Edition, Chapter 1-2
- Scala3 book
- SKB – Scala Recursion
- Unleashing the Power: The Advantages of Functional Programming in the Digital Age
- What's Functional Programming All About?
- What is Functional Programming? - Alexandru Nedelcu
- What is functional programming and why it matters for your business?
- Wikipedia