EssayQ #1: What makes a language good for AI?
Bryner S. Pancho
Having taken CSE150 last quarter, I can identify two major things that I have learned from that class, Lisp and neural networks. Our first three assignments had us basically implement different searching techniques while using/learning the Lisp language. Looking back at the algorithms used to implement those assignments I come to realize how easy it would be to implement the same assignments in Java. Along the same lines, our original C++ implementation of the perceptron learning system and the back propagation learning system can also be done in Java. Because of Java's close similarities to C and C++, implementing the two types of neural networks from last quarter would be a no brainer.
I believe the best programming language for AI would be the one that makes that task of implementation of a particular AI program best. The strengths in Java support that by providing a rich set of language features and component reuse. Java simplifies programming by building within the language garbage collection, multithreading, range checking, exception handling, general purpose libraries for data manipulation, standard data structures and networking. As Professor Richard K. Belew mentioned early in the quarter, AI serves as a testing grounds for new ideas in computer science. One idea that originated from the AI community is the notion of object oriented programming. I can say with a high degree of confidence that the Java programming language was designed to be objected oriented from the ground up.
A feature about Java that I find very useful in development of object oriented systems is the class packaging hierarchy. Java uses the following standard when creating directories within a particular project: com.companyname.projectname.subcomponent. By using this convention, Java helps you design and choose wisely the components that make up your application. A good example of this would be a project that I worked on at UCSD under Professor Gary Gillespie call Gradestat. Again another great feature of Java is it's standard self documenting feature called JavaDoc. JavaDoc builds an entire website around the documentation of each class and the details associated with it called an api. Gradestat's API is an excellent example of that.
Java supports object oriented properties such inheritance, polymorphism and encapsulation. Inheritance is an important feature of a AI programming language. It allows for child classes to inherit methods and attributes of an existing class in addition to it's own data and operations. One of the differences between Java and C++ is the idea of multiple inheritance. Java object can only inherit from one class while C++ classes can from multiple classes.
An AI language must be simple and easy to learn. Java expresses this by keeping the same look and feel to the C++ language and by omitting the several error prone features of C++ such as operator overloading and pointers.
An AI language should be portable across multiple OS platforms. Java provides platform portability by defining the Virtual Machine (the JVM) on which programs implemented in Java will execute. Unlike C++, the Java programming language can make certain assumptions about the environment in which it runs. However, running on a program on top of a virtual machine or interpreter is not new technology. Lisp for instance also runs on top of a interpreter. In fact the way Lisp is used consists of first firing off the Lisp interpreter then the loading and execution of the Lisp program. Again it's Java's way of removing the bad and incorporating the good qualities from other languages.
From personal experience working at SAIC within the High Performance Knowledge Base (HPKB) project (a DARPA funded project), most of our development has involved many different types of languages. However, the main language of choice in development our main system architecture is Java. Having worked as an intern, I discovered that the artificial intelligence field can involve many tasks. For the HPKB project, SAIC played the role of an AI technology integrator. Our requirements from DARPA was to pull together all the AI technologies being developed by researchers at MIT, Stanford, SRI, ISI, CMU, SMI and a couple others. Each of these institutions all contributed AI technologies ranging from theorem proving systems to knowledge bases. To bring together these components and to provide a seamless interface to these technologies we used Java. The interface to our system was designed to be used via a standard web browser using Java Applets.
In conclusion, having stated many of the of the strengths of Java as a programming language and it application within the AI field I would select Java as my number 1 choice for as an AI programming language.