[net.ai] Why LISP?

mat (04/19/83)

Why LISP ?  Well, remember that it has indefiniately extensible data
structures.  If you have designed a module to pass/handle a particular
structure, it can pass ANY structure, since all memory cells look the
same.  And if you use the provided functions, and are careful to
write utility parts in general form (easy, since the languages
recursive data structures are matched by the availability of
easy recursion) full extensibility is maintained.

					Mark Terribile
					Duke of deNet

tim (04/20/83)

The following are the major advantages of Lisp that I know of.

(1) Symbolic computation. In Lisp, you acn manipulate expressions in
    various languages (e.g., algebraic equations) in a human-readable
    form. There is no need to set up elaborate systems of symbolic
    constants and such.

(2) Run-time management of data structures. You don't need to worry about
    allocating space for dynamic data structures, writing a garbage
    collector, etc. All this is inherent in the system. This feature
    allows you to forget all those troublesome implementation details
    of dynamic data structures and stay closer to the design level.

(3) Interpretation and compilation. Most Lisps run interpreted, making
    interactive debugging easy, but also provide for compilation, so
    that debugged code will run fast.

(4) Inertia. The language has been around for a very long time, people
    know it very well, and there is a very large body of literature on
    how to do various things in Lisp. Being able to avail yourself of such
    a body of literature is a great advantage.

(5) Extensibility. Because of the simplicity of Lisp syntax, it is easy
    to add things to it. If you wanted to add a new control construct to C
    (or any compiled language), you'd have to modify the compiler, which
    is usually impossible. In Lisp, you can simply define it as an nlambda.

(6) All Lisp programs are Lisp objects. The advantage here is not in self-
    modifying code; why would you want that, since you'll need an invariant
    kernel anyway? However, Lisp functions can create functional and
    symbolic objects, as well as manipulate objects in Lisp expressions.
    This is the main reason for (5) above, by the way.

No doubt others could add to this. I think Lisp is a wonderful language.

Tim Maroney

gumby (04/20/83)

the run-time datastructures are the best.  A number of languages (including that 
monstrosity of static typing, CLU), have run-time garbage collection, but few, if
any have the complete openness of typing provided by LISP.  It allows you to
define any sort of abstraction you want, so you may attack a problem in the cleanest`
way.

As for claims that maintaining large systems is difficult, I beg to differ.  The lisp
machine comprises at LEAST three megabytes of code; an entire operating system, in fact.
You can even lambda-bind the paging switches!

And it's efficient.  MACSYMA, the symbolic math package, (another multi-megabyte
program) is entirely written in PDP-10 MACLISP, and produces math code as efficient
as the PDP-10 Fortran compiler.  In fact, I write TOPS-20 system code in maclisp.

david

jah (04/22/83)

Dan Wilson asks "have I missed something?" in his wquestion about LISP.  The
answer is "yes."  He's essentially missed the entire reason for Lisp.

Lisp is a symbolic language with the ability to pur information on
symbols (i.e. the property list stuff).  This is not trivially available
in most other languages, and when needed must be implemented.

Lisp is a recursively based language.  Other languages provided recursion,
Lisp encourages it.  For those doing tasks with a recursive flavor this
is quite helpful.

But in actuality, the main reason many people use Lisp has nothing, a priori,
to do with Lisp qua Lisp.   It has to do with the computing environment
provided by a decent Lisp.  Included one finds debugging tools, trace
packages, and break facilities that are, in general, far superior to those
found in other languages.  (NOTE: I realize that this is a changing
trend.  Many languages are now starting to provide similar packages.  However,
I would still argue that Lisp is ahead of the game.  Compare the (debug)
facility in Franz with sdb or other c debuggers).

Partly because of the interpretive nature of many Lisps, partly due to the
history of the problems being solved, and partly due to the man-power that
has been spent on Lisp, this language provides about the best environment
I've yet found for doing any serious form of symboolic processing.


Dan further points out that many languages now contain the sorts of facilities
that Lisp provides.  I ask, "what took them so long?"

  Jim Hendler
  Brown University