In my Python 4K post
I said:
I want nothing to do with any programmer who would mis-indent
their code. If you want to mis-indent your code you are an
idiot. If you want idiotic code to be an option you are being
absurd.
This might come off as a little... well, not a friendly way of saying
it. Maybe I'll expand a little:
- We all know what "correct" indentation is. Really, all of us, from every
language.
- Python enforces only correct indentation (though still with a
certain amount of flexibility). The only hitch is with multi-line
statements. Yet the newline as a statement terminator doesn't seem
controversial. Go figure.
- So, Python is enforcing the bare minimum of style. By "bare minimum" I
mean that level of style that even you will curse yourself for not
using,
and a level of style that if you don't conform to will cause revulsion for
anyone else who sees your code.
- It's not that hard to indent your code properly. Indenting
improperly is not a big time saver, even for one-off scripts. Some
people say "one-off scripts usually aren't". But you don't have to
say that -- even for really truly one-off scripts indenting is not
hard.
- Coming up with stories where it is better not to indent your code
properly is the "absurd" part. It's just not worth it, and I
honestly don't believe anyone rationally argues otherwise.
- Admittedly, people argue it irrationally. I think they feel Python
is being paternalistic, and they don't like that; it invokes an
emotional response. I think that is doubly irrational, because
there's all sorts of other things Python requires that people don't
worry about -- like case sensitivity -- simply because programmers
are already used to those things. Why the concern over something even
less controversial than case issues?
- Significant whitespace leads to very readable syntax errors.
(Newline terminators also do this, as does = as a statement, and
some other syntactic details.)
- It really helps programming flow that most all syntax errors in Python are
trivial to detect (at least for an experienced programmer -- but you
don't have to be experienced in Python to understand syntax errors
quickly, you just have to be experienced in any Algolish language).
- Do you really have no memory of how obnoxious some other languages
can be about syntax errors? Like, really really obnoxious? It's
not worth it, especially when the syntax errors are less helpful because
of a complete non-feature like insignificant whitespace.
Update: I really messed something up and everyone who submitted comments
had them sent into the void. What baffles me is that people then replied to
the empty comments...? Anyway, sorry about that; fixed now.