The Haskell community is by far the most abrasive and hostile to criticism of any programming language. You can get away with voicing trite complaints about too many parentheses in a thread on Lisp, but nearly any comment here critical of Haskell ends up at < 0.
Attempting to shutdown your critics is a great way to alienate the unconverted. "Avoid success at all costs" indeed.
Perhaps you are being shutdown because you are combining your criticism with condescension and personal attacks? Like deciding that people were being "dishonest" because they don't agree with you and argue for their opinion? Or levying insults against CS and math PhDs?
I haven't done enough Haskell to be part of the community (and to have bought into whatever hostile groupthink you think surrounds it), but I down-voted you just the same for being a complete jerk.
Indeed. There is something very familiar about the tone and content of these posts from haskeldownvot5. There was another individual that achieved a degree of infamy within the Haskell community for posting similar screeds to various forums. The claims that the Haskell community can't accept criticism, the accusations of the same 'lying' about performance, the referring to 'lazy evaluation' as though it were a carcinogen, the aspersions cast against the education of various individuals, both specific and non-specific...yes, all very familiar.
I think there's some interesting psychology at work here. haskeldownvot5 is clearly inviting downvotes by his/her choice of username as well as the contents of his/her posts, but I think haskeldownvot5 has managed to convince himself/herself that there is some cabal within the Haskell community that is responsible for the downvotes. There must be a name for the phenomenon where an individual brings things upon themselves and then uses the criticism/persecution they receive as evidence to the fact that they were right all along.
There must be a name for the phenomenon where an individual brings things upon themselves and then uses the criticism/persecution they receive as evidence to the fact that they were right all along.
I believe that "persecution complex" is the phrase you're looking for.
It's useful to keep in mind that the canonical interpretation is "Avoid (success at all costs)", rather than "(Avoid success) at all costs".
Either way, I personally have the opposite experience: I find that the Haskell community is quite self-critical. Sure, you have the "I have seen the light and I must spread the faith" idiots that all newly-popular technologies gather, but the veterans tend to be quite critical of the failings of the language, and invested in finding ways around them (I do realise this steers dangerously close to a no true scotsman).
Empathy goes a long way in programming discussions simply because for _all_ of us, we often make decisions and hold opinions regarding programming based on gut feel but far less often are honest about the origin of said opinions - falsely attributing them to some "truth" we somehow have come to know.
What I mean to say is, from my perspective, it's quite easy to see why the Haskell community exists as it does - most of the people who criticize it do not understand even the most basic fundamentals of it and simply are not qualified to have an opinion. Just as I am not qualified to have an opinion on anything to do with, for example, graphics programming, many people simply do not have the experience to have said qualification - not a judgement, simply a statement of fact.
Haskell certainly is not perfect nor is it likely the pinnacle of programming languages - however I don't know a single person in reality who believes that to be the case. However this is exactly the persona a significant number of Haskell criticisms seems to attack.
So at the end of the day, when the majority of the criticism against the language is _fundamentally wrong_ in fact and based on false assumptions, it's no surprise criticism isn't as well accepted as with other communities.
Now having said all that, after spending a good part of the last two months actually endeavoring to learn Haskell and functional programming at a practical level - I can tell you there are MANY valid criticisms to be made, and the thing is, if you read Haskell mailing lists and other online communities, you'll find that they constantly are being made and discussed rationally, the only difference is they are coming from people who are clearly familiar with the language, and the concepts they are discussing. These discussions, however, are far less interesting to any tech media because a.) they involve topics and terms few people are currently familiar with and b.) they aren't abrasive or hostile, and that simply is _boring_ to the media.
One final comment - Haskell is not hard to learn, any reasonably skilled programmer willing to step outside their comfort zone could within a month be at a place where they would be qualified to critique the language. Which is the primary reason why it is so frustrating, at least to me, that so few people actually do before writing criticisms of the language.
I'm pretty sure it has to do with comments like these:
Yes, you CS PhDs who secretly wish you were math PhDs wouldn't be able to write toy programs with infinite lists, but that's a small price to pay for lowering the language's skyscraper-steep learning curve and giving it predictable, easily reasoned-about performance characteristics.
Instead of Evil Haskell Conspiracy shutting down your criticism.
He's right though. Real programs run on real hardware, that has inherent limitations, that have to be reflected in the programming language somehow. Law of leaky abstractions and all that.
I agree. The flip side of that is that real programs are written by real humans, who have inherent limitations, that have to be reflected in the programming language somehow. ;)
Haskell certainly leans more toward the "cater to the limitations of humans" end rather than the "cater to the limitations of the machine" end, which is already filled by a whole host of languages like C++, Ada, Rust, D and others.
The "law" of leaky abstractions is bollocks. Haskell, Idris and the like demonstrate this quite thoroughly, by offering abstractions that you can only implement if you provide proof that your implementation satisfies the assumptions of the abstraction.
I'm broadly in agreement with a lot of haskeldownvot5's views (if not his tone); I think laziness is, with the benefit of hindsight, a mistake. But it's not a case of ivory-tower PhDs forgetting that programs run on real hardware; if anything it's the opposite, an assumption that our tools and reasoning would not be powerful enough to allow us to efficiently manage computation explicitly.
Hmm ... let's not get carried away here. The abstraction leaks in Haskell seem to me to be of an order of magnitude less significant than in, say, Python or C++, but Haskell still has them (especially around _|_ and performance).
Idris already demonstrates that you don't have to have Haskell's ⊥ issues or its space leak issues. Idris may still have some leaks (or may not; I can't think of any), but the so-called law, "All non-trivial abstractions, to some degree, are leaky", is out-and-out false.
I think SQL is a far leakier language than Haskell in terms of the correlation between code and performance, but it seems to have achieved a measure of success even in situations where performance is critical.
Comments
The Haskell community is by far the most abrasive and hostile to criticism of any programming language. You can get away with voicing trite complaints about too many parentheses in a thread on Lisp, but nearly any comment here critical of Haskell ends up at < 0.
Attempting to shutdown your critics is a great way to alienate the unconverted. "Avoid success at all costs" indeed.
Perhaps you are being shutdown because you are combining your criticism with condescension and personal attacks? Like deciding that people were being "dishonest" because they don't agree with you and argue for their opinion? Or levying insults against CS and math PhDs?
I haven't done enough Haskell to be part of the community (and to have bought into whatever hostile groupthink you think surrounds it), but I down-voted you just the same for being a complete jerk.
Indeed. There is something very familiar about the tone and content of these posts from haskeldownvot5. There was another individual that achieved a degree of infamy within the Haskell community for posting similar screeds to various forums. The claims that the Haskell community can't accept criticism, the accusations of the same 'lying' about performance, the referring to 'lazy evaluation' as though it were a carcinogen, the aspersions cast against the education of various individuals, both specific and non-specific...yes, all very familiar.
I think there's some interesting psychology at work here. haskeldownvot5 is clearly inviting downvotes by his/her choice of username as well as the contents of his/her posts, but I think haskeldownvot5 has managed to convince himself/herself that there is some cabal within the Haskell community that is responsible for the downvotes. There must be a name for the phenomenon where an individual brings things upon themselves and then uses the criticism/persecution they receive as evidence to the fact that they were right all along.
I believe that "persecution complex" is the phrase you're looking for.
If they knew about the dangers of spaceleaks, then they were being dishonest when advertising laziness as a benefit to performance.
I referred to CS PhDs who wish they were math PhDs, not math PhDs. Math PhDs neither know nor care about Haskell.
It's useful to keep in mind that the canonical interpretation is "Avoid (success at all costs)", rather than "(Avoid success) at all costs".
Either way, I personally have the opposite experience: I find that the Haskell community is quite self-critical. Sure, you have the "I have seen the light and I must spread the faith" idiots that all newly-popular technologies gather, but the veterans tend to be quite critical of the failings of the language, and invested in finding ways around them (I do realise this steers dangerously close to a no true scotsman).
Empathy goes a long way in programming discussions simply because for _all_ of us, we often make decisions and hold opinions regarding programming based on gut feel but far less often are honest about the origin of said opinions - falsely attributing them to some "truth" we somehow have come to know.
What I mean to say is, from my perspective, it's quite easy to see why the Haskell community exists as it does - most of the people who criticize it do not understand even the most basic fundamentals of it and simply are not qualified to have an opinion. Just as I am not qualified to have an opinion on anything to do with, for example, graphics programming, many people simply do not have the experience to have said qualification - not a judgement, simply a statement of fact.
Haskell certainly is not perfect nor is it likely the pinnacle of programming languages - however I don't know a single person in reality who believes that to be the case. However this is exactly the persona a significant number of Haskell criticisms seems to attack.
So at the end of the day, when the majority of the criticism against the language is _fundamentally wrong_ in fact and based on false assumptions, it's no surprise criticism isn't as well accepted as with other communities.
Now having said all that, after spending a good part of the last two months actually endeavoring to learn Haskell and functional programming at a practical level - I can tell you there are MANY valid criticisms to be made, and the thing is, if you read Haskell mailing lists and other online communities, you'll find that they constantly are being made and discussed rationally, the only difference is they are coming from people who are clearly familiar with the language, and the concepts they are discussing. These discussions, however, are far less interesting to any tech media because a.) they involve topics and terms few people are currently familiar with and b.) they aren't abrasive or hostile, and that simply is _boring_ to the media.
One final comment - Haskell is not hard to learn, any reasonably skilled programmer willing to step outside their comfort zone could within a month be at a place where they would be qualified to critique the language. Which is the primary reason why it is so frustrating, at least to me, that so few people actually do before writing criticisms of the language.
I'm pretty sure it has to do with comments like these:
Instead of Evil Haskell Conspiracy shutting down your criticism.
He's right though. Real programs run on real hardware, that has inherent limitations, that have to be reflected in the programming language somehow. Law of leaky abstractions and all that.
I agree. The flip side of that is that real programs are written by real humans, who have inherent limitations, that have to be reflected in the programming language somehow. ;)
Haskell certainly leans more toward the "cater to the limitations of humans" end rather than the "cater to the limitations of the machine" end, which is already filled by a whole host of languages like C++, Ada, Rust, D and others.
I really like this distinction!
The "law" of leaky abstractions is bollocks. Haskell, Idris and the like demonstrate this quite thoroughly, by offering abstractions that you can only implement if you provide proof that your implementation satisfies the assumptions of the abstraction.
I'm broadly in agreement with a lot of haskeldownvot5's views (if not his tone); I think laziness is, with the benefit of hindsight, a mistake. But it's not a case of ivory-tower PhDs forgetting that programs run on real hardware; if anything it's the opposite, an assumption that our tools and reasoning would not be powerful enough to allow us to efficiently manage computation explicitly.
Hmm ... let's not get carried away here. The abstraction leaks in Haskell seem to me to be of an order of magnitude less significant than in, say, Python or C++, but Haskell still has them (especially around _|_ and performance).
Idris already demonstrates that you don't have to have Haskell's ⊥ issues or its space leak issues. Idris may still have some leaks (or may not; I can't think of any), but the so-called law, "All non-trivial abstractions, to some degree, are leaky", is out-and-out false.
I think SQL is a far leakier language than Haskell in terms of the correlation between code and performance, but it seems to have achieved a measure of success even in situations where performance is critical.
Really? I kind of criticised Haskell records a while ago on IRC (they're a bit crappy given whats possible...) and the answer I got was surprisingly:
"Yeah, we know :( We're working on it though: (links to 3 proposals, one of which will become a part of ghc 8)"
To clarify, I was surprised because when I criticised other languages or ecosystems in similar ways I was met with strong pushback, e.g.
1. Go generics 2. problems of node callbacks