Comment by Gormo
4 hours ago
There's an important form/function distinction here, though. Indentation is useful for human readability, but braces function to give unambiguous direction to the compiler or interpreter. I think conflating these two different purposes together is a mistake: you shouldn't risk altering or breaking the logic flow of a program simply by adjusting its visual formatting.
The fact that we use whitespace for layout is precisely why it's a bad idea to assign it semantic value. I'm a fan of both braces and semicolons for that reason.
I think this is probably correct for an experienced programmer but incorrect for someone who is new.
I'm not sure I understand what you mean. How would the friction inherent in conflating layout and semantics together depend on the experience level the programmer? Different programmers might have different ways of dealing with that friction, but I'd think its existence would be a property of the language itself.
The form/function distinction you're making requires the ability to hold two parallel representations of the same code in your head—the visual representation (what it looks like) and the syntactic representation (what it means to the parser), and to know that they're related but different. This is a higher level skill.
When you're starting out, the best form to express to other humans is probably the one you're expressing to the computer. This isn't literally true—I don't think beginners should write in assembly—but it's true enough that they probably shouldn't mess with indentation beyond what would naively follow from bracket placement.