AI Programming in Java
AI Programming in Java
Java is the third language this book examines, and it plays a different role in
the development of Artificial Intelligence programming than do Lisp and
Prolog. These earlier languages were tied intimately to the intellectual
development of the field and, to a large extent, they both reflect and helped
to shape its core ideas. We can think of Lisp as a test bed for the basic
ideas of functional programming and the specification for the Physical
Symbol System Hypothesis (Newell and Simon 1976): that dynamic
operations on symbol structures are a necessary and sufficient specification
for intelligent activity.
Similarly, Prolog was a direct exploration of declarative specifications of
knowledge and intelligence. Java’s place in the history of AI is different.
Rather than shaping the development of artificial intelligence itself, Java,
especially its object-oriented features and inheritance, are a product of
earlier AI language research, especially SmallTalk and Flavors. Our
inclusion of Java in this book is also evidence that Artificial Intelligence has
grown up, in that most of its tools and techniques are now considered to
be language independent. In fact, In Part V, Chapters 26, 29 and 31 present
Java-based Artificial Intelligence software available on the Internet.
Developed in the early 1990s by the Sun Microsystems Corporation, Java
was an effort to realize the full power of object-oriented programming,
OOP, in a language expressly designed for large-scale software engineering.
In spite of their power and flexibility, early object-oriented languages
including SmallTalk, Flavors, and the Common Lisp Object System
(CLOS), languages developed by the AI community itself, did not receive
the attention they deserved from the software engineering community.
Java, implementing many of the features of these early tools, has been
more widely accepted.
Although the reasons given for the rejection of these earlier, elegant
languages may appear to contemporary programmers to surpass rational
269
270 Part IV Introduction: Programming in Java