Python's "only one way to do it" philosophy isn't good?

Douglas Alan doug at alum.mit.edu
Tue Jun 19 17:46:35 EDT 2007


Neil Cerutti <horpner at yahoo.com> writes:

> |>oug writes:

>> Sussman's statements are not ironic because Scheme is a
>> language that is designed to be extended by the end-user (even
>> syntactically), while keeping the core language minimal.  This
>> is a rather different design philosophy from that of Python.

> Which version Scheme, though? Scheme has only formally had macros
> since R4RS, and then only as an extension. Macros are an extension
> to Scheme, rather than a founder.

Macros were only *standardized* in Scheme with R4RS.  This is because
they wanted to figure out the "right" way to do macros before putting
it in stone.  (Common Lisp-like non-hygienic macros were considered
inelegant.)  All the major implementations of Scheme that I know of
implemented some form of powerful macro mechanism.  N.b., Rabbit,
which was Guy Steele's implementation of Scheme, and completed long,
long before the R4RS standard.  (Guy Steele was one of the two
inventors of Scheme.)  And, as far as I am aware, the plan was always
to eventually come up with a macro mechanism that was as elegant as
the rest of Scheme.  The problem with this approach was that achieving
this daunting goal turned out to take quite a while.

> Python could conceivably end up in the same position 15 years
> from now, with macros a well-established late-comer, as
> generators have become.

That would be very cool.  The feeling I get, however, is that there
would be too much complaining from the Python community about how such
a thing would be "un-Pythonic".

> The SRFIs are cool.

> The last time I dipped my toe into the Scheme newsgroup, I was
> overwhelmed by the many impractical discussions of Scheme's dark
> corners. Python is either much more free of dark corners, or else
> simply doesn't attract that kind of aficionado.

I don't really think that Scheme itself has many dark corners -- it's
just that being basically a pristine implementation of lambda
calculus, Scheme lets you directly explore some pretty mind-bending
stuff.  I would agree that most of that kind of stuff is not
particularly practical, but it can be fun in a hackerly,
brain-expanding/brain-teaser kind of way.

I think that most people who program in Scheme these days don't do it
to write practical software.  They either do it to have fun, or for
academic purposes.  On the other hand, most people who program in
Python are trying to get real work done.  Which is precisely why I
program a lot in Python and very little in Scheme these days.  It's
nice to have the batteries included.

|>oug



More information about the Python-list mailing list