Frankly, learning any programming language for some one have never programmed before is a big task, but I'm still not convince that Rust is especially hard. That quote is very apt:
This is basically the programming version of "learning Japanese as an English speaker is hard, therefore it is not a good language for babies to learn"
We know for the fact that Rust tutorials are not designed for someone who have never programmed before… but we still have no idea if learning Rust as your first programming language, from scratch, is harder or easier than learning, e.g., JavaScript or Python.
Because many things that you may routinely do in JavaScript or Python are either hard to impossible in Rust – and you have to unlearn them – but they are also impossible in read world when you work with real world objects – thus someone without programming experience wouldn't need to unlearn them.
But one thing that we all may agree with is simply the fact that none of existing tutorials target that audience of someone who have never ever programmed before.
I suspect that this much harder thing for a novice compared to other issues with Rust. Take that chapter 4. You may teach it with simple real-world examples of how we handle nested tasks (if we decided to create a package to send someone a gift and then find out that we need a nice picture to send with it then we would pack everything, put it aside and pull crayons or brushes to do another task), then go with the need to have some objects that don't belong to particular task and other things based on interaction with real-world, physical objects (that maps to how Rust does ownership and borrow, even with the exact same words) this chapter dumps “execution stack” and “heap” on you… extremely advanced concepts that one don't even need to know at all to program in Rust!
Compiler does that so you don't have too. That's very nice property: you don't need to keep in mind all these rules, you can trust the compiler.
Of course sometimes compiler rejects the code that's perfectly valie (it have to, because it's simply just not possible to say with 100% correctness whether code is valid or not) and then you need to use unsafe
and… that's not fun, yeah… it's dangerous and complicated part of the language. But Rust without unsafe
is much safer than many other languages. And I suspect that may actually make it good as “first ever language”. Still needs an appropriate tutorial.