do...until wisdom needed...

John Flynn transpicio at yahoo.com.au
Wed May 9 02:30:07 EDT 2001


"Alex Martelli" <aleaxit at yahoo.com> wrote:

> I'm not sure there ARE real-world lessons to be
> learned from [Lisp's unpopularity etc], but, I still wonder...

Maybe technology trends are chaotic systems, as unpredicatable as the stock
market or the weather? Not a very satisfying answer though, is it? (Nah, I
don't buy it either).

I too would like to know what drives language choices.

I do this stuff mostly for fun, so I can't contribute much insight into the
social, economic, political (or even technical) forces behind trends in
language choice. I do find it psychologically interesting though ...

Having only just started learning Common Lisp (and Python too for that
matter), my first impression is: wow! Why is this thing languishing in
obscurity?

On complexity: Yes, Common Lisp is large and certainly complicated -
relative to Scheme - which I guess is the context in which you meant it.
(I'd wager that you know more about CL than I do, so perhaps you have better
reasons for disliking the complexity). The only other comparably complex
language I know is C++ and, relative to C++, CL seems quite simple. My early
impression is that the core of Common Lisp is very clean and very potent.
The complexity flowers out from a simple central motif, like a rich mandala.
I love it.

By contrast, Scheme feels - to me - exactly what its provenance suggests: a
nice, simple algorithmic teaching language - somewhat uncomfortably spartan
in furnishings. (Python, I know, has similar provenance, but I find Python
_very_ comfortable. Nice and simple, yet it does not feel at all 'bare' in
the way that Scheme does. Far from it).

It's all hypothetical to me, but if I were starting a commercial project
tomorrow, had unlimited freedom in my choice of tools, was in charge of
hiring and firing, and wanted to have something up and running this year, I
believe I _would_ use Common Lisp (or at least try to). Actually, I'd
consider Python first, but Lisp would seem to be ideal for situations in
which the cost of Python's interpreter is too high, especially if the
speed-sensitive components were too large (and tedious) to write in C.

What alternatives would I have for my 'startup'? Well ... again bearing in
mind that I'm no expert, and that it's all hypothetical, and that all the
circumstances are ideal, and that I only know a few languages, my personal
choices would be:

C++? Great for super-efficient 'finalisation' code, but far too painful to
design in.

Haskell, Miranda, other FP? Theoretically interesting, but I don't know 'em
well enough to do much of practical value.

Eiffel? I like it a lot, but for the same reason that you - Alex - wouldn't
use Lisp/Scheme, I wouldn't use Eiffel these days. That is to say, I have no
idea why I wouldn't use it ;-) [*]

Java? Clean, shiny, new, comfortable, consistent, uniform, elegant, easily
recyclable, component oriented evolution of C++ without the knotty
outgrowths and sharp edges? No... when I hear this crap I want to shout:
Plastic! Formica! Polystyrene! Rubber! Linoleum! Call me an aesthete, but
after several attempts to like Java, I still can't - and have given up
trying. I find it hard to imagine that any hacker would use it by choice.

(Actually I'm no aesthete. Give me the gristle and fangs, warts and hair of
C++ any day).

Strangely enough, in spite of its alleged similarities to Java, C# does NOT
strike me the same way. Not at all. I find it simple, elegant, quite
powerful, and fun to use. (Surprisingly efficient too!)

So, I dunno. Either I don't think the way most programmers do (and I
certainly don't claim to be any better than most), or there are compelling
(technical and/or other) reasons to use the more popular alternatives that I
just can't see.

Since nobody else seems to know these reasons, I might as well hazard a few
guesses:

* Safety in numbers:
The desire to back a winner, and ride the bandwagon. Failure of many 'AI'
companies in the '80s contributing to bad press for Lisp, coinciding with
the rise of C++. Emergence of hot (huh!) new languages during the web era.
There must have been a point where, psychologically - in the minds of
investors and developers, Lisp became a thing of the past, associated with a
few widely publicised failures, while Java et al were being touted as 'the
future'. Novelty and hype generates its own momentum (as we're all sick to
death of finding out).

* Moving with the times:
Maybe Lisp (as an environment, not as a language) didn't adapt to the
industry but remained (perhaps a little disdainfully?) aloof. Eg. AFAIK,
there's still no high quality open source bindings that would allow CL to
take advantage of good stuff like GTK+ or Qt, though I can't see any
technical reason why it couldn't be done, and done well. (Not that I'm
anywhere near skilled enough to volunteer, mind you!).

I think Lisp would also have been a great choice for filling the client-side
web niche that Java (and now Curl) tried to fill. It would also be an
excellent language for server side web programming (and, as far as I can
tell, offers facilities for doing everything that XML tries to do - and
more). But, for whatever reason, it didn't happen that way. The energy
flowed elsewhere ...

[*] Alex: since you can't quite finger your personal reasons for not wanting
to use Lisp/Scheme - even though they were strong early influences, I wonder
whether, rather than being permanent, early influences (like old clothes and
old loves) become something that one "grows out of".

Maybe there's a "moving on" factor at work. Eiffel was the first language I
_really_ liked. The thought of using it today leaves me cold, but I still
think it's an excellent language, and I can't see good technical reasons for
my attitude.

The fact that you chose a _completely_ unfamiliar language - Modula-2 -
tends to support the hypothesis...






More information about the Python-list mailing list