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

Carl Banks imbosol at vt.edu
Fri Nov 8 19:53:45 EST 2002


Oleg wrote:
> Hi
> 
> I don't know much about Python, but I looked at this comparison
> between Python and Common Lisp (
> http://www.norvig.com/python-lisp.html ), and I couldn't help but
> wonder why Python is popular, while Common Lisp and Scheme aren't?


As cool as Lisp is, it is too low-level, too hard to learn, too
weird-looking, and way too different from C (at all levels) to gain
much popularity.

The real problem is that, while Python makes a significant effort to
accomodate human thinking (i.e., Python lets programmers think like
humans instead of machines a lot of the time), Lisp doesn't put a high
priority on this.  If programming in assembly language is "thinking
like the processor," then programming in Lisp is "thinking like the
compiler."

Examples of way Python accomodates human thinking more than Lisp:

Python represents logical nesting the same way human read it, by
indentation.  Lisp repesents all nesting with parentheses, which is
not too different from how humans think if the nesting is not too deep
(and, indeed, Python does use parentheses for nesting expressions).
But when the nesting levels get more than three or so deep, everyone
who isn't Rain Man loses track and has to count parentheses to parse
it.

Python uses infix notation for math.  Most humans were brought up to
understand infix.

Python controls evaluation completely, whereas Lisp gives programmers
control of evaluation.  Humans don't like to think about when
something will be evaluated, and a lot of Python programmers aren't
even aware of the significance of evaluation time.  The reason Python
programmers often don't have to think about it is most of the time
it's intuitive.  When a programmer sees a for loop, he or she knows
the statements will be evaluated intuitively, without having having to
explicitly think about evaluation time.  In most other cases, the
programmer expects things evaluated immediately.  Python accomodates
the human thinker by doing what the human thinker expects (most of the
time--there are always tricky cases like default arguments).  Lisp, by
giving control of evaluation to the programmer, forces the programmer
to think about evaluation time rather than intuit it.

Python is more like C than Lisp at all levels.  One aspect of human
thinking is that humans can learn new ways to think.  Another aspect
of human thinking is that many humans don't like to learn new ways to
think.  Most programmers are taught C; and in learning C they learned
a certain way to think.  Many programmers realize the limitations of C
and seek a more dynamic language.  Python and Lisp will both do, but
Python, requiring less of a change in thinking, is going to be chosen
more.


There are many, many factors that determine the poularity of a
langauge.  In this case, I think the main factor is that Python just
thinks more like we do than Lisp.


-- 
CARL BANKS



More information about the Python-list mailing list