Hi everyone, I really am glad to see that we have decided to create a whole thread to pick on that self-admitted Lemmy noob for asking a question–what a loser!!!
noob here, can someone explain why my workplace doesn’t simply use haskell
- Fear of unfamiliar syntax. This is utterly bogus, but I can bet you that if rust used python style layout and haskell style type signatures, it would still be incredibly niche. Something can wipe the floor with the competition, be rock solid, stable and blazingly fast, but if it’s unfamiliar it will be niche. See elm for front end, for example.
- It’s not OOP. The idea that OOP is simpler and solves the interdependency problem persists literally decades after it became painfully clear that it does not. Abstract singleton class factory pattern anyone?
- Steep learning curve and math terminology. It’s not called mappable or container, it’s called functor. It’s not called multimappable, it’s called applicable. It’s not called sequenceable, it’s called monad. It’s not called sequence stack or effect stack, it’s called monad transformer stack. This scares folks no end. (Elm did not make this mistake.)
- Fear of the difficulty of recruiting - it can be really hard to recruit good programmers in popular languages, so wouldn’t it be even harder to recruit in less popular languages because fewer people know them? No. It turns out that offering coding jobs that are based in languages that people genuinely love coding in is a massive selling point for your company, you’ll get people who are very invested applying, and a lot fewer atrocious candidates from third parties.
- Fear of unfamiliar syntax. This is utterly bogus, but I can bet you that if rust used python style layout and haskell style type signatures, it would still be incredibly niche. Something can wipe the floor with the competition, be rock solid, stable and blazingly fast, but if it’s unfamiliar it will be niche. See elm for front end, for example.
But the weird thing to me is that Rust’s syntax is also pretty
familiarunfamiliar since it is (just to start) heavily inspired by ML. Does it really just come down to the fact that it has mandatory curly braces and semicolons? It just seems weird to me that this should be the sticking point for people.Edit: Oops, wrote “familiar” when I meant “unfamiliar”.
It’s certainly a sticking point. People complain about Rust syntax all the time.
Personally, I think its syntax is about as close to C++ syntax as it can be without inheriting some truly horrendous decisions.
That’s a fair point. I have learned so many programming languages and continue to enjoy learning about weird ones that these relatively minor syntax design decisions do not seem like they should be dealbreakers to me, but that likewise means that I am also not the one that they have to worry about appeasing when designing the syntax to attempt to maximize adoption.
Steep learning curve and math terminology. It’s not called mappable or container, it’s called functor. It’s not called multimappable, it’s called applicable. It’s not called sequenceable, it’s called monad. It’s not called sequence stack or effect stack, it’s called monad transformer stack. This scares folks no end. (Elm did not make this mistake.)
God damn I wish we could send you back in time to when whatever idiot came up with monad etc. so you could slap some sense into them!
To be fair, it’s not my insight there, it’s Evan Czaplicki’s.
I should have added lenses. Just when you think you’ve mastered everything because you finally understand what a zygohistomorphic prepromorphism is (but also why your mentor told you that it wasn’t important), along comes the next mathematical abstraction, and that’s perfectly normal for haskell, but this one comes with 200 new operators to memorise and it feels like you were getting to grips with the Greek alphabet when suddenly it would be really helpful if you could also read Chinese characters.
A lot of these operators are things like
+=
and-=
, though, which should not be too hard to remember if you are familiar with C-flavored languages.