From: Wolf
Subject: rookie needs advice
Date: 
Message-ID: <7dlh13$e9a$1@nnrp01.iafrica.com>
Hi

I am relatively new to AI and I want to play around a bit on LISP. Is there
anywhere I can get/download a kind of demo version for free??

Thanx. All advice appreciated. Oh yes, and also I would appreciate it if
someone could just quickly spell out to me why LISP is so good for AI.

From: David Bakhash
Subject: Re: rookie needs advice
Date: 
Message-ID: <cxjn20xd0vw.fsf@engc.bu.edu>
"Wolf" <·······@iafrica.com> writes:

> Hi
> 
> I am relatively new to AI and I want to play around a bit on LISP. Is there
> anywhere I can get/download a kind of demo version for free??
> 
> Thanx. All advice appreciated. Oh yes, and also I would appreciate it if
> someone could just quickly spell out to me why LISP is so good for AI.

I noticed from the header of your post:

X-Newsreader: Microsoft Outlook Express 4.72.2106.4
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4

that you're on a Windows box.  I would suggest the following:

If you have ntemacs on your windows box, and are comfortable with it,
then get the free download from Franz (i.e. Allegro CL for Windows):

http://www.franz.com

If you want something which comes with its own editor, then download
Harlequin's LispWorks:

http://www.harlequin.com

But still, a very simple solution is to start up ntemacs, then do:

M-x load-library <ENTER> cl <ENTER>

and then use the GNU Emacs lisp extensions.  It's pretty good for
starters, in my opinion.

dave
From: Kent M Pitman
Subject: Re: rookie needs advice
Date: 
Message-ID: <sfwpv5tbiq6.fsf@world.std.com>
"Wolf" <·······@iafrica.com> writes:

> I am relatively new to AI and I want to play around a bit on LISP. Is there
> anywhere I can get/download a kind of demo version for free??

Go to http://www.elwoodcorp.com/alu/ 
and look at the list of implementations.

The "big" commercial vendors have low-end free offerings.
There are also several other options from free to very cheap.

> Thanx. All advice appreciated. Oh yes, and also I would appreciate it if
> someone could just quickly spell out to me why LISP is so good for AI.

"Quickly?" Heh.  OK, I'll try:

Lisp grew up with AI researchers.  As they needed features, Lisp added
them.  So historically, the reason Lisp is good for AI is that it was
responsive to AI researchers.  That's the "why".

If you're really meaning to ask the "what" question ("what does it take
to be good at AI?" or "what does Lisp have that serves AI?") I think there
are a lot of answers, but I'll pick a couple:

First, Lisp has run-time typing.  That is, it has the capability of
recognizing that an argument it was passed is not of the right type.
Other languages insist on detecting this at compile time, but that
presumes that "surprise" is bad, and that it is to be "compiled out".
But AI is all about surprise.  A system which cannot respond to
surprise is not intelligent, almost by definition.  Your ATM is not an
AI system because it can never do more than an extremely predictable
set of requests.  A banking system based on AI would want to be
surprised, and part of being surprised is receiving data that you
don't know about.  Saying that you can know in advance and force the
right things is like saying "customer service is easy--you just tell
the customer what he should want and then you handle exactly that
set of problems".

Second, Lisp is run-time reconfigurable.  That is, it uses the same
paradigm as it uses for data to organize the system itself.  In other
languages, the compiler may compile out the indirection between an
object and its name.  That is, if I refer to some object named "foo"
in C, I end up wih a compiled program that points to the object, not
to the name "foo".  This removes the ability to (at runtime) ever make
"foo" mean something different because programs that referred to it by
name will not see the update.  (Lisp can compile this out if  you really
desperately need it too, but it tries not to since ordinarily the
efficiency gain is not worth the lost flexibility.)  The ability to
reconfigure a system dynamically at runtime and have all your callers
understand the update is critical to "learning".  Systems that cannot do
a modular in-place update are bounded by a kind of O(n^2) wherein
each fact they learn requires updating the whole system because the
fact can't be learned in isolation of what you know.  Systems that can
do modular in-place update (such as Lisp) support learning better.

Third, Lisp supports convenient manipulation of symbolic data.  Not
just as a datastructure but in the language itself.  Symbolic data is
essential to qualitative rather than quantitative analyses.  You can
make a symbolic structure in other languages, but it's hard to manipulate
such data concisely as constant data in most other languages.  Even Dylan,
which comes with a built-in symbol data type, makes the error of trying
to make symbols be notated by 
 #"symbol"
rather than 
 symbol
It might seem like this notational is a small thing, but 
this means that the notational device which creates a symbol is replicated
over and over even within a single literal data structure, which in turn means
that one tends to use them less.  The ability to have a literal Lisp list
that looks like:
 (this is a test)
is much more useful than the ability to have the same in dylan which is
 #(#"this", #"is", #"a", #"test")
The equivalent is even harder to do in Java or C because it requires
pre-declaration.  IMO, only Scheme and Lisp make the manipulation of
symbols "adequately easy".

Fourth, Lisp supports a uniform syntax that supports user extension
in a natural way that is consistent with the core system.  Languages
like C have an "operator" syntax that is native and then allow users
to extend it by adding "functions".  This means "+", etc. has special
status syntactically and if you add your own operators you can never
make them look like the system ones.  That, in turn, puts undue focus
on the operators given by the system, which can be distracting if you
are trying to "build up" to a "higher level view" that makes something
else the focus.  In Lisp, system functions use the "function" syntax
and there is no "operator" syntax.  This makes it easy to extend the
language in a way that looks just like the underlying language, and it
effectively makes every programmer a language designer.  That supports
the use of the language as a vehicle for producing "frameworks for
higher level discourse".  In practice, C programs always look like C
programs, and Java programs always look like Java programs, because one
can never dig one's way out of the syntax.  Lisp syntax is fully
reconfigurable and tools for Lisp will understand what you're doing if you
do such extension, which makes for much greater syntactic abstraction.
And syntactic abstraction means you can "focus" on what you want to focus on.
Another hallmark of intelligent (AI) behavior is this ability to
focus on what you want and dig your way out of irrelevance.

I could go on, but I hope this helps.

See also my paper
 http://world.std.com/~pitman/PS/Hindsight.html
for a discussion of why Lisp is good for rapid prototyping if that's
also of interest to you.
From: Sunil Mishra
Subject: Re: rookie needs advice
Date: 
Message-ID: <efyu2v5ze2c.fsf@whizzy.cc.gatech.edu>
"Wolf" <·······@iafrica.com> writes:

> Hi
> 
> I am relatively new to AI and I want to play around a bit on LISP. Is there
> anywhere I can get/download a kind of demo version for free??
> 
> Thanx. All advice appreciated. Oh yes, and also I would appreciate it if
> someone could just quickly spell out to me why LISP is so good for AI.

1. Lisp is extremely dynamic, which makes it ideal for working with
   problems that are poorly defined. For poorly defined problems you often
   have to produce rules etc on the fly, which you can obviously attempt in 
   any language. But given that lisp is naturally dynamic you get
   efficiency and simplicity you would not in most other languages.

2. Lisp is very expressive, to the extent that data and code use the same
   underlying representations. This turns out to be useful in AI.

3. Lisp is great at symbolic processing. Very, very handy feature.

4. Tradition. With a fair bit of traditional AI code readily available to
   give you a quick start, there are few comparable alternatives.

Sunil