From: Logical
Subject: Newbie Question
Date: 
Message-ID: <6HwF8.92134$9F5.5489870@typhoon.austin.rr.com>
I am interested in learning about AI.  I have not focused as yet on a
sub-discipline in the field.  Anyway, I would be glad to hear opinions from
people on what they believe the best computer language to use for this broad
area of study. I am getting all kinds of "advice" to include JAVA, Python,
LISP and PROLOG.

Again, in your opinion, what is the best language for studying and
developing applications related to AI?

Thanks

From: Wade Humeniuk
Subject: Re: Newbie Question
Date: 
Message-ID: <ac6e24$3gv$1@news3.cadvision.com>
You are asking a Lisp forum.  The obvious answer is of course, Lisp.

Wade

"Logical" <·······@satx.rr.com> wrote in message
····························@typhoon.austin.rr.com...
> I am interested in learning about AI.  I have not focused as yet on a
> sub-discipline in the field.  Anyway, I would be glad to hear opinions from
> people on what they believe the best computer language to use for this broad
> area of study. I am getting all kinds of "advice" to include JAVA, Python,
> LISP and PROLOG.
>
> Again, in your opinion, what is the best language for studying and
> developing applications related to AI?
>
> Thanks
>
>
From: Christopher Browne
Subject: Re: Newbie Question
Date: 
Message-ID: <ac687k$nd5sc$1@ID-125932.news.dfncis.de>
"Logical" <·······@satx.rr.com> wrote:
> I am interested in learning about AI.  I have not focused as yet on a
> sub-discipline in the field.  Anyway, I would be glad to hear opinions from
> people on what they believe the best computer language to use for this broad
> area of study. I am getting all kinds of "advice" to include JAVA, Python,
> LISP and PROLOG.
>
> Again, in your opinion, what is the best language for studying and
> developing applications related to AI?

There is no forcibly "best" language for the purpose.  

There are some languages which are nicely attuned to one aspect or
another of some AI applications; Prolog and Lisp were both "forged" in
the "fires" of AI laboratories, and so a lot of their primitives are
nicely supportive of AI applications.  

Lisp offers many programming paradigms and data structures, which is
extremely useful when trying to attack complex problems.

Prolog essentially embeds "search" as its main computational
primitive, which makes it very good at querying databases of
structured knowledge.  Unfortunately, by tying everything to the
"hammer" of search, you have to make your programs look like the kinds
of "nails" it's good at hitting, with the result that traditional
sequential/procedural programming tasks aren't much fun in Prolog.

Java and Python head back more to the approach of Lisp, offering
sizable libraries of support code, offering many programming paradigms
and data structures.  They are not quite as good at dealing with the
dynamics of complex problems as Lisp, but that may be easily hidden by
them offering closer ties to your favorite database system or to your
favorite GUI toolkit.  If having a pretty GUI is important, then the
fact that some of the stuff behind the scenes is a bit messy may not
be an issue to you.  (Interestingly, there's one project out there
that embeds GNU Prolog inside Python; that lets you "do search" in
Prolog, which it's good at, and "do I/O" in Python, which it's good
at: seems an interesting approach...)

Java and Python are probably not as good for AI as Lisp or Prolog, but
they may be "good enough" in a sort of "worse is best" way.

By the way, it would be silly to construct a list with the four
languages you have mentioned without also throwing in ML and OCAML as
options too.  OCAML is pretty usable for the purpose; in particular,
get thee to <http://caml.inria.fr/oreilly-book/html/book-ora159.html>
-- 
(reverse (concatenate 'string ········@" "enworbbc"))
http://www.ntlug.org/~cbbrowne/prolog.html
Rules of  the Evil Overlord #196.  "I will hire an  expert marksman to
stand by the entrance to my  fortress. His job will be to shoot anyone
who rides up to challenge me."  <http://www.eviloverlord.com/>
From: Joel Ray Holveck
Subject: Re: Newbie Question
Date: 
Message-ID: <y7cadqt7m5m.fsf@sindri.juniper.net>
> Prolog essentially embeds "search" as its main computational
> primitive, which makes it very good at querying databases of
> structured knowledge.  Unfortunately, by tying everything to the
> "hammer" of search, you have to make your programs look like the kinds
> of "nails" it's good at hitting, with the result that traditional
> sequential/procedural programming tasks aren't much fun in Prolog.

This can be alleviated somewhat by using Prolog embedded in Lisp.  I'm
just now starting to do that, but it looks promising.

joelh
From: Adam Warner
Subject: Re: Newbie Question
Date: 
Message-ID: <ac74eu$ndjnm$1@ID-105510.news.dfncis.de>
Logical wrote:

> I am interested in learning about AI.  I have not focused as yet on a
> sub-discipline in the field.  Anyway, I would be glad to hear opinions
> from people on what they believe the best computer language to use for
> this broad area of study. I am getting all kinds of "advice" to include
> JAVA, Python, LISP and PROLOG.
> 
> Again, in your opinion, what is the best language for studying and
> developing applications related to AI?

A language that allows you to write code that writes code seems an
important attribute of any language used for AI research. Lisp excels at
this. Java and Python don't.

I also imagine there is a much larger number of Lisp-related AI references
available.

Execution speed is also an important consideration. Some AI decisions will
certainly be processor intensive. I'd be wary of limiting myself to a
language that currently only runs at interpreter speeds. Lisp code may be
able to be compiled for your native platform (e.g. CMUCL on x86:
http://www.cons.org/cracauer/lisp.html).

Wade's almost right when he wrote "You are asking a Lisp forum.  The
obvious answer is of course, Lisp." I think the clicher is the ability for
Lisp code to generate Lisp code. If Lisp was an unsuitable choice I
believe people in this forum would tell you so. Obviously you will find
that many people here understand Lisp best. But I'd also venture that they
understand other mainstream languages better than people using those
mainstream languages understand Lisp.

It sounds like it's too early in your research to make a worse-is-better
(http://www.dreamsongs.com/WorseIsBetter.html) lanuguage decision. Start
with the most power technology available. If you find you have to move to
a less powerful language because of network effects then do so.

Regards,
Adam
From: Dave Bakhash
Subject: Re: Newbie Question
Date: 
Message-ID: <c293cwjk4cs.fsf@no-knife.mit.edu>
Adam Warner <······@consulting.net.nz> writes:

> Logical wrote:
> 
> > I am interested in learning about AI.  I have not focused as yet on
> > a sub-discipline in the field.  Anyway, I would be glad to hear
> > opinions from people on what they believe the best computer language
> > to use for this broad area of study. I am getting all kinds of
> > "advice" to include JAVA, Python, LISP and PROLOG.
> > 
> > Again, in your opinion, what is the best language for studying and
> > developing applications related to AI?
> 
> A language that allows you to write code that writes code seems an
> important attribute of any language used for AI research. Lisp excels
> at this. Java and Python don't.

Hey,

I think others might have hinted at this, but I think that a lot of the
AI code out there is _not_ stuff that's found so much in the typical
libraries that you often find in JDK, or CPAN, etc.  The field of AI
uses algorithms and data structures that Lisp actually has quite a bit
of (compared to the typical libraries commercial application developers
often look for, but don't find in the CL community).

But I think that if you really needed such a library, you could probably
figure out how to interface with it, even if it were done externally.
The real key is what _you_ do, from scratch...i.e. the basics.

It's hard to argue that CL programmers are more ``one'' with the
computer than C++ programmers tend to be.  But one thing that you _can_
say is that based on the way most people think about objects, behavior,
relationships, and notation, I'd say that CL at least _let's_ you get
much closer to how you want to think, rather than forcing you to conform
to whatever rules come with other languages.  This might not even be as
important with respect to design, since I'd say that you should do your
design outside of any code environment...but when it comes to
implementation, I'd definately say that CL is the language in which to
implement AI programs for readability and usability.  Things that make
CL especially hand here are:

 1) code is data, and you can define data files very easily, reglardless
    of what the data actually looks like (though it's most often a graph
    of some sort, for which sexps are just perfect).

 2) you can define macros, and code-generating code pretty easily.  To
    do this, you have the complete set of CL in the compiler environment
    with which to work.

 3) almost everything is dynamic, so you can change behavior and
    structure as the program is running.

Of course, there are dozens of other reasons to use CL as well
(CLOS/MOP, data type generality, etc), but in the end, so much of it is
personal choice.  I just think that it would be hard to actually
_justify_ using Java; impossible to justify using C++, and probably not
hard at all to justify using Python/Jython.  I also think that all
things considered, and with even some weight on performance, I think CL
is the right language for AI, though I think that it's the right
language for everything, basically.

dave
From: Brad Miller
Subject: Re: Newbie Question
Date: 
Message-ID: <acbmc2$kj1$1@newshost.mot.com>
Depends on which community within AI you are in (there are many). Adopt one
of the main languages within your community if you expect to get published
and/or swap code.

"Logical" <·······@satx.rr.com> wrote in message
····························@typhoon.austin.rr.com...
> I am interested in learning about AI.  I have not focused as yet on a
> sub-discipline in the field.  Anyway, I would be glad to hear opinions
from
> people on what they believe the best computer language to use for this
broad
> area of study. I am getting all kinds of "advice" to include JAVA, Python,
> LISP and PROLOG.
>
> Again, in your opinion, what is the best language for studying and
> developing applications related to AI?
>
> Thanks
>
>