I'm thinking it's best not to make Rust a low-entry-barrier resume keyword.
Rust is hard, and people should realize it's hard.
One of the problems with C is that it was way harder than most people realized (we just accepted crashes, and then rampant security vulnerabilities, as normal), and so few practitioners got sufficiently competent at it.
One of the problems with Python is that you don't have to understand much, to install a bunch of libraries and copy&paste snippets found in Web searches, to call something done.
Rust will help you with analogs of some of the conventions that a very skilled C programmer might use. But if someone only wants to get a well-paying job and be able to call their sprint tasks done, they probably want Python or Go, because Rust will make them cry.
If I Web search for a Rust thing, I want to be finding genuine hardcore people talking. (This was actually one of the biggest benefits of working in Scheme and Racket -- very high signal:noise ratio, because the practitioners were generally only there because they were very serious and/or very curious. I'm moving to Rust, and hope to find similar.)
I disagree pretty strongly with this: it should be incumbent upon you to filter your interests, not upon Rust to filter out potential users.
Rust’s entire raison d’etre is to make secure, performant computing available to everyone. It makes no sense to keep it elite; the idea is to improve the entire state of affairs.
Besides, it’s a big language, and has a wide range of practical idioms: I almost never use reference-counting types in my code, but it’s a perfectly legitimate (and sometimes necessary) feature that also makes the language more accessible to newcomers.
There is no real reason or place for gatekeeping in tech like this. When I was 15 I didn’t know anything and C was my first language. It led to a long and fruitful career in tech for me. Just stick to the hardcore groups, they are always out there. A motivated teenager can figure out this “hard” language. I was writing assembly, using function pointers, running a MUD, and competent at GDB by the time I was 17. Plus Rust is really easy to start with and the books are free. I had C for Dummies.
Another tech community I'm in is known for being extremely helpful to newcomers who are interested (e.g., anyone who's interested will typically get an expert answering their questions). That's different from saying the subject matter is easy, and mass-advertising it to people looking for easy.
Are Unsafe Rust and Procedural (as opposed by "By example") Macros easy? No, unsafe Rust is potentially really hard. If you are implementing a new concurrency primitive or something you're going to need at least the expertise you'd want for the same work in C++. However in Rust you know where the line is, "Huh, I need unsafe, I should find a grown-up". And knowing that the problem areas are flagged gives you confidence everywhere else.
But many ordinary programming tasks are pretty easy, compared to Python you will spend a bit more time with the compiler refusing to compile your program because it's wrong, but on the other hand a bit less time with the program failing at runtime for trivial reasons a compiler would have spotted (compare what happens if you typo a variable name in Rust versus Python!)
> But if someone only wants to get a well-paying job and be able to call their sprint tasks done, they probably want Python or Go, because Rust will make them cry
You can be about as sloppy in Rust as you might in Python or Ruby: the language supports dynamic typing ("Any" trait), reference counted objects etc. But that would involve a lot of boilerplate, so your sloppy code would very much stand out as non-idiomatic.
It sounds a bit like gate keeping :). Not to mention, Rust complexity can always be dialled down to a GC language if corresponding sacrifices in performance are accepted. There are a whole lot of domains where you can get away without using a single lifetime specifier anywhere.
I'm currently using it for developing rest api using the excellent warp crate and I wish more people use it for this use case as its quite suited for it.
Rust will never be used as widely as GC'd languages like Java, Go, C#, etc.
It's incredibly well-designed, but you can't design away the inherent complexity of writing safe, secure, fast code. There's no way to make that easy. It will always take a lot of passion or training to really master it. (Yes, I know that some of us here "had an easy time" and it "only took a few weeks", I'm referring to the average person.)
And you know what, that's okay. There are lots of industries where only the most hardcore of programmers use the professional-grade tools. There's nothing wrong with that.
Everyone else will probably continue to use tools like Java, Python, etc. because for most situations, they can get the job done with less training, which means less spent on developer salaries, which is most often more than server costs anyway.
I think the best we can hope for is that Rust is taught in university, like how other industries teach usage of their own professional-grade tools. But even that won't mean that most programmers use Rust, I think.
> I'm thinking it's best not to make Rust a low-entry-barrier resume keyword.
When that happens, recruiters will instead look for occupational or open source experiences with Rust, which they have done for other mainstream languages for years and arguably it's how they should have done for Rust anyway. So there is no real problem here.
I dont think gatekeeping rust is necessary. The nice thing about rust is that people that are not experts can now attempt to create high performance low level software and the worst case scenario is that its slow due to unnecessary copying.
Rust is hard, and people should realize it's hard.
One of the problems with C is that it was way harder than most people realized (we just accepted crashes, and then rampant security vulnerabilities, as normal), and so few practitioners got sufficiently competent at it.
One of the problems with Python is that you don't have to understand much, to install a bunch of libraries and copy&paste snippets found in Web searches, to call something done.
Rust will help you with analogs of some of the conventions that a very skilled C programmer might use. But if someone only wants to get a well-paying job and be able to call their sprint tasks done, they probably want Python or Go, because Rust will make them cry.
If I Web search for a Rust thing, I want to be finding genuine hardcore people talking. (This was actually one of the biggest benefits of working in Scheme and Racket -- very high signal:noise ratio, because the practitioners were generally only there because they were very serious and/or very curious. I'm moving to Rust, and hope to find similar.)