Amanda LeClair and Michael Facemire have a new report on functional programming:
The customer-facing software development world is outgrowing stateful, object-oriented (OO) development. The bar for great, intuitive customer experience has been raised by ambient, conversation-driven user interfaces, like through Amazon Alexa. Functional programming allows enterprises to take better advantage of compute power to deliver those experiences at scale; better flexibility for delivering the right output; and a more efficient way of delivering customer value. FP also reduces regression defects in code, simplifies code creation and maintenance, and allows for greater code reuse.
Just as object-oriented programming (OOP) emerged as the solution to the limitations of procedural programming at the dawn of the internet boom in the mid-’90s, FP is emerging as the solution to the limitations of OOP today. The shift is already underway– 53% of global developers reported that at least some teams in their companies are practicing functional programming and are planning to expand their usage.
Alexey Sommer notes that functional programming has been sneaking into C# bit by bit for well over a decade:
C# 1.0 Visual Studio 2002
C# 1.1 Visual Studio 2003 – #line, pragma, xml doc comments
C# 2.0 Visual Studio 2005 – Generics, Anonymous methods, iterators/yield, static classes
C# 3.0 Visual Studio 2008 – LINQ, Lambda Expressions, Implicit typing, Extension methods
C# 4.0 Visual Studio 2010 – dynamic, Optional parameters and named arguments
C# 5.0 Visual Studio 2012 – async/await, Caller Information, some breaking changes
C# 6.0 Visual Studio 2015 – Null-conditional operators, String Interpolation
C# 7.0 Visual Studio 2017 – Tuples, Pattern matching, Local functions
I strongly believe that if you are a database developer and need to pick up a non-SQL programming language, functional languages will be a lot easier for you to get than object-oriented languages. Many of the principles line up much smoother with functional languages, as you can most clearly see with the relationship between Scala and Spark.