A lot of makes a lot more sense if you can keep in mind what the language's design is optimizing for.

... which is "Letting the compiler figure things out with a minimum number of re-passes over the code."

This is, in these modern times, a very stupid thing[1] for it to optimize for at the language-design level, but it does help illuminate a lot of what seem like otherwise stupid constraints on the language.

[1] I'm making a strong assertion here, but I'm justifying it on observation that the reason you want minimum passes is to optimize compilation time. In that regard, relative to the languages I regularly use, C++ takes about a billion years to compile a codebase of a dozen files, three compilation units, and ~5,000 lines of code, while the TypeScript compiler is "boom-boom done" and the Python compiler is "What compiler?"

Sign in to participate in the conversation
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.