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

Patrick W patrickw106 at yahoo.com.au
Sun Nov 10 20:41:00 EST 2002


Alex Martelli <aleax at aleax.it> writes:

> 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.

I agree with everything you say here w.r.t. Python. I think it's a
wonderfully simple and powerful language, and its design is in good
hands. I don't particularly expect or want Python to acquire a macro
facility. I like it just as it is.

With regard to Lisp, though, I don't believe that macros preclude
simplicity or unity of vision, provided they're used sparingly and
intelligently. An average programmer can make a horrible mess with
macros, true enough. But the other side of the coin is that an
intelligent language designer (or group of designers) can design and
implement new macros that blend seamlessly with the existing
language. The base language can be adapted and extended to support new
programming styles (or paradigms) as they arise, without the need to
rewrite the core language and the guts of its implementation. These
new macros can be standardised and used by mere mortals (like me) in
due course.

For application programmers, I don't see macros as a huge selling
point. I tend to think of Lisp as an extremely powerful and pleasant
high-level language, much like Python, but with a different set of
strengths and weaknesses.

When you say that a (Python) macro system might eventually doom Python
to obscurity (too!), you may be right. I don't want to argue
that. However, the implication that Lisp is (already) doomed to
obscurity (if that's indeed what you meant), is very questionable. I
think it's way too early to call.

My own hunch is that, fifty years from now, there will be no
programming language or data representation notation that closely
resembles any of today's popular languages, BUT there will probably be
something that resembles Lisp. That is, unless we make unexpected
advances in how programming is done, there will still be a language in
which code and data are interchangeable, a language that can
manipulate itself in itself, and extend its core functionality without
needing to be redesigned and reimplemented.

I think you're absolutely right when you say that simplicity is a
crucial criterion of good design. Unlike most people (it seems), I
believe Lisp possesses this innate beauty and simplicity. Common Lisp
is a *large* language, to be sure, but I don't believe it is
complicated in the way that, say, C++ is complicated. It has a simple
core, and a lot of powerful functionality flowers out from that simple
core, just like an intricate mandala or fractal pattern is created out
simple motifs.

Lisp and Python are my two favourite languages today, by a long
shot. I enjoy them both for different reasons (lots of overlapping
ones too). I suspect that many Pythonistas would have a *lot* of fun
with Lisp. Python fits our brains, partly because it is built on
already-familiar concepts but allows us to work some black magic as
well. Lisp does this too but, if you're so inclined, it's a great
language for extending and maybe reconfiguring your (programming)
brain in new directions.

Personally: if I have a job to do, I use Python wherever
possible. It's fun, convenient, easy, and it has all the libraries I
need. If I have an unusual idea that I'd like to experiment with, I
use Lisp or Python, depending on the idea.

>From a non-personal perspective, though, I believe that Lisp offers
more potential for real innovations in the way we will represent and
manipulate "knowledge" in the future. 



More information about the Python-list mailing list