Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83; site utah-cs.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!godot!harvard!seismo!utah-cs!shebs
From: shebs@utah-cs.UUCP (Stanley Shebs)
Newsgroups: net.ai,net.lang.lisp,net.lang.ada
Subject: Re: Thus spake the DoD...
Message-ID: <3227@utah-cs.UUCP>
Date: Fri, 1-Mar-85 14:30:52 EST
Article-I.D.: utah-cs.3227
Posted: Fri Mar  1 14:30:52 1985
Date-Received: Sun, 3-Mar-85 03:49:19 EST
References: <417@ssc-vax.UUCP> <676@topaz.ARPA> <6982@watdaisy.UUCP> <3223@utah-cs.UUCP> <7016@watdaisy.UUCP>
Reply-To: shebs@utah-cs.UUCP (Stanley shebs)
Organization: Univ of Utah CS Dept
Lines: 67
Xref: watmath net.ai:2570 net.lang.lisp:349 net.lang.ada:201
Summary: 

There's so much misinformation in djsalomon@watdaisy that I'd better
respond in some detail, lest a bystander get a mistaken impression:


>Since LISP is a typeless language a LISP interpreter or compiler will
>accept almost any meaningless input (in which the parentheses match)
>as a valid program.  Thus the correctness of programs must be proved by
>exhaustive test cases or by theoretical analysis.  Although LISP is
>more amenable to theoretical analysis than most languages, let's face
>it, most LISP programmers would rather hack out another test case than
>do any analysis.

Typechecking is a very small and relatively trivial part of program
correctness.  In any case, Lisp is *not* a typeless language - it
is polymorphic, which is much different.

>Since LISP uses function notation for all operations it is a simple
>language to implement and a simple language in which to automatically
>generate code (thus the AI connection).  Similarly its use of lists to
>implement all data types and all structures is a simple and interesting
>concept.  But these two features have made LISP one of the most
>inefficient languages in existence.  In many ways this inefficiency
>has hindered the development of AI.  People now associate AI with
>programs that are too costly to run.

Every modern Lisp includes a vector datatype, which is like a
one-dimension array in low-level languages.  The most sophisticated
Lisps (such as Common Lisp) include a wealth of other datatypes
intended for high efficiency in applications.  For many years,
the Maclisp compiler on the DEC-20 has produced numerical code
superior to Fortran.

>This inefficiency has led LISP programmers on an endless search for
>more powerful hardware.  The search may lead to new and exciting
>parallel architectures but until they are designed and built we should
>find ways to make good use of the hardware we have.

PSL is one of the fastest Lisps around, and it runs on Vaxen and 68000s,
among other general-purpose machines.  Not everyone agrees with
the "Lisp Machine" approach!

> ... Unfortunately LISP programs remain a
>puzzle even after they are written.  LISP programs are both
>syntactically and logically hard to document.  Usually only the
>original author will fully understand how a LISP program works, and
>after a few years not even he will.

And Pascal programs are supposed to be marvels of clarity?  I've
read many Lisp programs by other people, and it's evident that
the formatting, organization, and documentation of a program is
more important than the language it is written in.  In favor of Lisp
is that programs tend to be smaller and less contorted, thus easier
to deal with.  There are other advantages, but space doesn't permit...

>I thus stand by my original claim that the importance of LISP to AI is
>greatly exaggerated.  Not only can one now chose one of the LISP
>offspring such as PROLOG or FORTH, but also if one is writing an actual
>production system one should examine one of the more efficient
>algorithmic languages to see if it is adequate for one's application.

Prolog is a descendent of Lisp only by the most contorted of genealogies
(via Planner and Conniver).  Forth was developed completely independently
by a radio astronomer (if I recall correctly).  There are many "actual
production systems" written in Lisp - will give examples if anybody
asks...

							stan shebs