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

Pascal Costanza costanza at web.de
Sun Dec 1 15:56:35 EST 2002


Lulu of the Lotus-Eaters wrote:
> Kenny Tilton <ktilton at nyc.rr.com> wrote previously:
> |>>The bottom line is that no regular Lisper is bothered by parens [...]
> 
> |Anders J. Munch wrote:
> |> Or to put it another way, noone who is bothered by parens becomes a
> |> regular Lisper.
> 
> Kenny Tilton <ktilton at nyc.rr.com> wrote previously:
> |Cute, but I will go out on a limb and say no one who tried Lisp and
> |liked it was driven away by parens.
> 
> Well... isn't that -exactly- Anders point (and the point of the other
> 99.9% of programmers who don't use Lisp)?!
> 
> Most people who tried Lisp didn't like it BECAUSE of the parens.  They
> drive away programmers like me... ones who otherwise like multi-paradigm
> languages, functional coding, dynamic typing, etc.  Python I love.
> Haskell looks really cool (but admittedly I haven't done anything real
> with it).  Ruby has an appeal.  Smalltalk, ditto.  I've even written
> some Perl code.
> 
> But despite (or because of) reading several popular and widely
> recommended Lisp books, I just cannot look at it for very long -because
> of the parens-.

I hope that you (and anybody else) don't understand the following as an 
attack, but: People who dislike Lisp because of the parens haven't yet 
(fully) understood the essence of Lisp. I have said this several times 
before - the most important feature of Lisp is that code and data are 
the same. Therefore, you need a syntax that is equally suited for 
representing both code and data. S-expressions are just among the 
simplest representations for both code and data. (Something like XML 
could also be used, for example, because it is also suited for 
expressing both code and data - however, readability of XML is even 
worse than that of sexprs, isn't it? ;)

To put it the other way around: If you ask for a language that is like 
Lisp but that has a syntax that distinguishes between code and data, 
then you wouldn't get Lisp anymore. The syntax of Lisp is not just a 
superficial, aesthetic element of the language, but it is closely tied 
to the core idea of Lisp.

People who like Lisp don't like it because of the syntax, but they do so 
because they appreciate the core of Lisp that is the root of its 
expressive power. The syntax has become secondary by then. You could 
state it like this: Lisp's readability is just good enough - it's the 
best you can get when you want to have the expressive power of Lisp. Any 
"improvement" of the Lisp syntax would actually have a negative impact 
on the core of the language.

This is exactly the reason why newbies are scared away by Lisp's unusual 
syntax - they think they can improve what they think of as just a 
superficial level while it's actually not superficial at all. It's only 
when you have done some actual serious programming in Lisp that you 
start to appreciate the expressive power of Lisp and consequentially its 
syntax.

Of course, this is not a good starting point for increasing the 
popularity of Lisp, but there's nothing we can do about it - any 
non-trivial change to Lisp's syntax would result in something that isn't 
Lisp anymore.

> The thing is, I really WANT to like Lisp.  I just cannot seem to force
> myself to.  Then again, emacs also seems like a strange, unmanageable
> monstrosity... so I guess those go hand in hand.

You don't need to learn emacs. All the major commercial vendors of 
Common Lisp provide their own IDE with Lisp-aware editors, and these 
come in reasonable free-for-personal-use or at least quite-cheap 
versions, for most operating systems that are in use nowadays. (Allegro 
Common Lisp, Corman Lisp, Macintosh Common Lisp, LispWorks)

Some of the open-source Common Lisps also come with their own 
development environments. So there's plenty of choice in this regard.

About the core ideas of Lisp that result in its expressive power: If 
there's only one paper about Lisp you are allowed to read it should be 
http://www.paulgraham.com/rootsoflisp.html. If there's two, you should 
include ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-453.pdf. 
(Of course, these are only my personal opinions. ;)


Pascal

-- 
Given any rule, however ‘fundamental’ or ‘necessary’ for science, there 
are always circumstances when it is advisable not only to ignore the 
rule, but to adopt its opposite. - Paul Feyerabend




More information about the Python-list mailing list