I was listening to Bruce Tate in Mostly Erlang podcast, when, around the 57th minute of the episode, the topic of the conversation became the feasibility of FP becoming mainstream. He explains that FP has not emerged yet, but it’s reluctantly about to do so, being the end of Moore’s law the main driver as concurrent/parallel programming becomes more critical.
I agree with him about this trend, although I also think it’s easy to overestimate the time it will take. I think it’s going to be very slow.
Another interesting idea, he mentions is that within the FP field, a clear winner may arise, as it happened with the C/C++, and all its descendants. The four candidates he postulates are:
I also think there’ll be a winner, understanding for winner, the language most programmers and companies will use (i.e. Java would be a winner now). But I don’t see being a winner language, in this sense, so relevant. To me, what’s really important is to see how prominent is going to be the software written in that language, and how much of current business will be run in code written in such language. A language could be considered not mainstream by programmers and companies, but there may be several critical widespread software that wouldn’t be possible without it. For example, I see this trend going on with Erlang being used in critical IM services, distributed databases, message queuing systems, etc. Current shops with expertise in Erlang, even if not mainstream, have a clear competitive advantage when writing scalable systems.
In this sense, I think Haskell may never be a winner, but the question is still open about how crucial will it be in the future. What will be the business perspectives for the few companies proficient in Haskell? Who cares if there are few proficient Haskell programmers as long as there is a pool of Haskell programmers to hire (which currently it seems there is) and taking into account the strong hint that if someone is proficient Haskell she has already very high chances of being a very productive programmer?
I guess this same argument was the same used with Lisp, but now there are some differences. Lisp idioms are, inherently, very heterogeneous, whereas Haskell, in spite of not having the equivalent of being Pythonic, is much more understandable among programmers working in different projects. Secondly, there are certain parallelization/concurrency problems that are very hard to get them right with traditional languages, for example, STM. I’m not an expert in Lisp but I guess it lacked the killer feature that make using it a need, more than just a nice advantage.
In conclusion, my opinion is that Haskell has a very good chance of becoming very relevant even if it doesn’t become the FP language winner. I see its purity and side-effect management as enablers of killer features in the area of concurrent/parallel programming. Somehow, the vibrancy of the Haskell community these days, reminds me of the [Python] community before Google made it popular. Will all this be enough to make Haskell relevant? I guess time will tell.