Why C++?

One of the things to be explained will be the reason why we decided to use C++ for programming an AI-type problem while so many specialized AI programming languages are available. For one thing, we wanted to know how much more effort it would be to use a lower level programming language (lower compared to AI programming languages like Prolog, that is) to program this type of problem. C++ seemed excellent for this job because it is based on C, a third generation programming language, and also because it follows the object oriented paradigm, meaning that it supports a higher level of abstraction, in the case of OOP: the combination of procedural and data abstraction. But the main reason why we decided to use C++ is that it supports inheritance . This feature makes it possible to easily make use of existing software when developing new applications. Combined with the possibility to define virtual  functions this makes it possible to design foundation classes that are of no use in themselves, but can be easily extended for real applications.

The main objective was to seperate the problem-solving process that we described above and the representation of the problem itself. In chapter 2 we showed that a lot of problems can be solved using standard techniques, e.g., the state space representation and search. It seemed useful therefore, to develop some basic routines offering a number of search methods that could easily be used when designing problem-solving software. And this is exactly what the foundation classes are for. Each of them implements a particular search algorithm while leaving open the exact nature of the problem to be solved. So, using these classes it will be possible, just like in, e.g., Prolog, to concentrate on the representation of the problem at hand without worrying about how it has to be solved. But unlike Prolog the user need not make use of a fixed search method (in Prolog: depth-first), but may choose one that suits the problem best.