for / while else doesn't make sense
Christopher Reimer
christopher_reimer at icloud.com
Fri May 20 23:47:27 EDT 2016
On 5/20/2016 7:31 PM, Chris Angelico wrote:
> On Sat, May 21, 2016 at 11:23 AM, Christopher Reimer
> <christopher_reimer at icloud.com> wrote:
>> On 5/20/2016 3:43 PM, Steven D'Aprano wrote:
>>
>>> But the idea that you should avoid a Python feature while programming in
>>> Python because Javascript doesn't have it, or Ruby, or C, is surely the
>>> height of muddleheaded thinking. You're not programming Javascript, Ruby
>>> or
>>> C, you're programming in Python. The whole point of picking one language
>>> over another is to get access to the tools and features that language
>>> offers. Otherwise you're just wasting your time.
>>
>> For many years I have resisted specializing in a programming language, as I
>> can easily write any program in pseudo code and figure out the syntax for a
>> particular language. Now it does help that most languages have derived from
>> C and share a common feature set (i.e., string, integer, float, if/else,
>> while, for, etc.). From my perspective, tacking on an else block to the end
>> of a for or while loop looks like a bug or a not very well thought out
>> feature. If I was translating a Python program with for/else or while/else
>> statements into a different language, those statements will have to be
>> rewritten anyway.
> That's fine, as long as you (a) restrict your programming languages to
> those derived from C, and (b) restrict your programming style to the
> common subset of them all. Trouble is, that "common subset" is
> actually pretty small. Strings behave very differently in C and high
> level languages, and for loops are *very* different in different
> languages. So you'd be throwing out a large amount of expressiveness,
> plus you're completely unable to use languages built on some other
> model (eg LISP, or DeScribe Macro Language, or APL).
I don't have a problem with (a) because the majority of the programming
languages I've been exposed to have derived from the C language. No
offense to the LISPers, but LISP is a historical curiosity that I might
blow the dust off and take a look at someday. I'll probably learn
assembly language before I ever look at LISP. :)
But I disagree with (b) on restricting myself to a common subset of ALL
the programming languages. Pseudo code allows me to describe a program
in very general details. Implementing a program in a programming
language requires getting into very specific details. Of course, there
are major and minor differences from language to language. If an oddball
feature gets the job done, I'll use that. Or maybe not. If I'm uncertain
about something, I'll keep going back and forth until I'm satisfied one
way or another.
The else block tacked on to for and while loops in Python seems very
oddball-ish to me. I've always strive to follow best practice whenever
possible. The one book I've read -- and so far, the only book on that
feature -- recommends not using it. Based on my previous experience, I
don't disagree with that author's opinion. If I have a compelling reason
to use it, I'll use it. Or I'll simplify it to use helper functions.
If I wanted to write portable code, I would have stayed with... Java. O_o
Thank you,
Chris R.
More information about the Python-list
mailing list