[net.ai] Reply to Herb Lin: Why is Lisp good for AI?

narain%rand-unix@sri-unix.UUCP (01/07/84)

A central issue in AI is knowledge representation.  Experimentation with  a
new  KR  scheme  often involves defining a new language. Often, definitions
and meanings of new  languages  are  conceived  of  naturally  in  terms of
recursive (hierarchical) structures.  For instance, many grammars of English-
like frontends are recursive, so  are  production  system  definitions,  so
are theorem provers.

The abstract machinery  underlying  Lisp,  the  Lambda  Calculus,  is  also
inherently recursive, yet very simple and powerful.  It involves the notion
of function application to symbolic expressions.  Functions can  themselves
be  symbolic  expressions.  Symbolic expressions provide a basis for SIMPLE
implementation   and   manipulation   of   complex   data/knowledge/program
structures.

It is therefore possible to easily interpret  new  language  primitives  in
terms of Lisp's already very high level primitives.  Thus, Lisp is a  great
"machine language" for AI.

The usefulness of a well understood, powerful, abstract  machinery  of  the
implementation language is probably more obvious when we  consider  Prolog.
The  logical  interpretation of Prolog programs helps considerably in their
development and verification.  Logic is a convenient specification language
for  a  lot  of  AI, and it is far easier to 'compile' those specifications
into a logic language like Prolog than  into  Pascal.  For  instance,  take
natural  language  front ends implemented in DCGs or database/expert-system
integrity and redundancy constraints.

The fact that programs can be considered as data is not true only of  Lisp.
Even in Pascal you can analyze a Pascal program.  The nice thing  in  Lisp,
however,  is  that  because  of  its  few  (but  very powerful) primitives,
programs tend to be simply structured and concise  (cf.  claims  in  recent
issues  of  this  bulletin that Lisp programs were much shorter than Pascal
programs).  So naturally it is simpler to analyze  Lisp  programs  in  Lisp
than it is to analyze Pascal programs in Pascal.

Of course,  Lisp  environments  have  evolved  for  over  two  decades  and
contribute  no  less to its desirability for AI.  Some of the nice features
include screen-oriented editors, interactiveness, debugging facilities, and
an extremely simple syntax.

I would greatly appreciate any comments on the above.

Sanjai Narain
Rand.