I have noticed lately that functional programming languages are gaining popularity. I recently noticed how the Tiobe Index shows an increase in their popularity in comparison to the last year although most of them do not even reach the top 50 most popular languages according to this index.
And this has been the case for quite some time. Functional programming simply has not become as popular as other models (i.e object oriented programming).
I have seen however a reborn interest in the power of functional programming and now that multicores are more and more popular, developers have started to show interest in other models of concurrency already explored in the past by languages like Haskell and Erlang.
I see with great interest the fact that despite of their lack of a big community acceptance, more and more languages of this sort continue to emerge. Clojure (2007), Scala (2003), F# (2002) are just three examples of the recent last decade.
I have been, myself, investing some time learning Haskell and Scala. And I find a great potential in the paradigm which for me was totally new despite of being out there for so long.
And of course, my biggest question is if any of these are really going to become popular enough as to consider putting any effort in them, but this is a question that not even Mandrake could answer, despite of all the fuss people is making about them.
What I do want to ask is:
- In which scenarios should I consider a functional programming languages better suited to do a given task? Besides the so recently popular multicore problem of parallel programming.
- If I decided to switch to a functional programming language which do you consider are the biggest pitfalls that I will face? (Besides the paradigm change and the difficulty to evaluate performance due to lazy evaluation).
- With so many functional programming languages out there, how would you choose the one the better suit your needs?
Any recommendations for further research will be more than welcomed.
I have searched the web for opinions and it appears the all this renew popularity come from the idea that now were about to hit the wall of Moore's Law and functional programming languages will come and heroically save us. But if this is the case, I would say there are more probabilities of existing popular languages adapting to the paradigm.
Some of you, with more experience working every day with these languages perhaps can offer more insight on the subject. All your opinions will be better appreciated and carefully considered.
Thanks in advance!