Hacker News new | ask | show | jobs
by dsabanin 2113 days ago
My theory, based on a lot of experience, is that average developers are not “smart” enough to learn it, beyond simple tutorials. By smart I don’t mean IQ, but rather drive, intellectual curiosity and desire for a challenge, that I think is required for learning something so different from mainstream languages.
5 comments

What is lacking is payback.

Having developed Haskell skills, what can one then do with them? Who in the world wants to have any Haskell code written badly enough to offer to pay to have it done?

If Rust dies, it will die just exactly the way almost every language did: its adoption rate was two or more orders of magnitude too slow, and the world moved on.

This is not inevitable: there are many other ways languages have died. Ada had a formal spec, billions of dollars in development contracts backing it, many industrial-grade compilers, thousands employed coding in it. It died because, ultimately, it wasn't enough better than C.

PL/I died. Algol died. All the various Pascals died. Ruby is in sharp decline. Death is the natural course for languages. Overcoming death requires a near-miracle.

COBOL, Fortran, C, C++, Python, Java, and Javascript managed it. It is too early to tell about Go or Rust, but it is not looking good for Rust, just based on the numbers. Rust's originators hoped to displace C, but very few move from C. Most who might have moved on from C did before there was a Rust, and the rest like it for its flaws, the way rock climbers like cliffs.

Rust will take few from C++ because Rust is less expressive, by design. The gap widens with each Standard release.

The languages Rust can practically steal users from do not suffer from the memory-safety problems Rust is promoted as solving. They have other problems it could help with. Go and Java are pathologically weak languages, and Python is pathologically slow and un-parallel.

There are things Rust adherents could do to increase its adoption rate, but they seem, by all indications, supremely and aggressively uninterested in even trying any of them. HN buzz, which Rust fans have run up to stratospheric heights, is very far from enough to sustain a language. So, Rust's prospects are dimming even as its apparent popularity peaks.

I see Rust as being a very influential language intro bringing affine types into mainstream languages, which eventually made other language communities look up how to improve their approaches to resource management.

Examples being Swift, Ada/Spark, C++ lifetime analyzers, Chapel, ParaSail.

Then there are the Haskell, OCaml, Pony, Verona, Nim, D, Nim efforts on how to combine the best of both worlds GC (in whatever form) + affine types when needed.

But taking the world by storm and actually replacing C++ across Fortune 500's, specially given the contribution of many of them to ISO C++ and industry certifications, I see that as a multiple decades effort and even, as we can see from C++'s failure to take over C in certain domains, it is going to be a very steep uphill battle.

So in the end, we might just happen to get the usual mainstream languages with improved capabilities for managing resources, just like Haskell happened to bring LINQ to .NET world, followed by influencing Java streams and C++ ranges.

> Having developed Haskell skills, what can one then do with them? Who in the world wants to have any Haskell code written badly enough to offer to pay to have it done?

Are there any languages you can immediately answer these questions for? Are there any popular languages you can't answer these questions for?

I have some ideas, but I want to nail things down a bit more before attempting an answer if you don't mind.

About once a week I get a note from another recruiter offering, for C++ coding, north of a half $mil per annum from a certain hedge fund with a reputation for high turnover.

And of course we all get our monthly calls from Google recruitment contractors to come code Google's special subset of C++. Google doesn't offer a half $mil to everyone, but remarkably many do get it. I expect a few even get it for coding Haskell, although one may doubt that is what the req they were hired on called for.

I feel like Rust is doing pretty well for itself, in light of the VAST inertia that C and C++ have. A bunch of big names in tech are adopting Rust: (obviously) Mozilla, Microsoft, Cloudflare, Dropbox, IIRC.

That's not bad for a language that has "barely" hit 1.0 five or so years ago (next to C's 40-something years).

Rust is doing extremely well for a new language.

If it can increase its adoption rate by two orders of magnitude, it just might survive and grow. But it will need changes to get that.

The fact that all big OS vendors are doing something with it it is quite positive, however they also have their own managed languages, alternatives to Rust like safety projects and have a seat at ISO C++ table.

So I guess it boils down to how much space are they planning to give to Rust on their own SDKs, IDE and OS infrastructure.

Ultimately, it boils down to absolute numbers.

You need a large enough population of skilled programmers that you can reasonably count on finding enough that are ready to move on and good enough for your project, and enough ongoing projects to keep them all busy. The number of companies that have little projects doesn't figure, nor the size of the companies. A list of big companies using it is actually the least informative, because all it takes is one person using, out of the many thousands there, to say "the company" is using it.

It would be surprising if there were two hundred paid Rust jobs already, and astonishing if there were a thousand. It needs to get to a hundred times that to have a chance to survive, and in only a few years. Ada got there and died anyway.

Decent programmers really don't have that much issue learning new stuff. That's not to say I haven't met a good number of people who have only ever programmed e.g., Java, and poorly at that. But I wouldn't even hire them to work on a Java codebase.

I'd say that the amount of Rust work is the metric I agree with. I think Graham's "Python paradox" is true and correct. If you post a job position that includes working on Rust, you'll have people falling over themselves to apply. What you'd really need, IMO, is managers to get on board. It's a chicken and egg problem. If it isn't Java, PHP, Python, C++, then it's "risky".

We do use Rust for a few projects where I work. Entirely because I had enough social capital and reputation with my boss to push for it.

I don't do Rust full time. But what counts as a "paid Rust job"? I get paid. And I do Rust for my company. Does that count?

And I don't understand why you're asserting that it has to shoot up by orders of magnitude to survive. I feel like maybe you're being biased by something, but I'm not sure what. Look at Python. It existed in the early 90's IIRC, but it totally exploded around 2005-ish (again, IIRC). Haskell and OCaml exist. They seem to actually be picking up a bit of steam if you go by social media such as HN. Ada isn't dead.

Ada isn't not dead yet, in fact NVidia choose Ada in detriment of Rust for their automated vehicles project.

It is also one of the few languages that has managed to keep a room at FOSDEM since I can remember.

It might be dead for FOSS hype projects, but in real life production code that actually affect people's lives, still has more deployments per year than most Rust projects.

> drive, intellectual curiosity and desire for a challenge

literally none of these is related to intelligence.

And even if they did, to assert that not wanting to learn Haskell has anything to do with "drive, intellectual curiosity and desire for a challenge" is ridiculous. There are a million reasons a person that exhibits all three of those qualities could opt not to.

> literally none of these is related to intelligence.

GP didn't mention the word "intelligence"

smart adjective, smart·er, smart·est.

- having or showing quick intelligence or ready mental capability

They said "smart", I said "intelligence".

We could arguably account "drive, intellectual curiosity and desire for a challenge" as particular mental capabilities.
Every time Haskell is discussed, lots of valid critiques show up as to why it's not more successful, and yet every single time, without fail, the conversation devolves heavily into "People aren't smart enough." The person I was responding to literally said that Haskell wouldn't catch on because most developers aren't smart enough, and then defined "smart" as those three things.

I am arguing a series of things. First, that being "smart" does not always mean those three things. Second, that being "smart" does not mean that you'd care to learn Haskell. Third, to suggest a tool isn't catching on because the members of the programming community aren't "smart" enough is so masturbatory it's actually insane. God forbid Haskell isn't catching on because of all the valid critiques that show up in every one of these threads and then gets dismissed under this same "Haskell smart" rhetoric.

Haskell will not catch on because the community thinks it is too smart to have to actually accommodate the programming community. Simple as that.

> The person I was responding to literally said that Haskell wouldn't catch on because most developers aren't smart enough, and then defined "smart" as those three things.

The person used "smart" in scare quotes, and defined that usage of smart as being those things. That seems like an explicit mark that they are not talking about all of the usual definition of the word.

> Second, that being "smart" does not mean that you'd care to learn Haskell.

That's irrelevant. If X is necessary for Y, lack of X is a good explanation for lack of Y even when X is not sufficient for Y.

> God forbid Haskell isn't catching on because of all the valid critiques that show up in every one of these threads and then gets dismissed under this same "Haskell smart" rhetoric.

If you're looking in from the outside, you may not be in a good place to distinguish between "all of these valid critiques" and "invalid complaints that arise because of misunderstanding, dated info, or outright FUD". There are absolutely valid critiques of Haskell. Most of my problems with it are things that are even more present in languages that have caught on, though, so they cannot stand alone as an explanation.

All of that said, "people aren't smart enough" isn't a claim I'd make, even with the reduced scope. I just don't think your argument is well formed.

> Haskell will not catch on because the community thinks it is too smart to have to actually accommodate the programming community.

Like, you don't literally mean there are Haskellers saying "we're to smart to write beginner-friendly documentation haha" right?

Jokes aside, can you give an example of this?

Learning Haskell is like learning Latin, sure you'll gain deeper insights into other languages and language itself, but you aren't going to be able to do much by just speaking Latin.
That's just untrue.

Saying it is very inconsiderate of the efforts of everyone writing real world Haskell software.

Facebook uses Haskell, Github uses Haskell, etc... the metaphor doesn't hold and means this is just FUD.

On top of that, you're actually talking to a working professional Haskell programmer whose company depends on it.

I agree, it's hyperbole stemming from the fact that there are 5 times as many job openings for roles that touch Rust than there are Haskell.

What do you use Haskell for?

I use haskell for all of my general purpose programming. Webdev/rest apis at work mostly.

Sometimes background services.

I'm not who you're responding to, but you've responded to my posts on this topic. I think, what they're trying to illustrate, is that Haskell is still an incredibly niche language. Sure, yes, there are jobs at a handful of big names, and then a handful of not big names and companies that found their success using it. But if you were trying to maximize your employability or open up new doorways in your career, you definitely wouldn't pick Haskell as the language to do that with.

Separating "I like and use Haskell" from "Learning Haskell will amplify your career and employability" is, I think, what they're going for, and I would generally agree with. "The exception that proves the rule" is a thing, after all.

Just want to let you know that I didn't downvote you, and was genuinely interested in what you use Haskell for, so thanks for the reply. Have you had trouble hiring developers that know Haskell?
> drive, intellectual curiosity and desire for a challenge

Reading a book on abstract algebra is going to give you more concepts of Type Theory than learning Haskell.

So you may say that learning Haskell is intellectually useful, yet there are more challenging purely theoretic concepts which are more useful than Haskell.

I would go as far as saying that learning Haskell is just a "<smarts> poor man's excuse for not challenging themselves enough in the areas that actually matter".

> Reading a book on abstract algebra is going to give you more concepts of Type Theory than learning Haskell.

What aspects of a book in abstract algebra introduce you to concepts of type theory, would you say?

The most basic ones: that objects have certain properties and those properties define how they can interact with other objects. How those properties get preserved under interactions and how one should think about it.
This is what no one wants to admit about functional programming