3 ms·
I often wonder what is it that keeps Haskell out of the mainstream as a development language. There seems to have been enormous popular support for Haskell by e
by SeanDav 10y ago
I often wonder what is it that keeps Haskell out of the mainstream as a development language. There seems to have been enormous popular support for Haskell by experts over quite some time, yet relatively newer languages like Golang are coming along and eating Haskell's lunch.
- posterboy 10y agoOne point might be, that Haskell thinks big. Its strengths might not be too noticeable with smaller projects and be problematic because of a steeper learning curve. The inertia is huge. Imperative programming has a lot of momentum, because it reads more or less like text, not maths. A steep learning curve means effectively more power. And that means responsibility. If modularization means separation of concerns, and thus less responsibility, lack of power is largely mitigated, but it puts the responsibility on the s/w-architects. Just like LISP's strength supposedly is revealed when it's the whole OS. And as they say, any involved program will contain an ad-hoc implementation of LISP :) C, eg., also resembled the hardware architecture more closely. With concurrent programming, though, we see more functional influences creep into the staple languages. It's the other way around with Haskell's do notation. Anyway, as a research project, it is rather academic. Therefore it is often not backwards compatible, which is an immediate show stopper and also shows that it's far from finished, due to its bigger goals.
- RubyPinch 10y agoProbably the whole needing to learn an entire part of English that many didn't even know existed before. A language really shouldn't require its language-specific glossary to be mandatory reading, just to understand anyone speaking about it. I could just learn any other language in half the time! from the above comments > "I have this pure function that I want to apply to the inner value of my functor" pure function I know well enough, that is the same for any language, functors though... is that a function object that can be applied to something? then why does it already have a value? I can take terminologies from C, to python, or C#, and feel a-okay, but haskell kinda feels like it went and shut it self away from the world, and its terminology developed differently due to that, I guess.
- 14113 10y agoHaskell terminology is based on the mathematical underpinnings of its type system. It's due to this that those unfamiliar with the maths often have trouble at first grokking the terminology. It's not that Haskell shut itself off, it just draws it's vocabulary from a different source than the other languages.
- RubyPinch 10y agoI am aware it didn't invent the words, it was more of a "feels like" statement, as opposed to literal
- greydius 10y agoYeah, this is why I didn't become a surgeon. They have so many invented words for all the different parts of the body and diseases. Seriously, why call something a metatarsal when "foot bone" works just as well?
- JoeAltmaier 10y agoActually, "middle toe bone"
- eggy 10y agoJ is a very functional language used a lot for mathematics and statistical analysis, and it uses more familiar terms for the language like 'verb', 'noun' 'adverb', and 'conjunction' as just some of the terms, as compared with Haskell. J can be very terse, and people don't take kindly to the ASCII character set used as symbols ala APL to perform function composition. It's called line noise in defamatory circles, which is also directed at its cousins K and Kona and others. Haskell uses a lot of terms specifically from Category Theory. People in the J community are very mathematically inclined, and usually work on different fields of mathematics. I am working on geometric algebra (Clifford Algebra) in J. I find the J documentation much more friendlier than Haskell's docs. And J has several IDE's that come bundled with it: JQT - a QT Gui with syntax highlighting, a help section, a minimalist project structure; JHS - a web-based IDE with hooks to D3 vs. the standard plot in JQT; and there is a Python-based IDE (JQide). There are labs that walk you through chapter-based examples in the interpreter's REPL. One of the newer labs uses videos that go along with the lab in the console, all part of the J ecosystem. I personally think that Haskell will maintain that purity of purpose, and not get diluted enough to be picked up by the average coder. Even J remains obscure after decades too, but I am hoping that all of the array hoopla (GPUs, big data, machine learning) will bring it to the forefront as a more natural fit, since its native unit and structure is based upon arrays.
- drivebyops 10y agoGolang is simple and most graduates would be familiar with the style (C with some extras) Haskell is radically different for people
- rifung 10y agoI think it's because the needs of industry and academia (or hobbyists?) or rather different. Onboarding and hiring are much more important in industry and both are much harder with Haskell because most people aren't nearly as familiar with functional programming as they are with imperative programming. Most somewhat experienced developers could pick up Golang in a day or two, having come from C++/Java, but learning Haskell is much more daunting, at least in my personal experience. I don't feel like Golang really brings anything new to the table, it just takes away stuff, which isn't a bad thing. However, learning Haskell was really eye opening to me, and yet, even a year later, I feel somewhat comfortable writing code but I am only beginning to try to learn performance analysis and think about laziness. I mean, imagine hiring someone who's only used imperative languages and telling them to start writing code that doesn't use for loops or if statements which don't have corresponding else statements.