You are not *forced to* by the language to do that. C and even more so C++ or Java requires(!) you to use language constructs to organize your code that are quite expressive and rich, and allows the compiler to check for the correctness of these constructs.
Oh, come on, you can make a mess out of things in every language, and yes, assembly language makes that easier.
In Assembler, you have nothing.
Except the most important tool: Your brain. Nothing keeps you from structuring your assembly language code properly. If someone doesn't do that, then that's their mistake.
Anyhow, we're arguing in circles. Given that you never worked on a major project in assembler, I see that you can hardly judge why all that is beneficial for a project
I can see perfectly fine how higher level programming languages are beneficial to a larger project (use them myself on the peecee, where I don't use assembly language). I simply don't agree with you that you can't do it properly in assembly language.
and why it helps so much. Don't you think that it's rather ignorant to make such arguments without ever having gone through all this at least once?
No, it's not ignorant. What's ignorant is assuming that your personal experience with this applies to everyone. You say it's too hard, because you've had problems with it, and that's not right.
Also, I'd like to see what's so hard about a shell replacement in assembly language. Would be great if I could take a look at that (because you claim it was hard to do).