Mark Chaisson
A Discussion of the Requirements of an AI Programming Language

     At some point in time, the theory of Artificial Intelligence must transform into implementation. There are many programming languages, and many theories of representation of AI, and the merits of programming languages may be examined to find which best suits implementing AI theory. Two main factors to consider when comparing programming languages are high level capabilities, and applicability to AI theory. Of the availiable programming languages, Lisp encompasses covers these two disjoint topics the most.

     As computers get faster, the cost of developer time is raising and code reuse is becoming more important. Code reuse implies being able to do high level operations on abstract objects without having to worry about the details of implementation. Lisp has over 700 functions built into the language which allows for fast programming (Norvig, http://www.norvig.com/paip-preface.html#whylisp) . Also, Lisp offers garbage collection for dynamic allocation. This can be compared to ANSI C, which generates faster executables, but at the price of painstakingly slow development time, and opportunities for bugs due to memory mismanagement. Lisp can then be compared to Java, which has thousands of built in functions along with garbage collection.

     Java has the advantage over Lisp with its extensive communication and mathematics libraries. Artificial Intelligence ultimately seeks to perceive an environment and interact with the environment with effectors, such as an intelligent agent (Russel and Norvig, 1995). An implication of perceiving an environment is the necessity of taking input from the environment. The lack of special syntax for arithmetic could make Lisp slightly more difficult to code image processing and edge dectection algorithms.

     There is more to distinguish programming languages for artificial intelligence than ease of programming; there is applicability to the theory of AI. Two areas to consider are: first order logic, neural networks. Prolog is the most widely used first order logic programming language (Russel and Norvig), which can be applied to pattern matching, backtrack searching, and incomplete information (Sethi, 1996). Neither Java nor Lisp were designed to be used for first order logic, but there are some lisp libraries that implement first order logic, as was used by Batali in a recent Lisp programming course. Lisp's ability to manipulate lists also give it the ability to implement multi layer neural networks with relative ease. The AI theory of neural networks seems orthogonal to first order logic (although both do pattern matching), and since Lisp can implement both it seems to be generally more applicable to artificial intelligence.     The notion of program mutation adds another field to compare AI programming languages. In the beginnings of experimentation of program mutation Friedberg (1958) tried to implement mutation of FORTRAN programming languages, but did not make any progress. Java falls into the same imperative programming language as Fortran, and mutations of Java programs are also probably less likely to have progress. Since a lisp program is the same as lisp data, it more easily extends toward mutation.      In general, the large library database for Java makes it an easier language to implement practical applications whose theory has already been proved. However, it is not the best choice for programming AI theory. Since Lisp can implement neural networks, simulate logical programming, and more likely be mutable, it is a better choice for implementing strictly AI theory.

Norvig (1999) www.norvig.com
Norvig and Russell (1995) Artificial Intelligence: a Modern Approach Pretice-Hall, Inc. New Jersey
Wilson and Clark (1993) Comparitive Programming Languages Addison Wesley, New York