
On Wed, Nov 25, 2015 at 9:50 AM, Martin Vlk
What'd be the definition of an okay programmer? If we agree that's the one that "learns how to solve a few standard problems and then applies the same thing over and over without much creativity", then I'll argue this will work with Haskell just like with any imperative language. If you train them on Haskell that is. :-)
<snip>
Martin, One issue I can foresee is having both good Haskell programmers and non-creative Haskell programmers on the same team. The good ones can easily write code that is incomprehensible to the non-creative ones. It actually happened in my team twice that C++ code was thrown out and assigned to someone else for a complete rewrite, because the senior software engineer deemed that the original code was incomprehensible. In both cases it was code that used a few tricks that I think were good, and in both cases the replacement code was buggier.
But I wonder if the same mechanisms that make Haskell concise (which are some of the things that make it hard) also are bound up with its practical advantages so that they can't be separated.
What you mean by practical? Does it mean that you can find enough people able to use it in your real-world project, without putting too high requirements on training them?
If so, then we could say that given the current state of affairs, where the mass of okay programmers are trained on a different paradigm, Haskell is not all that practical.
But if practical means that the language is well suited for solving real-world problems, in beautiful ways, once you get it, then it is uberpractical! :-)
Very well put. I didn't really think about what meant by "practical," and it depends on context. I am gaining some Haskell momentum, and I see how the potential for conciseness seems to encourage the kind of thinking about a problem that leads to simplifications and optimizations. When I spend some time thinking about a good way to write it in Haskell, it's guiding me toward a better understanding of the problem itself that would potentially be helpful no matter what language I'm using. But using Haskell provides the impetus for this thinking. Dennis