And it's not even avant-garde - indent-as-syntax goes back to fortran.
Not in any Fortran I know. Here is the 77 and 90 syntax:
Code:
if (some condition) then
true statement
else
false statement
end if
if (another condition) statement
The second one is the single-line version of if, for the case when you need to only execute one statement.
Note that the above syntax is actually very close to the C-style syntax, if you replace "then" with "{", "end if" with "}", and else with "} else {". And that just like Fortran, C allows single-statement if statements.
The use of whitespace as indentation is indeed older than Python, but it was only very rarely used. The only language I know of that had it was Occam, which comes from the CSP logic (communicating sequential processes). Given Theo's origin in a computer science research group in the Netherlands, he must have been quite familiar with CSP and Occam, although I don't know whether Python was in any way inspired by it.
Here is my personal opinion: Code with structures (such as if, while, do ...) has to be indented, because that makes it more readable. And yes, I've worked in enough code in languages that did not use block structures (Fortran-IV, COBOL, RPG-II), and non-indented code is AWFUL to read. Once you have made that decision, having both syntactic block markers (such as "{" and "}", or "then" and "end if") PLUS indentation is redundant. To begin with, that redundancy enables creating broken code, where the indentation and braces disagree. This is awful, because such code may execute correctly, but become unmaintainable. Fortunately, normal build systems have linters built in, and will detect such mistakes.
Now the question becomes: Is that redundancy good or bad? In my opinion, it is just wasteful. It often makes the code longer in terms of lines (meaning less code fits on the screen, increasing cognitive load), because many coding style rules force braces to be on lines by themselves (in traditional fixed-form Fortran, the "else" and "end if" have to be on lines by themselves). It enables silly mistakes (which the linter quickly catches), but that then forces having linters in your build system. Given that we're going to indent anyway and that is mandatory, I vote for making the indentation carry the semantic information about block structure, like Python does.
But honestly, this is not a big deal. I also program in C/C++ (and Java and Rust and ... many other languages with brace syntax). Compared to all the other things a skilled software engineer needs to know, indentation and block bracing is the least of the problems.