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.
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.