Live data from Hacker News

If Haskell is so great, why hasn't it taken over the world? (2017)

pchiusano.github.io

141–150 of 154 posts

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#141

Earlier quoted context omitted.

>In other words, Go is designed for practicality. It shows design consideration to favor engineering To favor 1969-1975's engineering, you mean.

> implying that 1969-1975's engineering was worse than today's

Spoilers: it was (at least in regard to software development)

At least post-1975 software development had the Mythical Man-Month to reflect on.

Furthermore, advances in memory safe languages and type safe languages can both be considered good things. Unfortunately, Go is "almost there but not quite" in these two departments.

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#142

Earlier quoted context omitted.

>In other words, Go is designed for practicality. It shows design consideration to favor engineering To favor 1969-1975's engineering, you mean.

Um, no. Go is designed to make it easier to work with really large codebases - say, 10 million lines and up. I'm going to go out on a limb and guess that you've never had to work in that space. It's really easy to insult Go's solutions when you don't even know what the problems are...

[deleted]

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#143

Earlier quoted context omitted.

> implying that 1969-1975's engineering was worse than today's

Spoilers: it was (at least in regard to software development) At least post-1975 software development had the Mythical Man-Month to reflect on. Furthermore, advances in memory safe languages and type safe languages can both be considered good things. Unfortunately, Go is "almost there but not quite" in these two departments.

lol I'm not discussing with people who come here from /r/pcj and unironically believe in salvation through types.

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#144

Earlier quoted context omitted.

I don't see how that is a big problem.

It's a larger footprint, possibly drains battery when you don't expect, may mess with signal handlers and other global state. And it does not really scale to many libraries. What happens when eveyone thinks theor language is best and wants to link in a big runtime? You need 30 different runtimes for 30 libraries? Ouch. And if not careful about versioning, you could end up with symbol conflicts, etc. All these problem…

Not to mention trying to get different garbage collectors to play nicely together.

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#145
post #89

Because the industry isn’t dominated by well thought out solutions. Most programmers I talk to love the idea of spending time and using the perfect tools to design outstanding solutions to problems. They discuss how much they supposedly like to learn. But when push comes to shove, your 9–5 career growth is probably going to be best optimized by cobbling a bunch of Python together and shipping it. Especially if you wr…

Ironically, here is a Haskell course taught at UPenn, an Ivy league school. http://www.seas.upenn.edu/~cis194/fall16/index.html

Oh yeah, this course is famous! People seem to recommend the Spring 2013 version usually, I'm not completely sure why though.

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#146

Simple: The productivity boost is not worth the time investment. Which will give developers a better return on productivity? 200 hours spent learning Haskell or 200 hours spent learning more about the business domain they work in? 200 hours spent learning Haskell or 200 hours spent improving their soft skills? 200 hours spent learning Haskell or 200 hours spent networking? Etc.

Indeed.

Though, will 200 hours spent learning Haskell gain you, well, anything productive?

Surely a non-genius would require at least 1000.

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#147

From my own experience, Haskell is hard to learn. I have no grounding in maths, but that hasn't stopped me learning most languages. It's a pretty massive barrier to Haskell though, and I find that a lot of the community really struggle to explain things in terms that non-haskellers will understand. The biggest problem I've found is a real inability to explain _why_ the things it does are cool, or what real-world appl…

> I just don't feel like Haskell fills that requirement.. About readability, Haskell in unreadable until you understand some basic precedence rules really well and until you internalize a hand full of things like function composition operator or the $ thing. Then it becomes extremely readable. Think of writing in shorthand [1]. For someone who does not know it, it looks quite cryptic. But once you internalize it, it…

Shorthand isn't necessarily a good act to follow, as most shorthand requires a solid understanding of context, and it's not uncommon that the person who wrote the shorthand is the only one who can completely understand it in original form.

Personally, I'm familiar enough with Haskell to be able to slowly work my way through most code, but I'm not at the level where I would be confident in writing anything but simpler programs.

I find idiomatic Haskell suffers from what I call "have to limit my line length-itis" - i.e. "Ord" instead of "Ordered", using "x" and "xs" as identifiers instead of e.g. "first" and "rest". This makes for compact code, but not necessarily very readable code. And for anyone who wants to tell me that it's closer to mathematic notation, well, frankly, maths could take a few hints from modern software engineering about readability.

Then there's the dissonance between actually declaring an algorithm a la Haskell/FP, and actually describing how the algorithm works.

It is sometimes nice to declare algorithms compositionally. This thing I want is the max of this joined on to five of these filtered by this criteria. Lovely. But opaque as to the implementation.

I've found that in my experience with most software I write, the parts where the exact implementation isn't that important don't take a long time to implement. Immutability, idempotency, and removing side effects can work just the same in non-FP languages here. The other parts, which almost always involve some sort of IO, require very precise control over implementation, or state, or timing, and are often very difficult to declare with "is" - sometimes the only sensible way I can seem to think of them is a series of processes.

When I try to implement this sort of thing functionally it feels like a retrofit, and never as elegant as the simple imperative "do this, then this, then that".

I'm not trying to be anti-Haskell or anti-FP - I love and use FP principles every day. But I'm definitely in the camp that thinks "pure FP" is the best solution to only a small set of problems.

To me, where Haskell fails is that it has very little to offer for these imperative problems. Which, for many applications, makes it almost worse than even a crappy old imperative lang.

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#148

Earlier quoted context omitted.

>In other words, Go is designed for practicality. It shows design consideration to favor engineering To favor 1969-1975's engineering, you mean.

Um, no. Go is designed to make it easier to work with really large codebases - say, 10 million lines and up. I'm going to go out on a limb and guess that you've never had to work in that space. It's really easy to insult Go's solutions when you don't even know what the problems are...

>I'm going to go out on a limb and guess that you've never had to work in that space. It's really easy to insult Go's solutions

It's really easy to insult my opinion as well. I do have worked in really large codebases.

The only thing where Go helps "really large codebases" is quick compile times. But it is really easy to create a fast compiler when the language is anemic in features, this is no feat at all.

If Go wanted to be useful for "really large codebases" it would have supported good exception handling (take a look at Common Lisp for exemplary exception handling), for a start. And don't get me started on the horrible kludge of using interface{}.

And for "really large codebases" you want to keep mindless boilerplate code repetition -which is the noise that puts haze over the signal- close to zero. Go has many design choices that do exactly the opposite -- increase boilerplate to the max.

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#149

Earlier quoted context omitted.

Um, no. Go is designed to make it easier to work with really large codebases - say, 10 million lines and up. I'm going to go out on a limb and guess that you've never had to work in that space. It's really easy to insult Go's solutions when you don't even know what the problems are...

>I'm going to go out on a limb and guess that you've never had to work in that space. It's really easy to insult Go's solutions It's really easy to insult my opinion as well. I do have worked in really large codebases. The only thing where Go helps "really large codebases" is quick compile times. But it is really easy to create a fast compiler when the language is anemic in features, this is no feat at all. If Go wan…

> It's really easy to insult my opinion as well.

Fair enough, and somewhat deserved. (But only somewhat - your tone kind of led me into temptation. Still, I apologize.)

> The only thing where Go helps "really large codebases" is quick compile times.

Which was, in fact, explicitly their intent. In comments on this same article, people have been complaining about how long it takes to compile GHC. How long would it take for Haskell to compile a 10 million line program? For a program that has, say, 50 people working on it, and that lives for 20 years, that adds up to real money.

Now, you could argue that, if go didn't increase boilerplate so much, you wouldn't have so many lines to compile. That's a fair criticism. Still, just focusing on compile times, would you rather compile 10 million lines at Go's speed, or one million lines at Haskell's?

> But it is really easy to create a fast compiler when the language is anemic in features, this is no feat at all.

The "feat" is choosing to focus on compile time rather than on features.

I disagree with you on exceptions. Go's error handling approach means that you only have to worry about your function and the functions you directly call. Java's approach (or worse, C++'s, since the exceptions are unchecked) means that you have to worry about what every function in the call graph can throw. As the size of the program increases, knowing everything that can be thrown by everything you call becomes unreasonable. (I don't know enough about Lisp's approach to know whether it suffers from this problem or not.)

Re: If Haskell is so great, why hasn't it taken over the world? (2017)

#150

I spent a large amount of personal time becoming an intermediate Haskell developer from 2009-2015, culminating in landing a job doing exclusively functional programming for an analytics team in a large company. My experience made me give up on Haskell & functional programming entirel, despite my feeling that the principles of functional programming are often “better” than object orientation and other paradigms. The o…

>The only language-specific thing that turned me off of Haskell in a significant way was that so many important concepts in Haskell are implemented via pragmas that extend the language and either enforce syntax restructions, enable totally new (and often esoteric) syntax, or change the meaning of existing syntax. god the ghc extensions. good luck figuring out why something is happening that you don't expect.

What? They are opt in per module unless you manually enable them globally. Anyways the entire reason Haskell was created was to be a base for future language research. The extension system was largely the point.
Post reply on HN