On Sun, 31 Jan 2010 18:47:42 -0600, John Bokma wrote:
> Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> writes:
>>> On Sun, 31 Jan 2010 14:47:08 -0600, John Bokma wrote:
>>>>> An editor can correct the indenting of the braces example but can't
>>> with this one.
>>>>>> if x:
>>> if y:
>>> foo()
>>> else:
>>> bar()
>>>>>> While braces might be considered redundant they are not when for one
>>> reason or another formatting is lost or done incorrectly.
>>>> I've heard this argument before, and I don't buy it. Why should we
>> expect the editor to correct malformed code?
>> Or a prettyfier. It doesn't matter. The point is that with braces there
> *is* redundancy that be used to fix the code.
Prettyfiers are significant in languages that allow braces (or begin/end
tokens) and indentation to go out of sync. Since that can't happen with
Python, it's not a problem that needs solving. Prettyfiers exist to work
around a limitation of languages where indentation is not significant.
Arguing that an advantage of braces is that prettyfiers can work with
them easily is a silly argument. That's like saying an advantage of horse-
drawn buggies over cars is that it will go faster when you hit the horse
with a whip. That's true, but you only need the whip because of the lack
of accelerator pedal.
A much better argument would be that an advantage of significant
indentation is that you no longer need a prettyfier, and a second
advantage is a major reduction in flame wars over coding styles.
>> Would you expect your editor to correct this malformed code?
>>>> result = sin(x+)y
>> Nice straw man.
It's not a straw man. It's a serious argument. There is an infinite
number of problems with malformed code that your editor can't fix, and
your prettifier can't deal with. Why should we care if indentation is one
more?
There are tools out there (such as some web forum software) that corrupt
whitespace. Those tools are broken, and if you (generic you), as a
developer, are relying on those tools to code with, then shame on you.
And if you're the creator of such broken tools, then shame on you more.
You wouldn't arbitrarily decide to remove leading "E"s from the user's
text, or trailing full stops, so why do you arbitrarily remove whitespace?
> Let me repeat again: I am ok with how Python works. To be honest I think
> it's cleaner compared to using {}. But in there are real life examples
> in which Python code will break where code with braces will survive.
Yes. So what? They are rare and insignificant in practice. For every line
of code that you get via a webforum that mangles indentation, you get ten
thousand lines of code from some place that doesn't.
So long as code is written by and for human beings, the benefit of
significant indentation is 100% practical, and the practical benefit of
braces will remain insignificant.
--
Steven