[comp.lang.clos] Goats, Wolves, and Sheep

jonl%kuwait@LUCID.COM (Jon L White) (05/30/91)

Hmmmm, Walter sure has "pushed a lot of buttons" with his critique of
industrial-quality lisp usage!  I had wanted to reply to them -- point
by point -- as to what the various vendors are doing, and to outline why,
in theory, these problems are solvable.  But many of you folks have
already beaten me to the punch on this.  And besides, _I_ might appear to
be biased to the point of propangandizing for Lucid's particular delivery
solutions.  Instead, I want to explore a point that is orthogonal to the
usual "bull session discussions" that proffer potential technical solutions
to these real-or-imagined technical bottlenecks.

One thing you said is most interesting:

    Yes, from what i've read ProKappa sounds like a cleverly disguised LISP in
    C clothing.  This certainly may have some marketing advantages these days,
    but who knows about technical. . . .

This may provide some insight into the spate of judgements, rendered during
the past couple of years, against Lisp and towards C.  For example, what
Walter says can often be directly verified; e.g.,

   "...the language [Lisp] is sufficiently remote from the machine that
    it is not always easy to understand the efficiency tradeoffs of
    using different constructs."

This is true even when his main sub-point is trivially refutable -- i.e.:

   "LISP code is *** always *** significantly slower than C code . . ."

[my emphasis added].  Similary, he claims Lisp is a "Memory hog" -- a point
which can more or less be conceded -- yet he also claims:

   "The base development image for Sun Common LISP takes 14 MB!"

despite the fact that Sun Common Lisp's so-called base image takes only
about 6.5MB on disk (maybe he was referring to his developmental "base",
which might include a humongous amount of optional software?  and he
didn't comment at all about the working-set size, which is of infinite
more importance than the requisite virtual memory size.)

I can also appreciate his comment about the cultural isolation of the
world of Lisp programmers.


But what Walter DIDN'T touch upon at all is the really hard part -- the
part that usually cannot be easily verified, and the part that makes your
remark about the "LISP in C" clothing so cogent.  One usually cannot tell
just what effect the Lisp "defects" have on the marketability of a winning
product.  So what! if some stellar, cost-saving application runs 15% slower
when delivered in Lisp than would be _theoretically_ possible if delivered
in C; or even 50% slower!  [Why, the Lisp-to-C conversion cost itself could
be on the order of hundreds of thousands of dollars; how expensive do CPU
cycles have to be to amortize that kind of development cost?]   So what! if
one needs 16MB or more of real memory, rather than the paltry 8MB or 12MB
common to the low-end workstations, when the software product itself costs
well in excess of even a high-end workstation?  And with commercial prices
for SparcStation memory hovering around $50/MB, the incremental cost here
is less than the total cost for the workstation's CRT monitor!

The critical observation is  --  It's a lot easier to document the micro-
benchmark technical issues of an OS, or a  Computer Language, one is using
than to analyze, even in hindsight, the true contribution to software product
success due to one's choice of programming methodology, programming language,
or programming tools.

Indeed, there may be marketing advantages to dress up the old Lisp wolf in
the C Sheep's clothing (such as by pushing a ProKappa over a Lisp-based KEE.)
Or, perhaps, it simply is time to admit that no matter how easy and fun it
was to code up the product in Lisp, it really didn't didn't take advantage
of Lisp's features -- e.g., do we really need a Lotus-1-2-3 clone written in
Lisp?  (by the way, I certainly don't consider KEE in this category.)  And
there may even be a hint of technological obsolescence in some products
regardless of the language upon which they are built, which could happen for
any product that has been essentially riding the AI bandwagon.

However, the new re-packaging gives an opportunity to sell new hopes and
dreams.  The consumers of software, like so many consumers in so many other
markets, are too frequently in the business of buying "hopes and dreams" as
much as of buying secure, certified solutions.  Mike Thome's comparative
figures, for Lisp-comparable functionality when stacked up in the "C/Unix
world", tend to show that the speed/size arguments really are a murky
question; and they can just as easily be used for scapeGoating as for the
technological prelude to some Wolf-and-Sheep games.



-- JonL --

jeff@aiai.edinburgh.ac.uk (Jeff Dalton) (05/31/91)

> One thing you said is most interesting:
>
>   Yes, from what i've read ProKappa sounds like a cleverly disguised LISP in
>   C clothing.  This certainly may have some marketing advantages these days,
>   but who knows about technical. . . .

> But what Walter DIDN'T touch upon at all is the really hard part -- the
> part that usually cannot be easily verified, and the part that makes your
> remark about the "LISP in C" clothing so cogent.  One usually cannot tell
> just what effect the Lisp "defects" have on the marketability of a winning
> product.  So what! if some stellar, cost-saving application runs 15% slower
> when delivered in Lisp than would be _theoretically_ possible if delivered
> in C; or even 50% slower!

Well, that's right -- in cases where the users don't find the
application especially slow, don't think they have a fair idea how
much faster it could be theoretically, and don't see much prospect
of getting the theoretical alternative in any case.

> [Why, the Lisp-to-C conversion cost itself could be on the order of
> hundreds of thousands of dollars; how expensive do CPU cycles have
> to be to amortize that kind of development cost?]

There doesn't have to be any Lisp-to-C conversion if you start in C.
In my opinion, that is one reason why tools, such as ProKappa, that
will be used for developing applications, are moving towards C.
People want to start in C and avoid Lisp altogether.

> So what! if needs 16MB or more of real memory, rather than the paltry
> 8MB or 12MB common to the low-end workstations, when the software product
> itself costs well in excess of even a high-end workstation?  And with
> commercial prices for SparcStation memory hovering around $50/MB, the
> incremental cost here is less than the total cost for the workstation's
> CRT monitor!

Well, that might explain why some Common Lisp implementations are so
large.  The people who can't afford to get enough 16M+ machines, or
who need all the megabytes they can get just for their application, or
who are trying to sell software that does not cost well in excess of
even a low-end workstation, for example, are just not part of the
intended market for those Common Lisps.

That would be fine, if there were other Common Lisps that met their
needs.  But for many purposes there are not, and Lisp's image has
suffered accordingly.

Nonetheless, I agree with much of what you say.  Indeed, I introduced
ProKappa (at least I think it was me) into this thread because:

   it seems rather strange that when machines are becoming so much
   faster and memory so much cheaper we find people thinking it will
   be a big win to move from, say, KEE to ProKappa.  The advanatges of
   a C-based system are relatively less than they used to be, I would
   think.

One factor may be that there is sometimes a feeling that ProKappa
applications will be easier to move to PCs -- a bigger market than
the workstation one.

> The critical observation is  --  It's a lot easier to document the micro-
> benchmark technical issues of an OS, or a  Computer Language, one is using
> than to analyze, even in hindsight, the true contribution to software product
> success due to one's choice of programming methodology, programming language,
> or programming tools.

But decisions aren't always based on a correct analysis of the true
contributions.  For example, if a program is slow and spends lots of
time garbage collecting and is written in Lisp, people may well think:
"Lisp uses garbage collection, hence these delays.  C doesn't use
garbage collection so it won't have this problem."  And they may
even be right, though C may have other problems.

> However, the new re-packaging gives an opportunity to sell new hopes and
> dreams.  The consumers of software, like so many consumers in so many other
> markets, are too frequently in the business of buying "hopes and dreams" as
> much as of buying secure, certified solutions.

Many people are convinced that systems written in Lisp will automatically
be unacceptably be large and slow.  C's reputation is the opposite.
It's not irrelevant that it's a change to C rather than just a change.

-- jd