[comp.lang.lisp] So who's really using LISP?

kroger@scarecrow.cognet.ucla.edu (James Kroger) (02/06/91)

Someone from Franz stated in a recent post that (I paraphrase)
LISP is still profitable, and adapting to real-world needs
just fine.

I'm in a research lab where AI-type programs 
are the norm. The actual programming on these usually is 
done by undergraduates and grad students, as is
true of most university labs. The language most often used
used to be LISP (we even have an Explorer), but simply because
of the preference of the programmers, the language of choice
is more often C now. I seldom hear of anyone using LISP anymore,
and having worked in both industry AI labs and university AI research,
am becoming convinced that LISP is indeed (to my dismay) fading away,
albeit slowly. 

I think it would be quite interesting and appropriate at this
juncture for someone who is in a position to know (ie, Franz)
to tell us just who IS using LISP these days, and for what. 

Thanks,

--Jim Kroger

kaplan@spruce.cs.uiuc.edu (Simon Kaplan) (02/07/91)

well, for what it is worth, the University of Illinois has several large
groups in the "software engineering" area.  (or systems, or whatever your
favorite term is).  Common Lisp (usually with CLOS) is heavily used by my
research group, and is used by at least two others.  This doesnt include
the AI groups here, but I'm pretty sure they use a mix of CL and Prolog.

We used to do all our programming in C, and have now switched almost
exclusively to Lisp, using C as a portable assembler when the need is dire.

We used to use AKCL+PCL, then switched to Allegro CL+PCL, now using that
and Allegro CL 4.0, which included CLOS.

Of course this is just one datum, but there it is.  

-- Simon

--
Simon Kaplan					kaplan@cs.uiuc.edu 
Department of Computer Science			uiucdcs!kaplan@uunet.uu.net
University of Illinois at Urbana-Champaign	
1304 W. Springfield Ave				phone: +1 217 244 0392
Urbana Illinois 61801, USA			fax:   +1 217 333 3501

espen@math.uio.no (Espen J. Vestre) (02/07/91)

In article <806@mara.cognet.ucla.edu> kroger@scarecrow.cognet.ucla.edu 
(James Kroger) writes:
> I'm in a research lab where AI-type programs 
> are the norm. The actual programming on these usually is 
> done by undergraduates and grad students, as is
> true of most university labs. The language most often used
> used to be LISP (we even have an Explorer), but simply because
> of the preference of the programmers, the language of choice
> is more often C now. I seldom hear of anyone using LISP anymore,

Hm.  Why don't you force these students to learn lisp?  It isn't good to 
grow up thinking C is all that there is to programming.  Being sort of at 
the fringe of the AI Society (doing natural language semantics / 
computational linguistics), I wonder what kinds of "AI programs" it is 
that someone ever could prefer to write in C.  I guess the least you need 
is a pile of C code to simulate some things that come for free in lisp:  
For instance _atoms_ (symbols), which is the most basic need for doing 
symbolic programming.  Does these guys reinvent atoms every time they need 
them (or worse, are they doing it all with strings??), or are there some 
nice libraries around which gives you some of the functionality of lisp 
inside C??

-----------------------------------------
Espen J. Vestre                 
Department of Mathematics
University of Oslo
P.o. Box 1053 Blindern
N-0316 OSLO 3
NORWAY                            espen@math.uio.no
-----------------------------------------

ajs@prg.ox.ac.uk (Adolfo Socorro) (02/07/91)

At Oxford and SRI International, we use AKCL for the development of the OBJ
family of languages and systems.

I was at UMass-Amherst before, and there Common Lisp is used in the
implementation of an extension of the Boyer-Moore theorem prover, and for the
development of a (prototype of a) database language that is connected to the
prover. The AI groups use a combination of Common Lisp and C.

Adolfo

weigele@bosun2.informatik.uni-hamburg.de (Martin Weigele) (02/11/91)

ajs@prg.ox.ac.uk (Adolfo Socorro) writes:

>At Oxford and SRI International, we use AKCL for the development of the OBJ
>family of languages and systems.

[Hi Adolfo -]
I think the crucial question about programming languages is the way of
thinking and the attitude towards programming problems they encourage. 

Historically, lisp was the language of choice for the AI people because
of its at that time exceptional abilities of symbol manipulation and
list processing.

As a least common denominator, Common Lisp was then created to be as
compatible as possible with the existing lisp families.

Nowadays, I think that Common Lisp has become a dinosaur because of the
incredibly many features built in - also known as "creeping featurism" -
as a result of the desire to be as compatible as possible. Languages
like scheme seem much "cleaner" and "nicer". But even scheme lacks the
kind of type support available in the modula/pascal/oberon language family,
or in languages like ML.

On the other hand, the widespread use of Common Lisp in the AI community
and the fact that with some programming self-discipline, you can write
decent and powerful programmes might still justify its use. Also, the more 
specification languages are really used in programming projects, perhaps
the less important the features of the programming languages at least
at the stage of system analysis, and the less incentive from throwing
away the built-up know-how of an existing programming language.

Martin Weigele
FB Informatik, Uni Hamburg, Germany

phil@Neon.Stanford.EDU (Phil Stubblefield) (02/12/91)

In article <weigele.666261076@bosun2> weigele@bosun2.informatik.uni-hamburg.de
 (Martin Weigele) writes:

>As a least common denominator, Common Lisp was then created to be as
>compatible as possible with the existing lisp families.
>
>Nowadays, I think that Common Lisp has become a dinosaur because of the
>incredibly many features built in - also known as "creeping featurism" -
>as a result of the desire to be as compatible as possible. Languages
>like scheme seem much "cleaner" and "nicer".

Recently I've been rereading Tracy Kidder's _The_Soul_of_a_New_
_Machine_.  (For the uninitiated, it's about Data General's attempt to
develop their first 32-bit machine, partly in response to the then-new
VAX.)  At one point, a microcoder for the Eagle project was talking
about how wonderful was the VAX's complex and powerful instruction
set.  Having taken a computer architecture class from one of the
Stanford RISC proponents, my thoughts were, "Microcode?  CISC?
Bleah!"

What does this have to do with Lisp, you ask?  Well, it occurred to me
that there are some parallels between the two stories.  The VAX was
the logical outgrowth of some of the theories of the day about machine
design.  A quick glance through my VAX-11 Programming Card reveals 325
separate assembler mnemonics, including thirty "Branch on <condition>"
instructions, fifty type conversion instructions, and even four
instructions for performing queue operations using hardware locking!
The table titled "Assembler Notation for Addressing Modes" contains
sixty entries, including "@L^12(R10)[R11]", for "forced longword
displacement deferred indexed".  Talk about "creeping featurism"!  In
terms of size, this was (and is) truly a Common-Lisp-sized
architecture.

In addition, the VAX was designed to be as compatible as possible
across the entire family line, and also upwards compatible with the
PDP-11, at least for the VAX-11's.  I think this is an interesting
comparison to Common Lisp's desire "to be as compatible as possible
with the existing lisp families."

In contrast, it seems that Scheme is to Common Lisp what the new RISC
wave is to the VAX.  Scheme seems like a cry of "Enough already!" to
the complexities of Common Lisp, although I know far too little about
Scheme to ascibe motives to its designers.

(BTW, I program in Common Lisp almost exclusively, and would hate to
have to switch to a non-Lispish language.)
-- 

Phil Stubblefield                                        (415) 325-7165
Rockwell Palo Alto Laboratory                    phil@rpal.rockwell.com

jeff@aiai.ed.ac.uk (Jeff Dalton) (02/12/91)

In article <weigele.666261076@bosun2> weigele@bosun2.informatik.uni-hamburg.de (Martin Weigele) writes:
>Nowadays, I think that Common Lisp has become a dinosaur because of the
>incredibly many features built in - also known as "creeping featurism" -
>as a result of the desire to be as compatible as possible. Languages
>like scheme seem much "cleaner" and "nicer". But even scheme lacks the
>kind of type support available in the modula/pascal/oberon language family,
>or in languages like ML.

I'm glad it doesn't have the kind of "type support" available in
Pascal.

ML is reasonably flexible as far as types are concerned, but lacks too
many things (eg, much in the way of I/O, a good macro mechanism).

In short, Lisp still wins.  If you want something smaller and cleaner
than CL, try Scheme.

BTW, the idea that CL has too many features out of a desire to be
compatible with older dialects isn't quite right.  For example, the
scoping rules in CL are a cleanup and generalization of those in
(compiled) MacLisp, not (as some have supposed) a mix of things from
different dialects.

-- jd

alms@cambridge.apple.com (Andrew L. M. Shalit) (02/12/91)

In article <1991Feb11.204514.19880@Neon.Stanford.EDU> phil@Neon.Stanford.EDU (Phil Stubblefield) writes:

   In contrast, it seems that Scheme is to Common Lisp what the new RISC
   wave is to the VAX.  Scheme seems like a cry of "Enough already!" to
   the complexities of Common Lisp, although I know far too little about
   Scheme to ascibe motives to its designers.

This is an interesting comparison, but I think there's an important
difference to keep in mind.  In theory, no one is supposed to have to
write much RISC assembler code.  Everyone is supposed to write in a
"higher level language" (read as: "C").  Only the compiler authors
need to know about the arcane simplicity of the instruction set.

In contrast, Lisp (whether Common Lisp or Scheme) is supposed to be a
language that people actually use day to day for programming.  The
common complaint about Scheme is that it is too small for real work,
that it needs lots of libraries.

I think the problem with Common Lisp is a combination of size,
redundancy, and inconsistancy.  So, maybe there *is* a parallel
after all :-)

   (BTW, I program in Common Lisp almost exclusively, and would hate to
   have to switch to a non-Lispish language.)

Congratulations!

   -andrew
--

jeff@aiai.ed.ac.uk (Jeff Dalton) (02/12/91)

In article <1991Feb11.204514.19880@Neon.Stanford.EDU> phil@Neon.Stanford.EDU (Phil Stubblefield) writes:
>In addition, the VAX was designed to be as compatible as possible
>across the entire family line, and also upwards compatible with the
>PDP-11, at least for the VAX-11's.  I think this is an interesting
>comparison to Common Lisp's desire "to be as compatible as possible
>with the existing lisp families."
>
>In contrast, it seems that Scheme is to Common Lisp what the new RISC
>wave is to the VAX.  Scheme seems like a cry of "Enough already!" to
>the complexities of Common Lisp, although I know far too little about
>Scheme to ascibe motives to its designers.

I like the CL : CISC :: Scheme : RISC analogy.  However, I think
it's worth bearing in mind that Common Lisp wasn't meant to include
everything from every Lisp or to be a union of (all good features
of) all Lisps.  Indeed, some people have criticized the CL designers
for making a MacLisp sucessor and not paying enough attention to the
rest of the Lisp world (eg, InterLisp, PSL, Lisp/VM), although they
aren't necessarily arguing for CL to be bigger.

jinx@zurich.ai.mit.edu (Guillermo J. Rozas) (02/13/91)

    Nowadays, I think that Common Lisp has become a dinosaur because of the
    incredibly many features built in - also known as "creeping featurism" -
    as a result of the desire to be as compatible as possible. Languages
    like scheme seem much "cleaner" and "nicer". But even scheme lacks the
    kind of type support available in the modula/pascal/oberon language family,
    or in languages like ML.

Your statement seems to imply that there is consensus that such type
systems are desirable.  Some of us in the Scheme community, and I bet
many in the Lisp community, view such type systems as a step
backwards, not forwards.  I realize that this is a matter of taste,
but there are good arguments for both kinds of type systems.  Rather
than choosing one over the other, it's even better to have a choice,
so don't look for the ultimate language, because it would probably be
a dinosaur or boring.

jinx@zurich.ai.mit.edu (Guillermo J. Rozas) (02/13/91)

    In contrast, it seems that Scheme is to Common Lisp what the new RISC
    wave is to the VAX.  Scheme seems like a cry of "Enough already!" to
    the complexities of Common Lisp, although I know far too little about
    Scheme to ascibe motives to its designers.

Although reducing the size of the instruction set and addressing modes
seems to be a performance win in architecture, it is not clear that
reducing the size of a programming language is desireable.  The real
question is what the expressive power of the language is and whether
Scheme "gives up" some of Common Lisp's expressive power.  I don't
think the answer is clear.

In other words, richer languages don't necessarily mean slower or
worse languages, while it seems that richer instruction sets mean
slower machines.

I am firmly in the Scheme community but often envy Common Lisp
constructs and features.

scheng@ccwf.cc.utexas.edu (David Boles) (02/13/91)

In article <JINX.91Feb12132549@chamarti.ai.mit.edu> jinx@zurich.ai.mit.edu writes:
>In other words, richer languages don't necessarily mean slower or
>worse languages, while it seems that richer instruction sets mean
>slower machines.

Not necessarily, the IBM RIOS processor delivers more performance
per Hz than any other processor used in a box and it has more than
180 instructions. RISC indeed :)

--
David Boles
apas611@hermes.chpc.utexas.edu

davis@barbes.ilog.fr (Harley Davis) (02/13/91)

In article <weigele.666261076@bosun2> weigele@bosun2.informatik.uni-hamburg.de (Martin Weigele) writes:

   Nowadays, I think that Common Lisp has become a dinosaur because of the
   incredibly many features built in - also known as "creeping featurism" -
   as a result of the desire to be as compatible as possible. Languages
   like scheme seem much "cleaner" and "nicer". But even scheme lacks the
   kind of type support available in the modula/pascal/oberon language family,
   or in languages like ML.

I'd like to point out EuLisp, under development here in Europe.  It is
a multi-layered, Scheme-like language with an extensible class system,
generic functions, and modules.  At its lowest level, level-0, it is
small like Scheme.  At higher levels, more interesting and complex
CommonLisp-like functionality is added, including a metaobject
protocol for the object system, and many libraries.

You can get more information about EuLisp, including the latest
version of the specification (subject to change at any time) and a PD
implementation, by sending mail to eudist@maths.bath.ac.uk.

EuLisp is not yet finished, but I think it points the way toward a
plausible future for Lisp, supporting both the complex, high-level
applications with rapid development cycles we are used to in Lisp, and
commercially viable delivery systems.

-- Harley
--
------------------------------------------------------------------------------
nom: Harley Davis			ILOG S.A.
net: davis@ilog.fr			2 Avenue Gallie'ni, BP 85
tel: (33 1) 46 63 66 66			94253 Gentilly Cedex, France

lkramer@brahms.udel.edu (Laurence Kramer) (02/14/91)

Anybody in a research AI lab type environment that is programing in
C rather than Lisp needs their head examined.  Lisp is clearly a better
prototyping/research environment due to its interactive nature.  (Besides
other benefits).

It is my opinion that the grads and undergrads that you mentioned are prob-
ably programming in C because they don't know any better (i.e., have done
most of their academic coursework in C, and been only briefly exposed to
Lisp).

Enough of the diatribe.  As to your question:  We at Quantum Software (a
smallish software house specializing in AI applications) do 90% of our
coding in Lisp.  The other 10% is in C, primarily for the systems' related
aspects of our programs.  We also use C to "hand compile" some functions
within our Lisp deliverables which are particularly time critical.

Larry

pcg@cs.aber.ac.uk (Piercarlo Grandi) (02/15/91)

On 12 Feb 91 18:25:49 GMT, jinx@zurich.ai.mit.edu (Guillermo J. Rozas) said:

jinx> The real question is what the expressive power of the language is
jinx> and whether Scheme "gives up" some of Common Lisp's expressive
jinx> power.  I don't think the answer is clear.

I beg to disagree. To my it is *clear* that the expressive power of
Scheme, with all the options, is superior to that of CL, as Scheme can
do things that CL cannot do in any way. Note that I am not saying that
Scheme can do everything that CL can do *in the same way*; some
rewriting may be needed. But there are things that Scheme can do that CL
cannot do under any rewriting.

jinx> In other words, richer languages don't necessarily mean slower or
jinx> worse languages, while it seems that richer instruction sets mean
jinx> slower machines.

If they are richer, not just bulkier because they include, like the
abominable Ansi C, the libraries in the language definition.

Just look at this: the Scheme report, for the core language, and it is
one that includes (optional) rationals and complexes (arrgggh!), is well
under a hundred pages; the CL one is well over a thousand. Nearly two
orders of magnitude. Does this make CL almost two orders of magnitude
"richer" or "more useful", whatever your metric is, than Scheme?
Hardly...

jinx> I am firmly in the Scheme community but often envy Common Lisp
jinx> constructs and features.

Maybe you just envy the CL libraries -- well, many Scheme
implementations do have libraries as rich as those of most any CL
system; T, and obviously CScheme, that you probably are using, come to
mind. What little is missing can be usually implemented quite easily and
quickly, with much less verbiage than in CL.

CLOS? Well, I have just reread Abelson & Sussman (generics and
packages), and there is something similar there. Not as fanatically
overspecified as CLOS, but, incredibly, not that distant from it.
--
Piercarlo Grandi                   | ARPA: pcg%uk.ac.aber.cs@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcsun!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

jeff@aiai.ed.ac.uk (Jeff Dalton) (02/16/91)

In article <PCG.91Feb15143111@odin.cs.aber.ac.uk> pcg@cs.aber.ac.uk (Piercarlo Grandi) writes:
>jinx> The real question is what the expressive power of the language is
>jinx> and whether Scheme "gives up" some of Common Lisp's expressive
>jinx> power.  I don't think the answer is clear.
>
>I beg to disagree. To my it is *clear* that the expressive power of
>Scheme, with all the options, is superior to that of CL, as Scheme can
>do things that CL cannot do in any way. 

What Scheme has that CL lacks is (full) call/cc and the exact/inexact
distinction for numbers.  Or is there something else I'be forgotten.

Here are some things I can do in CL but not scheme.  I don't think
it matters that much whether they're part of expressive power or not.

  1. Macros (soon to be fixed). 
  2. Definition of a new, distinct data type.
  3. Eval.

>                                          Note that I am not saying that
>Scheme can do everything that CL can do *in the same way*; some
>rewriting may be needed. But there are things that Scheme can do that CL
>cannot do under any rewriting.

Well, you can do a rewriting to get call/cc.  It's not a simple
rewriting, but it's a rewriting.  (I'm thinking of CPS conversion.)

>jinx> I am firmly in the Scheme community but often envy Common Lisp
>jinx> constructs and features.
>
>Maybe you just envy the CL libraries -- well, many Scheme
>implementations do have libraries as rich as those of most any CL
>system; T, and obviously CScheme, that you probably are using, come to
>mind. What little is missing can be usually implemented quite easily and
>quickly, with much less verbiage than in CL.

There's all kinds of stuff in CL that isn't in T.  And CLOS, for
example, cannot be implemented quite easily and quickly.

(To be fair, there are also things in T that are not in CL and
that could not be implemented easily and quickly.)

>CLOS? Well, I have just reread Abelson & Sussman (generics and
>packages), and there is something similar there. Not as fanatically
>overspecified as CLOS, but, incredibly, not that distant from it.

Maybe you don't like CLOS.  Ok.  But don't confuse that with other
issues.  CLOS cannot be implemented easily and quickly in Scheme
(nor, for that matter, in a Common Lisp that doesn't already have
it).  The stuff in Abelson and Sussman can be implemented easily
and quickly in Common Lisp.

-- jd

grant@hqda-ai.UUCP (Pete Grant) (02/19/91)

In article <18736@brahms.udel.edu>, lkramer@brahms.udel.edu (Laurence Kramer) writes:
> Anybody in a research AI lab type environment that is programing in
> C rather than Lisp needs their head examined.  Lisp is clearly a better
> prototyping/research environment due to its interactive nature.  (Besides
> other benefits).
>
Right on.  Lisp is still the King when it comes to rapid software
development, especially in those situations where the goals are not
clearly defined.  At the Army AI Center, we use Lisp almost exclusively
for our work.  There's no way we could achieve anywhere near the same
productivity using C or any other "conventional" systems.  
 
> It is my opinion that the grads and undergrads that you mentioned are prob-
> ably programming in C because they don't know any better (i.e., have done
> most of their academic coursework in C, and been only briefly exposed to
> Lisp).
>
Yes, to be productive in Lisp, one must be proficient in it.  Proficiency
in any language takes time and practice -- and Lisp is no exception. 
I'm going into my 6th year of Lisp programming and am still learning
(and getting better), although the learning curve has flattened considerably.

marti@mint.inf.ethz.ch (Robert Marti) (02/19/91)

In article <1991Feb18.082559@disuns2.epfl.ch> baechler@disuns2.epfl.ch
(Emmanuel Baechler) writes:

> Here, we are still using Common Lisp for all our work, and there is no
> consideration to "go back" to a classical language like C++.

I'm amazed to learn that C++ is a "classical" language.  It certainly
isn't a classical language in my book, so what exactly is your definition
of a classical language?  A strongly-typed language?  An imperative
language?  A language for which (almost) no interpreters exist?
(Note that all of this is true for C++, even though C++ is more of
an object-oriented than an imperative language -- if used correctly.)


> I know that, theoretically, all languages are equivalent,

An interesting statement, especially in conjunction with your remark
on the expressive power of CommonLisp vs Scheme below.


> but I am convinced that without lisp our programs would be unmanageable.

What evidence do you have to support the above statement?  Have you
actually compared at least one nontrivial Lisp application (say >10000
lines of code) with the same application written in another language?
(You may want to look at "C++ versus Lisp: A Case Study", by H. Trickey,
SIGPLAN Notices Vol.23, No.2, February 1988, pp.9-18.  Note that I do
not claim that Trickey's findings generalize to _all_ applications,
though.)


> In addition, the environment of a Lisp Machine help us a lot.

I don't doubt this for one minute.  However, there are quite a few
impressive programming environments for other languages running on
"stock" hardware as well.


> I don't know whether Scheme has really more expressive power than CL.

Didn't you just tell us that "all [sic!] languages are equivalent"?!


While I readily agree that Lisp is a very useful language for certain
kinds of applications -- after all, I teach Scheme in one of my lectures
-- I object to the above sweeping generalizations which appear to be
rampant among _some_ people in the AI community.  

--

Robert Marti                      |  Phone:    +41 1 254 72 60
Institut fur Informationssysteme  |  FAX:      +41 1 262 39 73
ETH-Zentrum                       |  E-Mail:   marti@inf.ethz.ch
CH-8092 Zurich, Switzerland       |

sam@esl.com (Samuel S. Hahn) (02/20/91)

Greetings...

I don't know who started this (I'm late to this particular discussion)
but I must also go on record that there is much in my department that
is quite dependent on Lisp.  In fact, I'd prefer that more of my staff
have Lisp expertise, because of what I know to be true regarding the
productivity of Lisp environments and programmers, and what is
tractable using the environment that I wouldn't seriously consider
using C or other languages.

In specific, there are two subsystems to my current project which are
implemented in Lisp.  One is a document analysis tool, the other a
smart database-cognizant "stuffer" tool. Other components to the total
system are implemented in C and Objective-C, but I don't think we
would have been quite so successful trying these two in anything other
than Lisp.

What's important to us are the tools in the environment, the
incremental nature of Lisp development, and therefore the actual
productivity of my Lisp developers.  In addition, there are constructs
and concepts in Lisp that aren't quite so strongly embodied in most
other languages, so that I find Lisp-cognizant staff are quite a bit
more literate in language issues than most that don't have a Lisp
background.

-- Sam Hahn (sam@esl.com)

mpearson@twilight.gatech.edu (Mark Pearson) (02/21/91)

I've enjoyed following this discussion.

Just to assure you that LISP is not "dead", we
are currently implementing a LISP programming
environment on top of Clouds, a distributed operating
system in development here at Georgia Tech.

The implementation is written in (C)C++, a Clouds
derivative of C++. In this implementation, instances of
user programming environments and knowledge bases which
encapsulate distinct behaviors are stored as large-grained
persistent objects, enabling many users on many
machines to share these environments and knowledge
bases via inter-environment evaluations. Further, these
LISP objects plug and play with other large grained objects
implemented in CC++ and Eiffel (a heap-based, object-oriented
language).

The fact that a group of Operating System researchers
are interested in LISP, and the things it can do in a
distributed system, should put to rest all notions 
that LISP, and its derivatives are on the way out. 

-Mark Pearson

Mark Pearson, Distributed Systems Group/Clouds Project, College of Computing
Georgia Institute of Technology, Atlanta, Georgia, 30332-0280 404-853-9390/1
uucp    : ...!{akgua,decvax,ihnp4,ulysses}!gatech!helios!mpearson
Internet: mpearson@cc.gatech.edu
Mark Pearson, Distributed Systems Group/Clouds Project, College of Computing
Georgia Institute of Technology, Atlanta, Georgia, 30332-0280 404-853-9390/1
uucp    : ...!{akgua,decvax,ihnp4,ulysses}!gatech!helios!mpearson
Internet: mpearson@cc.gatech.edu

jeff@aiai.ed.ac.uk (Jeff Dalton) (03/18/91)

In article <25595@neptune.inf.ethz.ch> marti@mint.inf.ethz.ch (Robert Marti) writes:
>> but I am convinced that without lisp our programs would be unmanageable.
>
>What evidence do you have to support the above statement?  Have you
>actually compared at least one nontrivial Lisp application (say >10000
>lines of code) with the same application written in another language?
>(You may want to look at "C++ versus Lisp: A Case Study", by H. Trickey,
>SIGPLAN Notices Vol.23, No.2, February 1988, pp.9-18.  Note that I do
>not claim that Trickey's findings generalize to _all_ applications,
>though.)

But you think they're true of _his_ application?  That is, if someone
else performed the same experiment they'd get the same result?  

Indeed, when someone says "our programs would be unmanageable"
you need some evidence that those very programs would be manageable,
not that someone once found that they preffered C++ for some other
programs.

What Trickey says is extremely misleading as a guide to what's true,
as opposed to how things appear to someone who prefers C++ to Lisp.
As far as Dickey was concerned compile-time type checking was the
most important difference, and it appears that he would decide
against Lisp no matter what Lisp implementations do so long as
that difference remained.

A common pattern in his observations is to say Lisp has feature X,
but he could code up something in C++ that was nearly as good and
after this initial effort the advantage to Lisp was essentially
removed.  Ok, so in his view print functions are just as good as
an inspector, but this is hardly something with which everyone
will agree.

Moreover, he is strongly influenced by problems with particular
implementations of Lisp (eg, the (real) superiority of dbx over
the Lisp debugger).  He tried to gain a measure of objectivity
by trying two implementations, but he was nonetheless comparing
implementations rather than languages.

I have no objection to people preferring one language over another,
and Trickey has good reasons (from his point of view) for preferring
C++.  What I do object to is the attempt to universalize this
judgement.  Trickey doesn't do this explicitly, but his article
is easily used to that end and goes some way to encourage it.

baechler@disuns2.epfl.ch (Emmanuel Baechler) (03/20/91)

In article <4330@skye.ed.ac.uk>, jeff@aiai.ed.ac.uk (Jeff Dalton) writes:
> In article <25595@neptune.inf.ethz.ch> marti@mint.inf.ethz.ch (Robert
> Marti) writes:
> >> but I am convinced that without lisp our programs would be
> unmanageable.
> >
> >What evidence do you have to support the above statement?  Have you
> >actually compared at least one nontrivial Lisp application (say
> >10000
> >lines of code) with the same application written in another
> language?
> >(You may want to look at "C++ versus Lisp: A Case Study", by H.
> Trickey,
> >SIGPLAN Notices Vol.23, No.2, February 1988, pp.9-18.  Note that I
> do
> >not claim that Trickey's findings generalize to _all_ applications,
> >though.)
> 
> But you think they're true of _his_ application?  That is, if someone
> else performed the same experiment they'd get the same result?  
>

What I am doing is qualitavite reasoning applied to mechanism kinematics.
My code is bigger than 1 Meg. It was (and is) difficult to develop. However
Lisp proved to be *VERY* helpful to do it. I still claim than doing it with
a "classical" (i.e. imperative (and even with an object-oriented extension,
C++ remains imperative)) would have been several orders of magnitude more
difficult.

 Common Lisp is not only, functional, object-oriented, and so on, it is
EXTENSIBLE, wich allows to describe something in a way corresponding to
the problem.

  As all programming languages have a THEORETICALLY equivalent expressive
power, experience showed me that there is a strong difference between theory
and prectice, in the sense that some languages allow to express thing more 
easily than other. This is where Lisp definitely wins. As this difference
between theory and prectice has already been discussed a lot, I won't go
into it any more.

  I have read than some people are extemely happy to build AI programs in
C or whatever else. In a sense, they could also do it in assembly language,
which wouldn't be very different. In my opinion this is like people spending 
their time writing huge programs in assembly langage, because it can be done
ansd because one can win 1 femtosecond on a loop wich might be never executed.
This is simply not the thing to do, because things are not described at the
proper level.
 
E. Baechler
AI Lab
Ecole Polytechnique Federale de Lausanne
MA - Ecublens
1015 Lausanne			Switzerland