M. Edward (Ed) Borasky
5/19/2007 6:48:00 PM
Chad Perrin wrote:
> On Sun, May 20, 2007 at 12:05:06AM +0900, Brendan wrote:
>> On May 18, 4:23 am, Chris Dew <cms...@googlemail.com> wrote:
>>> ...
>>> with no reduction in meaning, yet 25% fewer lines of code.
>>>
>>> What are the reasons why this isn't used/implemented/liked? It would
>>> be a small change to the interpreter. Enabling meaningful indentation
>>> would only make 'end' optional, not invalid; backwards compatibility
>>> wouldn't be a problem.
>>>
>>> (I use both Ruby and Python. I think indentation is one of the few
>>> *language* features where Python leads Ruby.)
>> I personally prefer that 'end' be in place, so that all ruby code is
>> readable. I personally believe there may be something wrong with a
>> syntax which sacrifices explicit readability (for everyone, not just
>> python programmers) for increased typing speed and the illusory gain
>> of 'fewer LOC'. This was one of the major reasons which convinced me
>> to use ruby instead of python.
>
> I, personally, don't have an argument on principle like that for my own
> preferences in this matter. I just like the fact that an "end" makes it
> look more complete to me. Reading Python code always makes me feel like
> my eyes are just going to trail off the right-hand edge of the page
> because the "shape" of the code never brings me back to the leftmost
> edge, the way code "should".
>
> When I look at Python code, and ponder the way it does things so
> differently from Ruby regarding delimiters and indentation (the same
> thing in Python), it seems to me that Python was created for people who
> write code in a particular mindset, and it's not a mindset I share when
> I'm writing code. I guess maybe some people, when writing code, think
> in footnote hierarchies, while others (like me) think in nested scopes.
>
> That's just an off-the-cuff hypothesis.
>
I've been watching this debate go by for some time, and I'm not sure
this sort of thing can ever be solved, but here are my personal opinions:
1. When you come right down to it, there are only a few basic syntax
styles that have survived the test of time. *Most* languages, including
C, Ruby, Pascal and Perl, use some variant of the Algol 60 syntax. The
other "survivors" are the Lisp/Scheme variant of prefix notation,
Forth's postfix notation, and the regular expression syntax. I suppose
assembly language syntax has also survived, and FORTRAN and COBOL, but I
don't think anyone would design a new language with those.
2. I think Python's "variant" of Algol 60 notation is less than
satisfactory, but I also have problems with the liberality present in
the syntax of Perl and Ruby. I don't like to make the reader or parser
work any harder than necessary just for the convenience of the coder. So
I like explicit delimiters like curly braces, parentheses, mandatory
semicolons at the end of statements, begin/end pairs, etc. for the Algol
60 languages. Lisp/Scheme and Forth were deliberately designed to make
the parser's job trivial, and I like them too. :)
3. I've pretty much given up on the dream that I'll be able to program
in one language only, although some languages are close enough. At the
moment, I can get just about everything done in either Perl or R, with
the other languages simply being fun to learn and use but not essential.
I could probably eliminate Perl if there were more R programmers, but
there aren't and won't be, because R is designed for scientists and
mathematicians, not business people.