Functional programming techniques in practice
During the last few years, we are witnessing a slight but noticeable shift towards functional programming. Scripting languages, notably Python and Ruby, pioneered the introduction of functional concepts, such as list comprehensions and lambda functions, to mainstream programming. A new wave of programming languages, developed to overcome the expressiveness and complexity limitations exhibited in mainstream languages, have promoted functional constructs, such as type safe pattern matching, higher order functions and immutable variables, to first class citizens (Scala, C#). New, purely functional, languages have emerged to fill in the remaining gaps (F#), often introducing significant advancements in their field of specialisation (Erlang).
However, as functional programming has not caught mainstream attention yet, even though it does make an appearance in specialised fields such as financial engineering, it has been living below the radar of software engineers. Very little research, if any, has been carried out on how software is written with the functional paradigm. The consensus is that functionally enabled languages allow experienced developers to express algorithms more intuitively and result in significantly more concise and maintainable code.
The purpose of this study is to conduct a large scale empirical study on the extend of use of functional programming constructs in mixed programming languages. This study will attempt to answer the following questions:
What functional programming constructs are most used by programmers? How is the use distributed per language.
Why do programmers choose to use functional code over OO or procedural code?
Can we identify re-usable patterns of mixed OO/functional constuct use?