I have noticed lately that functional programming languages are gaining popularity. I recently saw 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 a reborn interest in the power of functional programming, however, 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 their lack of significant 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 great potential in the paradigm which for me was new despite being out there for so long.
And of course, my biggest question is if any of these are 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 all the fuss people is making about them.
What I do want to ask is:
- In which scenarios should I consider a functional programming language 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 would you consider being the biggest pitfalls that I would 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 welcome.
I have searched the web for opinions, and it appears the all this renew popularity come from the idea that now we're 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!