by Jennifer Bowen
While there are many approaches to artificial intelligence, the approach that
is easiest to study and will thus benefit us the most is the study of
rational agents, or constructs capable of perceiving and acting. The
study of agents that act rationally is also a more general approach, because it
does not require all thinking to be inference-based (Russel & Norvig, 7-8).
We will not consider neural networks to play a part in this discussion, largely
because the needs of a neural network architecture are so different from those
of a more traditional symbol-processing approach.
Progammers developing rational agents seek a number of features in the language they use, including the following:
Prolog remains a popular language around the world, despite a number of flaws. Prolog uses declarative programming and horn-clause logic to derive behavior. Lambda Prolog is a derivative of the Prolog language that offers added functionality. Prolog is useful for goal-directed search but fails to offer enough flexibility to be indispensible as a symbolic programming language.
C++ is an enormously popular, powerful object-oriented language that is poorly suited to symbol proccessing due to its procedural roots, yet remains widely used in spite of this. While C++ is modular and extremely flexible, it is also a compiled language and thus changes are made to the agent much less easily. C++ also leaves far too much of the implementation details to the programmer. No automatic garbage collection, no dynamic typing, and no automatic memory allocation or predefined list types. While all of these may be made available through additional libraries, they are not a part of the standard C++ programmer's existence. C++ is a poor compromise for the AI programmer.
Kiev is a Java extention that adds logic-programming functionality to the Java programming language. While Java inherits many of the problems from its predecessor C++ (procedurally-based, complexity, etc.), it corrects many of its flaws by implementing such features as automatic garbage collection. As a new language in the field, relatively few online resources exist to help the Java AI programmer. Kiev also offers a GUI display environment for better demonstration of AI behavior. Unfortunately, little online documentation is available for Kiev, making this as yet an undesirable language to program in.
For further information on the use of programming languages for artificial intelligence, see PC AI's guide to AI languages.