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

Pascal Costanza costanza at web.de
Mon Nov 18 14:18:01 EST 2002
Alexander Schmolck wrote:
>>I think the blurred boundaries between the core language and the library in
>>Common Lisp are a big advantage.
> 
> 
[...]

> Another related problem is that Common Lisp doesn't scale well. It is a big
> and complex language and that's it. While this might be a big productivity win
> for an experienced developer who can leverage a large collection of well
> thought out standard functions, it makes it a bad choice for many other
> scenarios (if you knew neight CL nor python, would you rather have your
> application scripted in python or CL?). 

If you had previously worked mainly with languages like Smalltalk, 
Prolog or some other Lisp dialects, Common Lisp would probably be the 
better bet. ;-)

I am only half-joking - of course, it is more likely that people's 
previous backgrounds make it more natural to do things in Python than in 
  Common Lisp. But it always depends on the concrete setting.

>>To summarize some claims, some people say that Common Lisp is too big while
>>some say that it is lacking in APIs. However, you can't say both things at the
>>same time, this would be contradictory. If you want to try a Lispy language
> 
> 
> I see no contradiction. Common lisp, compared to python, for example, is
> lacking in libraries to achieve specific tasks needed for many real world
> applications (such as GUIs, net protocols, text-processing, etc.), but comes,
> unlike to python, with plenty of looping constructs including a Turing
> complete format function, amongst other things. Now python programmers doing
> Numerics don't have to worry about the SOAP module and vice versa for web
> developers, whereas *all* CL programmers have to master loop, dolist, format
> and whatever else lurks in cl:. Since specialized libraries for the task at
> hand win out over more powerful language concepts, with CL you often have to
> know much more in order to be able to do much less than with python.

I understand your point. However, some minor points: For all of the 
areas you mention (GUI, net, text) there exist libraries in Common Lisp. 
And you don't need to know about the details of loop and format, etc., 
in the beginning.

You're right in that you have to know more when you use Common Lisp. 
This is partly the case because the culture is very different when 
compared to Python. Languages like Python, Ruby, Perl, and so on, are 
primarily "single-vendor" languages. (I don't know if this is a good 
wording - I am not a native speaker.) Of course, there are other 
implementations of Python, like Jython, Stackless Python, and so on, but 
the standards are primarily set by one implementation.

The ANSI Common Lisp standard is defined as an abstract definition, and 
there are many vendors that (more or less successfully) implement this 
standard. Many of the complications you mention can be traced back to 
this fact. (For example, Vendor A may provide an excellent GUI API, 
whereas Vendor B may have the best net library - but you may not be able 
to have both. I am making this up, it's not as bad as that - this is 
just to illustrate what I mean.)


> That doesn't mean that python is generally better than CL, it just means that
> people are not as irrational as lispers generally belief for often prefering
> python over CL.

Of course not. I think I have mentioned this before - I don't like 
language advocacy. My take on this is as follows: It pays off to take a 
look at many different languages and learn what they have in common and 
in what respects they differ. It's more important to know the general 
concepts that are common to many languages than to understand the 
accidental details of a particular language (of course, you should also 
know a certain number of languages on a very detailed level).

In the long run, this allows you to be productive in almost any language 
in a short amount of time. The more often your head has been turned 
around by new languages/concepts the better. ;)

There are studies that show that knowing several languages well is one 
of the most noticeable common characteristic of good programmers.

So, for example, a set of languages I would propose to learn includes 
Common Lisp, Scheme, Haskell, OCaml, Prolog, Python, Ruby, gbeta. (Not 
that I know them all... ;)

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