Subject: Re: Common LISP: The Next Generation
From: Erik Naggum <erik@naggum.no>
Date: 1996/08/29
Newsgroups: comp.lang.lisp,comp.lang.dylan,comp.lang.scheme
Message-ID: <3050338193286393@arcana.naggum.no>


[David Boles]

|   Not at all, it [the "hello, world" test] really just measures how wide
|   a range of programming problems the language is usable for.

my argument was that the "hello, world" test only shows the ability of a
language/compiler/operating-system combination to perform well _together_,
while it does _not_ show any inherent values or qualities of the language,
such as it is interpreted to do.  in doing this under Unix, it shows that
the operating-system/language interface is such that this can be made
extremely efficiently.  this is not particularly surprising, given the
origins of Unix and C.  the exact same program compiled with the Sargasso C
compiler under TOPS-20 was horrendously inefficient and much larger than
any user programs I have seen.  the unintelligent conclusion people draw is
that because Unix and C are very tightly coupled, they can draw conclusions
about one of the tightly coupled parts.

C and Unix share an "assumption space" that is so closed that any other
assumptions have a very high penalty while they retain minimal overhead.
in operating systems designed for use by multiple languages, C is no better
than, e.g., Fortran or PL/1, in fact it may be much worse, because the
assumptions made in C are so difficult to spot that most programmers don't
even realize they are there.

|   Sorry, you're not understanding the test.

really?  let's try again.

if you type "hello, world" into a Lisp system's read-eval-print loop, it
will type "hello, world" back at you.  if you write a one-line function to
do the same and invoke it, it will have much lower cost than C could ever
have in _its_ optimal environment.  if you insist on a model that is known
to favor C and Unix, you should be a little careful with your conclusions
about other languages and environments.  I repeat: all the test shows is
that Unix and C are very tightly coupled and very efficient for this model
of executing programs.  we knew that before anybody wrote the "test".  thus
is has no probative value whatsoever if used to compare _languages_.

|   These costs restrict the domain over which your language can generate
|   useful solutions for.  A language such as C imposes very minimal costs,
|   making it useful (in a runtime sense) across a much wider range of
|   applications.  While Lisp's necessarily have a higher runtime cost than
|   a primitive language such as C, it is unclear to me that these costs
|   have to be as large as they currently are.  With decent engineering,
|   Lisp's could be *much* more widely applicable.  It's sad that the lack
|   of a reasonable I/O model and typical Lisp system's poor executable
|   generation are such a drag on the language.

on the other hand, a Lisp programmer on _any_ operating system would balk
at the need to fork off a whole new process to do something as simple as
printing a line to the terminal!  the waste of system resources is
incredible for so little action!

it's pathetic how the C/Unix camp will insist upon loading the dice in any
competition among languages, and on top of it, they do not even recognize
that they have made assumptions that automatically make them win.  I'll
scratch this up to incredible well-done marketing, just like large segments
of the population will insist that Intel and Microsoft are the only viable
suppliers of basic computing power.  they are wrong, too.

#\Erik
-- 
main () { printf ("%d\n", sin ("foo")); }