I was brought up on C, did a module of Java at uni, and am doing an algorithms course which is python heavy.
My other half - who's quite handy with Python - looks in sheer horror at my code which is littered with semicolons.
I was stumped for half an hour figuring out why the Python interpreter was bouncing an error before it had even reached the main program logic... turns out a { before the block of code royally ruins the interpreter's day.
That said, with how few expressions are return values, I do wonder why semicolons are the default rather than adding a special character to indicate return values.
you mean like return/break/etc.?
because Rust was designed to remind you of functional programming despite not being very functional, and because semicolons allow way better syntax rules in Rust and are generally pretty vital for good, readable lowish-level code. it also allows Rust programmers to use newlines/indents and stuff to pretty up their code a lot without littering it with random \ and |> and beginend and such everywhere, which, given how dense Rust code can be and how much it uses iterators and weird trait magic, is a big plus for readability
Folks acting like Python is the only language without semicolons. 😏
I got tripped up so many time in the last 3 weeks using PHP after years in ML family languages. I am already newlining & it’d be poor style to put more than one statement on a line so what is the point of these semicolons?
But newlines + indentation are supported by a lot of languages & when it is, it’s easier to read since the prevailing convention is already to newline, then in indent. When you follow the usual coding styles or autoformatted & removed the semicolons, you’ve gained nothing for readability & added noise. I much prefer the languages that take this convention & bake it in so you don’t have to have that that visual noise—and in these languages, I never felt the parsing rules were ambiguous.
it’d be poor style to put more than one statement on a line
Unlike Python, most languages do not endorse a specific concept of style. You're free to dabble in all the bad style choices you like, on the off chance that once in a blue moon they prove to be situationally useful.
Why haven't custom parsers become more of a thing? All the compiler or interpreter really needs is a valid parse tree. You could even have some kind of special command or directive to switch styles, if a section would be really ugly otherwise.
With indentation-based languages the bad coding style we are talking about is putting multiple statements on a line or unindenting a block …& never has that been something I wanted to do. I would rather this aspect be enforced at the language for readability where there is still room in all other aspects to try out other styles.