What actually seems to be needed is more consistency in usage. Opinionated conventions on how to properly use something.
I don't think it's a problem of a language to be universal and generic and usable in many different ways and usage scenarios.
But a project probably should not randomly mix and match all available language features - but follow a best practice approach that makes sense for the project. Constrain itself to a certain subset of language features.
The language still can offer features that aren't used for this project - but might be useful for another project.
It can't be the job of the language to stop programmers from using (or abusing) any language features. Use things inappropriately, or use stuff that isn't a good fit for the problem it's used to solve.
There's always going to be multiple different ways to implement something, and it has to be the responsibility of the programmer, to choose a solution that's a good fit.
Trying to make it impossible to use any non-optimal approach on a language level, isn't going to ever work out.
No matter how restricted and patronizing you make your language - there's always gonna be some programmer who uses something inappropriately, and then blames the language for it.