(Note: This is the seventh and final part of a whitepaper I wrote a couple of years ago which I never had a chance to publish in full. You’ll find the earlier parts here, here, here, here, here and here.)
Functional languages have been growing for over 50 years, mainly in academia and niche applications. However, recently many have evolved into viable choices for general-purpose software development. At the same time the software industry has increased its need for the benefits these languages provide:
- The increasing complexity of software has brought focus to the benefits of solutions built around the strengths of functional languages.
- The need to build robust systems running reliably in concurrent environments has made immutability a de facto requirement of these solutions.
- Data processing intensive requirements (e.g., analytics) are a natural domain for functional languages with their focus on composability and readiness for parallel execution.
- The easy integration of Scala, Clojure and F# with existing code running on the JVM and CLR has lowered the cost of adopting these languages in a polyglot environment.
- The ability of these languages to attract high performing software developers makes their adoption a sound move for organisations looking to increase the productivity of their development teams.
- Software architecture approaches focusing on service composition provide low risk opportunities to experiment with new languages alongside existing codebases.