Python's simplicity philosophy (was Re: reduce()--what is it good for?)

Alex Martelli aleax at aleax.it
Tue Nov 11 12:10:38 CET 2003


Robin Becker wrote:
   ...
> This whole thread is reminiscent of vi vs emacs or an os war or similar.
> It's a pity that people with a preferred style should be so dogmatic
> that they want to remove language features to prevent others using them.

Python's essence is simplicity and uniformity.  Having extra features
in the language and built-ins runs directly counter to that.


> The whole 'only one way to do it' concept is almost certainly wrong.

Bingo!  You disagree with the keystone of Python's philosophy.  Every
other disagreement, quite consequently, follows from this one.

The world is *chock full* of languages designed with the philosophy
of "the more, the merrier".  Why can't you let us have just _*ONE*_
higher-level language designed with full appreciation for "the spirit
of C" (as per the C standard's Rationale) in its key principles:

"""
  (c) Keep the language small and simple.
  (d) Provide only one way to do an operation.
"""

Maybe "the spirit of C" is as wrong as you claim it is.  Personally,
I _cherish_ it, and in Python I found a language that cherishes it
just as much, while working at a much higher semantic level and thus
affording me vastly higher productivity.  I will not stand idly by,
and let you or anybody else attack its foundations and thus try to
destroy its key strengths, without a fight.


> There should be maximal freedom to express algorithms. As others have

Want "maximal freedom to express algorithms"?  You can choose among
a BAZILLION languages designed according to your philosophy -- even
sticking just to higher-level languages with dynamic typing and
generally infix/algoloid syntax, Perl is the obvious example, and if
you just can't stand its core syntax, in full respect of this
"maximal freedom" principle, you can of course change it, too -- see
http://www.csse.monash.edu.au/~damian/papers/HTML/Perligata.html and
revel in that _truly_ maximal freedom.  Or, for a language that's
somewhat in-between, but still philosophically accepts the "maximal
freedom" tenet for which you crave, try Ruby -- if I _did_ want such
freedom, then Ruby is what I'd most likely use.

But can't you let us have *ONE* language that's designed according
to the concept you consider "almost certainly wrong"?!  Why do YOU
use this language, even while you condemn its foundation and try to
undermine them, rather than using any one of the myriad that already
DO follow your philosophy?!

Trying to make Python into (e.g.) a Ruby with slightly different
cosmetics and "fine points" is truly absurd: if you want Ruby, you
know where to find it.  Let Python stay Python, and leave those of
us who find ourselves best served by its design principles in peace!


Alex





More information about the Python-list mailing list