https://web.stanford.edu/class/cs240/old/sp2014/readings/wor...
I like the syntax and type system more in Rust, but at the end of the day the language are pretty similar in terms of developer experience if you're doing back end stuff[1].
(Fun fact I learned Rust and Go roughly at the same time in 2015, and Go's tutorial was a big help for my understanding of concurrent programming in Rust, with channels and mutexes, for someone who came from a JavaScript background and had never been exposed to threads before).
[1] A cool thing about Rust is that you can use it to learn new stuff that aren't web back-end, but that's a good reason to pick it for side projects, not for using it as a company.
Edit: four downvotes in three minute? I must have say something offensive…
I couldn't teach _myself_ Rust in a week.
Yes, if you're making something where being Correct is a hard requirement - Rust is perfect. But you do need to acknowledge that there is a definite learning curve and the average Job Coder (works from 9-5 and doesn't think about it on their free time) isn't cut out for Rust.
If your team is hand-picked 10x coders, Rust is again by far the best choice. It's got fancy PL bells and whistles that keep the dopamine running for experienced people =)
> I couldn't teach _myself_ Rust in a week.
Autonomous teaching is supposed to be harder than with a tutor in any domain so it's not particularly surprising ;).
> But you do need to acknowledge that there is a definite learning curve
I don't like the “learning curve” phrase for Rust, because the curve itself is actually fine.
But before you can even enter the learning curve there's a significant step to cross. It's not particularly difficult, but it's all about theory and concepts. It's like high-school level trigonometry, it's not particularly hard, but it's still something a bit dry and that needs motivation to learn.
With a teacher and assignments, most people can do it, but without it you really need to make the effort of understanding the core concept (Ownership, borrowing, Send and Sync, + heap and stack if you don't know about it before hands + what are threads, data race and locks[1]) before you can even start to get to the fun part of learning a new language.
> and the average Job Coder (works from 9-5 and doesn't think about it on their free time) isn't cut out for Rust.
Without an external motivation source, the average developer has no reason to have the motivation to cross this learning step.
But as part of my job, I've thought Rust to average Joe in a week and they became productive quickly. I'm sure I could teach you Rust in a week ;).
[1]: the deadlock empire is an excellent learning resource for that one.
Sure, but you can teach yourself Go in a couple of days, likely having running code from the get go. I think with Rust you will have more frustrating interactions with mr. compiler in the beginning.
> Edit: four downvotes in three minute? I must have say something offensive…
It's because it's not "a few days of learning" with Rust.
And then I've been working in Rust with beginner and mentoring them while they learned Rust, and I can assure you that the difficult part that most people struggle with is just half a days of learning actually[1]. Then you put in practice with exercises, to familiarize yourself with the syntax and the std lib, for a few days and you're ready to code.
The difficulty is to overcome the first step of assimilating concepts, that you need to unlock the next steps. If you skip the concept phase, then you can remain confused for a while I guess.
[1]: I've just check my slide deck, Ownership + Borrowing + Arc/Rc + RefCell/Mutex + Lifetimes + Send + Sync, the entire package of Rust hardcore concept that everybody struggles with, fits in 63 slides, with the exercises, and I usually cover it in half a day. And it's accessible to pretty much everyone without prior Rust or C++ experience. I even re-explain what a thread and what the heap are.
I've been on both sides, I leaned Rust very early and it took me a while to even understand what lifetimes were and wth was `Copy` and `static`, but after that I've been onboarding complete beginners at several companies and they got proficient very quickly with some guidance from me for key concepts.
Rust isn't hard, it's just has a few concepts that you need to understand otherwise you're just confused by everything you encounter. But to me wasn't not too different from the effort it took me to understand "wtf are prototypes" when learning JavaScript 15 years ago.
When you come from a certain language paradigm and you're learning a language with another paradigm everything sounds so confusing at first, even though the difference aren't actually that big in reality. But you need to be able to overcome the difference before you see the similarities.