I've always read that LISP is well suited for Artificial Intelligence, but I never found out why.


I believe it was originally based on the idea of the program being able to learn by modifying its own code to represent the new intelligence. Lisp makes that relatively attractive by representing programs as S-expressions -- i.e., a "program" is just ordinary data that's interpreted as code to be executed, but can also be interpreted as data to be manipulated about equally easily.

That said, that notion of the program modifying itself to represent new knowledge as it learns doesn't seem to be put into real use particularly frequently.

The other obvious point is that "artificial intelligence" isn't particularly well defined. If you look at books from the '50s or '60s about artificial intelligence, most of them talk about problems (e.g., recognizing handwriting or speech) that are now rarely considered as AI at all. The meaning of "AI" seems to be in a state of (nearly) constant flux. When somebody figures out practical way of doing something, it becomes normal programming rather than AI.

As such, AI programming tends to be rather exploratory and the code in a state of flux itself. As such, the answer to the question in the title is that AI tends to favor languages that support a more exploratory style -- dynamic languages with minimal type checking, interpreted or compiled only implicitly, etc.

| improve this answer | |
  • It's like music, there's a new kind of music which is experimental, some time later it's mainstream. – Billy Rubina Mar 4 '12 at 6:46
  • I've read that this artifical inteligence was atributed to functional languanges like LISP, then now I guess it's not about functional programming but about metaprogramming. Or is metaprogramming an obvious implication of functional programming? – Billy Rubina Mar 4 '12 at 6:52

All languages have different usage. and while you might have heard of Lisp (or prolog, haskell as well) being popular.

The point is they are declarative languages and there is general idea that Knowledge representation can be better and more effective using declarations of axioms or rules as opposed to expressing them as algorithm and linking them in all possible context of evaluation.

It is not a universal practice that you cannot use imperative languages there.

| improve this answer | |

I've read this and it might give you the context from this comes from: http://www.rci.rutgers.edu/~cfs/472_html/Intro/MinskyArticle/MM1.html

Also i must add that even if LISP doesn't feel "useful", it's a nice thing to at least try once or twice.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.