Why is Python popular, while Lisp and Scheme aren't?

Alex Martelli aleax at aleax.it
Sun Nov 10 10:27:05 EST 2002


Jens Axel Søgaard wrote:
   ...
> A frequently asked question for new comers to Python is "Why did
> you leave out my favorite loop construction?". I mean, there are always
> someone that likes do-while better than repeat-until and vice versa.
> 
> In a language with macros such as CommonLisp or Scheme one can use
> macros to make new control structures. One example is the "missing"
> loop. The point is that the programmer can add to the power of the
> language without asking Guido first.

I think these two paragraphs come closest than any other attempt so far to 
answer the question that is this thread's subject.

CL and Scheme have powerful macros, which you can basically use to change 
the language in any odd way, WITHOUT the supervision of a superb language 
architect like Guido.  Python does not: you cannot inflict such deep 
changes in the language -- it's always the language Guido designed. 

Surprise, surprise: the language that's always itself, always well designed, 
is popular; the languages that anybody can change arbitrarily aren't.

Doesn't surprise ME one bit.

It's not the prefix form and the parentheses.  Dylan uses infix form, AND 
some of its semantics are superb.  BUT it has powerful macros... kiss of 
death: and, surprise surprise, Dylan isn't popular either.

It's exactly BECAUSE every newcomer longs for some weird set of feechurs 
that are better done without, that a language that lets such newcomers add 
all the weird things, changing the language itself and turning it from a 
(hopefully) well-designed whole to a hodge-podge, is not going to be 
popular with the masses.  Some brilliant individuals -- a tiny minority -- 
are no doubt going to use such power wonderfully well, building several 
different complex, specialized languages.  The rest of us, the vast 
majority of the human race, is BY FAR best served by having to use one 
well-designed language rather than by letting each make up their own.

*Simplicity* is an often-forgotten but nevertheless crucial criterion of 
good design.  A slightly harder-to-express but also important criterion is 
*unity of vision* -- a system should feel like an integrated whole, not as 
a disparate jumble of parts.  Python meets both criteria.  I believe that 
introducing powerful-enough macros to Python would make it more likely than 
not for most programmers to break both criteria, and thereby probably doom 
Python, too, to eventual obscurity.


Alex




More information about the Python-list mailing list