11 ms·
So, to summarise: - It is an accomplishment if you get your basic project setupped in 2 weeks - It is very hard to make popular libraries work together - 1/3
by ssijak 6y ago
So, to summarise:
- It is an accomplishment if you get your basic project setupped in 2 weeks
- It is very hard to make popular libraries work together
- 1/3 of the popular libraries are not well maintained, there are no docs and maintainers do not reply to PRs
- It is hard to use latest GHC versions because of the previous problem
- It is hard to get additional devs
- Compile times are ok-ayish but can be a pain
- There is no good IDE and refactoring
But it is still somehow "the best general purpose language"?
And don't get me wrong, Haskell is on top of my list of purely functional languages that I would like to learn.
BUT, if I want to build an actual app and try to earn money from it I would just use something that is very popular, well maintained, easy to push features, easy to deploy and find additional devs for. For me it is ReactJS on the frontend and Kotlin on the backend. OR it is a jackpot if I could just make it in something like NextJS. Haskell can wait for when I earn enough money with other languages so that I can just play with it and satisfy my own engineering itch without any production expectations I have from other languages.
- yoneda 6y agoOne of my favorite qualities of the Haskell community is how honest they are about the weaknesses of the ecosystem (we often discuss issues like these, e.g., on r/haskell or in mailing lists). These are legitimate concerns, but the fact that the author is happy with their decision despite these drawbacks is a testament to the language itself.
- apples_oranges 6y agoGood point, that's actually also what I sometimes notice. People complain about something, but still use it. I then think: I have to check it out!
- alpaca128 6y agoOr as Bjarne Stroustrup worded it, "There are only two kinds of languages: the ones people complain about and the ones nobody uses" And in fact very detailed criticism can be a good indication that the person is not some beginner frustrated with "that bad feature" but a developer who cares a lot about the technology but is also realistic about the things that aren't as good as they could be.
- Kototama 6y agoIt has some truth but it brushes away any attempt at criticizing the C++ language and completely ignore that different languages have different level of satisfaction.
- seanparsons 6y agoI'm not sure where you got the second point from, certainly in my experience it hasn't been a bit issue with Haskell. The third point is the same with just about every ecosystem in my experience, there are libraries written by big open source contributing companies which are completely dead as far as maintenance. I've even been bitten _this week_ by a JS library which is dead in the water.
- watt 6y agoSounds like the difference between the language vs the ecosystem. Compare and contrast how happy are users of Java the language vs JVM the ecosystem (Clojure, Scala, Kotlin, etc).
- ssijak 6y agoActually Java the language is pretty ok nowadays. And taking into account mature ecosystem, libraries, jvm and IntelliJ IDE, Java is enjoyable to work with.
- BoyRobot777 6y agoWith records, multi-line strings, and upcoming pattern matching + virtual threads, I hardly see any need to switch languages. I really enjoy working with Java and JVM ecosystem which is very vibrant and has a plethora of tools/libraries. I'm happy when I'm productive and ship stuff. I'm unhappy when I have to struggle with obscure/undocumented libraries/tools.
- StreamBright 6y agoI would totally pick Kotlin for my next project if we haven't invested into F# / .Net so much AND if we were not happy.
- WJW 6y ago> BUT, if I want to build an actual app and try to earn money from it Not the author, but my reading of his motivations was that the "challenging to learn, but extremely fun to write" part is way more important to them than the "best general purpose language". If your main motivation is to make as much money is as little time as possible then JS or Rails might get you off the ground sooner (although Haskell might catch up in the long run when the type system really starts paying off). If you enjoy programming in Haskell and are looking to have a good time while building your startup, more power to you for using the language you like.
- rowanG077 6y agoThis is true. I really love Haskell but I can still get some prototype or small script up and running faster in Python. But that speed flips once you have a larger system and need to maintain it.
- agentultra 6y agoWith enough experience the speed flips around again. I often use Haskell to prototype things now instead of JS or Python because I don't have to deal with run-time type errors or undefined and the like. I can just write out the types, add some instances, compose things together and get feedback from the compiler if I'm on the right track. For me it's a much faster feedback loop than JS or Python.
- WJW 6y agoI still wonder about this. I'm competent enough at Haskell to have made several additions to GHC itself, though I readily admit I'm no SPJ. I also believe that for a general purpose program, Haskell _should_ be a good choice. But in practice I make mostly web apps and no amount of "write down the types then fill in the gaps and compose it all together" can replace the amount of scaffolding that things like Rails give me.
- rowanG077 6y agoIt's not really about productivity in the language itself. It's more about the library ecosystem. Numpy and scipy are just so good and nothing really compares. I'm not skittish on writing the algorithm I need myself in Haskell. But when I'm prototyping and quickly trying stuff it's just so much faster if I can call a function and be done with it.
- alexmingoia 6y agoI think his two-week setup time is due to choosing to use libraries and architecture he didn’t understand or worked with before (rebase, fused-effects). I make webapps in Haskell and it takes me 5-10 minutes to setup a project, since I already know what to do. - “The ‘monad’ abstraction is excellent for dealing with code with a lot of failure conditions (ie. parsing) and avoids ‘pyramid of doom’ type code. Haskell worked out really well in this key area.” - “Another strong positive for writing Deadpendency was testing. Haskell has a lesser-known style of testing libraries that do ‘property based testing’ (PBT).” - “Haskell is very safe to refactor thanks to the type safety the compiler brings, which is probably the most important thing.” - “My core Haskell had very few logic bugs. This is because Haskell is very safe by default and I had opted into strict types that help catch edge cases” - “At this point I think it is actually pretty stable. I consider the project a big success. A huge part of this has been due to Haskell and its excellent ecosystem.”
- ritchiea 6y agoIt doesn't take 2 weeks to set up an app in a language with a big community of developers, well maintained libraries and at least decent documentation. It probably takes a day or 2. Maybe a bit more if you are venturing into a new ecosystem like switching from Java backends to a node.js backend. I loved learning Haskell in university. It's an interesting language. I came into intro CS class thinking I could already program & the class would just be about sharpening my axe. Then my intro CS class started with Haskell which threw my brain for a loop and made me think about programming completely differently. That was a great intellectual experience and good for my long term thinking. Haskell also seems like an incredibly impractical choice for a production language that only a stubborn purist would make. Of course the last bit is purely opinion, your experience may vary.
- yughurt 6y agoWhat intro cs class uses Haskell as its first language!
- momentoftop 6y ago
- gampleman 6y agoI've definitely also found that getting a project nicely setup can be a challenge in Haskell. That said, I don't see that as a huge weakness from a "pick an ecosystem for writing a production app" point of view. 2 weeks is peanuts in the grand scheme of things and it's a task that you will likely be doing exactly once, so optimising for it has very diminishing returns.
- adamzerner 6y agoThat is only true if you know you're going to be working on something for a long time. But if you're taking the lean/fail fast approach, it isn't something you can know ahead of time.
- mrkeen 6y ago> But it is still somehow "the best general purpose language"? Yes.
- haskellandchill 6y ago> - It is hard to get additional devs Hey you just threw that in yourself. That's cheating! I think it's actually easy to get Haskell devs. I'm capable and I apply to every Haskell job. I never get hired so I imagine companies have no trouble finding other even more capable Haskell devs.
- StreamBright 6y agoYes. We let some features and monads go and picked F# instead of Haskell. >> It is an accomplishment if you get your basic project setupped in 2 weeks More like two hours if you absolutely cluless. - It is very hard to make popular libraries work together Not an issue. - 1/3 of the popular libraries are not well maintained, there are no docs and maintainers do not reply to PRs Not an issue. - It is hard to use latest GHC versions because of the previous problem Not an issue. - It is hard to get additional devs Same. Few F# devs out there. - Compile times are ok-ayish but can be a pain Not an issue. - There is no good IDE and refactoring Not an issue (VS, VS Code, and a few dozen others) I know it is not as strict as Haskell but we have really a good time so far.
- hibbelig 6y agoFor someone new to the language, pretty good I would say.
- mw888 6y agoCherry picked much?