Python Versus Whitespace (Re: Best language for graphical apps?)

Christopher Browne cbbrowne at news.hex.net
Mon Aug 30 22:18:17 EDT 1999


On 28 Aug 1999 21:16:49 -0400, Collin W. Hitchcock
<hitchc at vcmr-19.rcs.rpi.edu> wrote: 
> On some earlier date, Christopher Browne <cbbrowne at hex.net> wrote...
>> There seem to be dogmatic positions about the evils of Python's
>> ability to use whitespace to signify control structures;
>> unfortunately, the dogmatic positions seem more often based on blind
>> faith than on tenable arguments.
>
>A list of tenable arguments why I hate white-space syntax dependent
>languages:
>
>   1) A whole slew of trouble with code that uses tabs.  Use your
>   imagination.  Read about the history of "make".

I've never had problems with makefiles, no, never...  :-)

>   2) For bracket grouped languages I prefer the indenting style:
>   
>         block_start
>         {
>           sub_statement
>           sub_statement   
>         }
>   
>   In Tcl it's a syntax error to put the opening bracket on a new
>   line.  In Python the brackets don't exist.  So now I'm looking at
>   someone else's hideous code with 240 column lines.  It's written so
>   that it's completely incomprehensible unless you can see whole
>   lines at a time, so you have to put your editor in wrap mode.  If
>   the brackets exist you can first make sure the code is indented
>   consistently and then look for opened and closed brackets in the
>   same column.  You can filter out all the line wrap garbage when
>   you're looking at block structure.

Analyzing Lisp code is Pretty Easy on a similar basis; the lack of
ambiguity is indeed attractive.

>   3) If you are trying to write a code generator, white-space syntax
>   dependent languages are a nightmare.  So much easier to produce the
>   code without worying about indenting and then run a second program
>   to indent it.

This is *not* one that I see as being a big problem.

In a brace-structured language, you need some structure that counts
braces. 

That parallels the need, in a Python generator, to have some structure
that counts the amount of whitespace in effect.

They're isomorphic to one another.

>4) You can introduce *hideous* bugs by cutting and pasting between
>two differently indented sections of code.  When white space
>doesn't matter, you just paste and tell your editor to reindent.
>
>None of these are deal breakers -- you can work around all of them.
>They just add to the general stress level.  I already have enough
>stress, thankyou.

As you say, these can be worked around.

Thank you for not merely making dogmatic comments; mere dogmatism is
more common in such discussions.
-- 
if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
  printf("Don't Panic!\n");
  exit(42);
}
(Arnold Robbins in the LJ of February '95, describing RCS)
cbbrowne at ntlug.org- <http://www.ntlug.org/~cbbrowne/langscript.html>




More information about the Python-list mailing list