Interesting talk on Python vs. Ruby and how he would like Python to have just a bit more syntactic flexibility.
steve at REMOVE-THIS-cybersource.com.au
Fri Feb 19 00:00:51 CET 2010
On Thu, 18 Feb 2010 08:15:46 -0800, Steve Howell wrote:
> Just to be clear, I'm not saying it's unforgivable to occasionally ship
> software with bugs. It happens.
"Occasionally"? Oh, if only.
I would say that there probably isn't a non-trivial application in the
world that is entirely bug-free. If you're shipping something more
complex than the proverbial "Hello World", chances are high that there
will be bugs, and the more complex the app, the more bugs are likely.
> mangles named functions too.
It doesn't mangle the function, it mangles reporting of line numbers. But
if you know the name of the function, it is much easier to recover from
that loss of information.
> To the the extent that your customer is running old software and cannot
> always coherently describe tracebacks over a telephone, that problem can
> be solved in the software itself, assuming an Internet connection. The
> software can capture the traceback and report back to a server with the
> version number.
I don't understand why you repeatedly mention "old software". It is
irrelevant: the software is either supported, or not supported. If it's
not supported, you don't care about the bugs. If it is supported, then it
doesn't matter whether it is version 2.2 or 2.3 or the bleeding edge 2.4-
pre-alpha straight out of subversion, you still have to go through the
same process of finding the bug, solving it, then rolling the fix out to
all supported versions where the bug applies.
That's not to say that the version number isn't useful information to
have, because it can be, but distinguishing between old versions and the
current version isn't a useful distinction. In a sense, there are no old
versions, there are merely multiple supported current versions.
> So, much of the argument against anonymous functions presented so far is
> really orthogonal to whether functions are named or not.
Not so. The point is that anonymous functions lack useful information,
namely the function name. Because line numbers can be unreliable or even
missing completely, and even when reliable many people have a mental
blind-spot for them (I know I do, and I'm gratified to see I'm not the
only one), lacking a good name for the function is a handicap. Not
necessarily an insurmountable one, but anonymous functions are more
troublesome than named functions.
You wouldn't name your functions:
f01, f02, f03, f04, ... f99
(say), unless you were trying to deliberately obfuscate your code.
Anonymous functions are even more obfuscated than that. You can get away
with it so long as you're only dealing with a few, in well-defined
placed, but you wouldn't want to use them all over the place.
More information about the Python-list