If I could go back in time to tell myself something 10 years ago, I’d tell myself to learn haskell. This language is beautiful. It’s a purely functional language. It’s not perfect but its pretty damn close. It’s exciting learning it, it’s very different from languages like C and Java. It’s incredibly rigorous and sturdy. The only problem with it? It’s hard to program in. And that’s a pretty big problem.
But it’s not a problem for good programmers. My view is that functional programming will increase in popularity as people realize that having solid code is more important than being able to whip it together quickly. Let me be clear, I don’t think that an experienced Haskell programmer would take longer than a C programmer to make a program. I do think that a beginner haskell programmer would take longer to make a program than a beginner C programmer. So the difference decreases over time.
It’s thrilling learning a well designed language. When I learn a language I try to find flaws in it as I go along. In Haskell I’ve found no flaws in the language, only flaws in my understanding of it. The Wikipedia page on Haskell says the following under the “Criticism” section:
“Jan-Willem Maessen, in 2002, and Simon Peyton Jones, in 2003, discussed problems associated with lazy evaluation while also acknowledging the theoretical motivation for it, in addition to purely practical considerations such as improved performance”
The best criticism of Haskell is that some people once discussed problems with it (problems which are not listen) and that lazy evaluation is theoretically sound and very practical as it improves performance. That’s a sign of how strong the language is – the strongest criticism is a compliment.