6 ms·
Condescending tutorials seem to be an integrated part of Haskell culture. The rationale might be that people who don't already know Haskell should to talked to
by goto11 7y ago
Condescending tutorials seem to be an integrated part of Haskell culture. The rationale might be that people who don't already know Haskell should to talked to like kids. "Don't be scared, a monad is just like a Burrito!" and so on.
I can't recollect I have ever learned a programming concept through metaphors. The only way I have learned concepts is though solving tasks in a language and thereby learning to use the tools available.
I actually think Haskell is a very enjoyable language, but there is a culture around it which treats the type concepts (arrows, monads etc.) like goals in themselves rather than tools to achieve something useful.
- tome 7y ago> Condescending tutorials seem to be an integrated part of Haskell culture. Could you perhaps link to one? I know of plenty of misguided tutorials that try to be helpful but aren't. I've never come across one I'd call "condescending". > I can't recollect I have ever learned a programming concept through metaphors. The only way I have learned concepts is though solving tasks in a language and thereby learning to use the tools available. Yet for some reason newcomers (reputedly) want to know what a monad is before trying to use one! I agree with you: they should go ahead and use one and not worry about what it is!
- pram 7y agoIt's not unique to Haskell, and I wouldn't say condescending. More like patronizing and a little infantile. 'Learn you a Haskell' is in the same tone. Ultimately most of these are just imitations of the 'poignant guide to ruby' which is probably responsible for starting the trend of whimsical and zany programming guides.
- goto11 7y agoYou need to use the IO monad to write "hello world". So it is naturally the first question a newcomer will ask. But for example "Learn you a Haskell" http://learnyouahaskell.com/chapters http://learnyouahaskell.com/chapters postpones "hello world" to chapter 9, after explaining things like type classes. So the reader is expected to read and understand 9 chapters before writing the first program? This is ridiculous - I certainly wouldn't be able to learn anything that way.
- tome 7y agoI'm sorry, I don't understand which part of my comment you were replying to.
- goto11 7y agoYou are suggesting that newcomers to Haskell should not care about what a monad is. I'm pointing out that tutorials like "Learn you a Haskell" are trying to explain monads before even getting to "Hello World".
- tome 7y agoWell then, as you already know I agree with you that this is absurd! > Yet for some reason newcomers (reputedly) want to know what a monad is before trying to use one! I agree with you: they should go ahead and use one and not worry about what it is!
- chrisoverzero 7y ago> [...] trying to explain monads before even getting to "Hello World". Chapter 9: Input and Output Chapter 12: A Fistful of Monads No, that doesn't seem to be the case to me.
- pwm 7y agoSure you need to use the IO monad to write "hello world" but you don't need to understand what it does in the background. #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World!\n"); return 0; } class HelloWorld { static public void main(String args[]) { System.out.println("Hello World!"); } } main :: IO () main = print "hello world" Hello worlds in C, Java and Haskell. I can write them and run them without needing to fully understand what's behind "*argv[]", "static public void" or "IO ()".
- Elrac 7y agoLet's be fair to Haskell and LyaH: I've taught some Java classes. I can get people writing and running trivially useful code before explaining the concepts of "class" and "static". I explain that parts of the code will remain a mystery for a little while until I explain them, I promise to do so, and of course I fulfill that promise as soon as I can. I feel neither Java nor Haskell are intrinsically bad just because there's no practical way to teach them completely on progressively layered concepts. Even (e.g.) Lisp has a risk of using special forms before understanding them.
- AnthonBerg 7y agoThe only condescension I see in Haskell-related discussion is condescension towards Haskellers, claiming that Haskellers are condescending and say condescending things like writing condescending tutorials. As I see it it’s actually not very nice. With the utmost respect, truly, humbly: I am against this custom that it’s just fine to call well-meaning people for condescending. As it appears to me, claiming condescendence is more of a statement of the claimant, but this is still an unfortunate custom. Who are we really to claim condescension? Really? The article linked to in the post starts off with quotes from people who directly state that they feel like they would need to be smarter to use Haskell. It’s a common thing. The article addresses that. It is literally the opposite of condescension. Then there’s the burrito tutorials with pictures. I for one actually think in weird abstract sloppy metaphors and colors. My head really is full of burritos and inaccuracies. I was helped enormously by the burrito concept. Textbooks generally don’t speak in burritos. I work with people to whom the burrito class of analogies is not helpful. They think in a more direct and crystalline way. I wish I were more like them. And I try try to be. And I can. And it makes me better. And I really do think I also bring something to the table by spraying flaming burrito concepts and lateral jumps into the team zeitgeist.
- goto11 7y ago> I was helped enormously by the burrito concept. OK fair enough, I can only speak for myself and the way I learn concepts. The way I learn a new language or platform is always to try to write a real program that does something. I am only able to lean concepts when I can see their usefulness. But I should recognize that other people learn in different ways.
- AnthonBerg 7y agoI want to add that I actually do see how it comes across as condescending. After this exchange and thinking about what you wrote. idk, like, “Here, look at these kiddie pictures, those are suitable for you, and then I’ll withhold the real work ok?”
- platz 7y ago> My head really is full of burritos Not such a bad life, if you ask me.
- scotty79 7y agoThe one thing that made monads clearer for me was this thing https://youtu.be/b0EF0VTs9Dc https://youtu.be/b0EF0VTs9Dc Monads and Gonads It's probably condescending for haskellers because it shows that monads are not some enshrined primary concept but just a kind of dumb wrapper you can write in any language and you do when it's useful for you.
- wbl 7y agoExcept that most commonly used languages dont let you have polymorphic typing so the whole point is lost.
- ducaale 7y agoComparing monads to burritos https://chrisdone.com/posts/monads-are-burritos/ https://chrisdone.com/posts/monads-are-burritos/
- goto11 7y agoWhat confuses me with these tutorials is - who is the intended audience? A person who know what a functor is but doesn't know what a monad is? A person who doesn't know Haskell by do know what >>= means?
- willtim 7y agoThose weekly Monad blog tutorials probably annoyed the Haskell community more than anyone. Extremely readable and well written papers had already been published by the Haskell community (e.g. Phil Wadler). Read the papers first.
- crimsonalucard 7y ago>I actually think Haskell is a very enjoyable language, but there is a culture around it which treats the type concepts (arrows, monads etc.) like goals in themselves rather than tools to achieve something useful. I get it though. The concepts are so advanced that you have to internalize the concept first before it can even be used.
- tome 7y agoActually not. It's very hard to internalize the concepts before you've used them!
- crimsonalucard 7y agoYes, I get it, but for Haskell the concepts are so abstract you need to internalize the concept before you start using it.