9 ms·
I strongly dislike Haskell's focus on theory. Just show me examples on how to get things done and then the concepts will become clear. The Haskell and mathemati
by jtwaleson 5y ago
I strongly dislike Haskell's focus on theory. Just show me examples on how to get things done and then the concepts will become clear. The Haskell and mathematics communities too often act like ivory towers that humans have to become enlightened to understand, and that simply is not how my brain is wired. I'm not sure of there have been any studies on the usability score of languages, but I think that Haskell would come out very, very poorly. There's a reason why python is so popular.
- sfvisser 5y agoPython is probably easier to learn for most beginners, but that doesn’t mean it’s easier to write programs in. Context matters when talking about usability. I’ve used functors and monads to solve tons of issues and have literally no clue about the theory behind them.
- jtwaleson 5y agoAgreed. Haskell solves real problems and it's quite a good language once you learn it, it's the cultural focus on theory rather than humans that I don't like.
- mmis1000 5y agoBut the tutorials simply ignores the real world use case. Lots of concepts are actually useful for solve problems (even in other language). You need to give the reader some real world example. A concept dangles in brain without connects to other things won't live too long. You brain is likely to `optimize it out` because it is unused.
- lallysingh 5y agoI thought "Real World Haskell"did just that very well.
- mchaver 5y ago> it's the cultural focus on theory rather than humans that I don't like. That's completely fine. Haskell is not a single community. There are two big camps that often interact with each other, the academic and the industrial. Keep in mind the origin of Haskell is academic and it's original purpose is to test and implement ideas from Programming Language Theory. That is still there and will continue. GHC optimizes for letting people experiment with language extensions. Industrial interest didn't start to grow until somewhere around 2008-2012. It is a small community and will likely remain so. I am a big Haskell user myself. There are many theoretical things I don't understand or need to touch, but I appreciate their contributions to the language and the community. I do agree that Haskell has lots of room to improve on tutorials for non-academics. Maybe I will get inspired to write somethings. It's completely fine if you don't want to use it. However, you may find Haskell users' enthusiasm for the language insufferable, hehe. I do hope anyone who chooses to interact with the Haskell community finds us welcoming.
- inimino 5y agoIf you have engaged with the Haskell community (I mean, actually talked to folks as you learn or use the language) and you came away with this impression, I would be very surprised. To learn Haskell, just do it, you don't need theory. For people who are interested in it, it's there.
- smitty1e 5y agoWhat I haven't ever really seen is a good Haskell Cookbook. All the references seem to head for the ozone. Show me dumb little grounded snippets.
- pyrale 5y agohttps://typeclasses.com/phrasebook https://typeclasses.com/phrasebook
- lallysingh 5y agohttp://book.realworldhaskell.org/ http://book.realworldhaskell.org/ does this in a tutorial style.
- deleted 5y ago[deleted]
- vishnugupta 5y agoFor the context: Haskell was 4th or 5th language I learnt and the first pure functional one. My graduation thesis work was in Haskell and its backend/compiler so at one point I was living/breathing Haskell. > ...too often act like ivory towers... I 100% agree with this. The Haskell community as a whole and various tutorials etc., aren't optimised for a new comer. For instance, you don't see a "stand up a web app in Haskell in 10 minutes" tutorials. Historically it may have worked in Haskell's favour to slowly induct learners, but in this age where languages are fighting for mind space I don't agree that's a good approach anymore. Simon Peyton Jones (SPJ), an earliest and a famous champion of Haskell coined the phrase "avoid success at all cost" in a certain context which may have had some role in making Haskell seem Ivory Towerish. A language, like any living being, needs to adopt to survive and thrive. It's unfortunate to see Haskell remain a niche language even after close to 3 decades. > and that simply is not how my brain is wired. This, however, I disagree with. I mean in a general sense, not specific to how your brain is wired. It all depends on the first couple of language that one learns and how they are learnt and taught. 10-15 years ago people would find it hard to grok Python's functional concepts. But as it began to be taught as the first language in universities and those graduates join the working population you see how it's super natural for them to grok Python.
- wsc981 5y ago> This, however, I disagree with. I mean in a general sense, not specific to how your brain is wired. It all depends on the first couple of language that one learns and how they are learnt and taught. 10-15 years ago people would find it hard to grok Python's functional concepts. But as it began to be taught as the first language in universities and those graduates join the working population you see how it's super natural for them to grok Python. That must be the reason why Edsger W Dijksta once stated [0]: > "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." ... and ... > "The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense." ... and .. > "APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums." I must be one of those mentally mutilated programmers with no hope of regeneration :) --- [0]: https://www.cs.scranton.edu/~mccloske/dijkstra_quotes.html https://www.cs.scranton.edu/~mccloske/dijkstra_quotes.html
- pyrale 5y agoThere is no real focus on theory in the language itself, but a significant part of the community, indeed, enjoys it. For balance, here's another common opinion about tutorials: http://dev.stephendiehl.com/hask/#eightfold-path-to-monad-satori http://dev.stephendiehl.com/hask/#eightfold-path-to-monad-sa... > [...] > Read the monad definitions. > Use monads in real code. > Don’t write monad-analogy tutorials. In the end, the two opinions about learning monads coexist, and people have done fine following either way.
- ebingdom 5y ago> I strongly dislike Haskell's focus on theory. First of all, I completely understand where you're coming from. But the fact that Haskell embraces computer science, unlike most other programming language communities, is what attracts me to it the most. I can geek out about the mathematics that leads to simpler, safer software with like-minded people. I am always learning from Haskellers more than from any other programmers. But it does take a lot of learning and unlearning to become a fluent functional programmer. This isn't because functional programming is more complicated than other paradigms (au contraire), it's because schools and universities have been mostly teaching OOP for the past 2-3 decades—unfortunately. As a result, most programmers have such a big gap in their knowledge that it can feel too daunting to dive in. We could definitely do a better job teaching the theory and explaining how it's useful. That would be better for everyone: better for curious minds who want to expand their programming skills, and better for me because I'd have more company to discuss it with.
- tsimionescu 5y agoHaskell embraces PLL. Computer science is much larger than PLL, and much of it ignores PLL entirely. In particular, most algorithms research and papers are expressed in imperative pseudo-code, as that is, in fact, much easier for humans to intuitively reason about than complex category theoretical concepts.
- ebingdom 5y ago> much easier for humans to intuitively reason about than complex category theoretical concepts. We're not talking about any complex category theoretical concepts here. Functors, for example, are one of the first ideas one would learn in a category theory course. Likely even in the first lecture. Even the most advanced functional programs use only the most basic categorical constructs. And when you say "imperative pseudo-code", you've already conjured an implicit monad involving state, I/O, etc. Functional programming just teaches us that it's not the only one—and there are simpler ones that may be more appropriate for the given situation.
- 5y ago
- pwdisswordfish8 5y agoThe thing about learning from examples is that it’s far too easy to learn the wrong thing from them, or nothing at all. When writing examples, one has to spend additional effort on explaining which parts of the example are ‘moving parts’ and which are ‘fixed’, i.e. which elements of the example are inherent to the problem you’re solving, and which are just placeholders you should replace with your own. Many don’t bother; it’s why every Medium ‘tutorial’ basically reduces to ‘here’s a bunch of code you can copy-paste without understanding’. With a ‘theoretical’ description, like a BNF grammar or a Unix man page listing every possible option the program accepts, this is immediately obvious. Haskell’s focus on ‘theory’ follows the same philosophy.
- 3grdlurker 5y agoIn terms of learning I’m the exact opposite. I like to start with theory, then apply it into practice to affirm that the theory is correct (or that it isn’t, and then make my own improvements). Not starting with theory feels too much like being directionless to me, or creating your own theory/mental model of what happened, which could be and is often wrong. In any case, all knowledge needs to be elevated to some level of theory because a correct theory guarantees the repetition of correct application.
- tarsinge 5y agoIt's the same for me. I don't know Haskell yet but it reminds me the hard time I had with mathematics in school. It all changed when I started self-studying by first doing learning to do exercises and memorizing properties, and then learning the theory afterwards. For example I really enjoyed the first Andrew Ng machine learning course on Coursera, where you learn to do matrix calculations and backpropagation by hand for practical applications without much theory. It was great for building the intuition first.
- baby 5y agoI’ve been learning OCaml recently and have been really frustrated with the same issues. I’ve been writing this page for people like me who want to learn through examples: https://o1-labs.github.io/ocamlbyexample/ https://o1-labs.github.io/ocamlbyexample/ (still a work in progress).
- aszen 5y agoIf you want to just get things done, and then learn the concepts of fp, I always suggest using elm. In elm I had been using andThen functions without even knowing they were related to monads.
- amelius 5y agoHaskell folks are just regular IT folks who missed their calling by not becoming mathematicians.
- choeger 5y agoUsable for what, though? If the criterion is correctness, I'd bet good money that Haskell would beat python in any fair comparison. Just because there are languages that let you forget the complexities of your domain doesn't mean these complexities vanish when you use said languages.