The distributed logic programming language DLP that is introduced in this book
is the result of combining notions of three distinct paradigms of computing:
logic programming, object oriented programming and parallel/distributed programming.
This chapter is intended to introduce these paradigms of programming independently.
In particular, an extensive introduction to logic programming is given,
treating the general concepts underlying logic based computation.
Also, a detailed description is given of the popular logic programming language Prolog,
with examples that illustrate the use of Prolog in typical search problems.
\nop{
The major features of object oriented programming are introduced by discussing the developments
that have contributed to the popularity of this paradigm.
In addition, we will treat the notion of an object as a computational entity
and the role of inheritance in specifying collections of objects in a structured way.
}
The major features of object oriented programming
such as encapsulation and inheritance will be introduced.
Design decisions with respect to these features will be discussed
by comparing their support in some of the most well-known object oriented
languages, such as Smalltalk and C++.
We also will discuss the mechanism of inheritance from the perspective
of polymorphic types and behavioral refinement.
Finally, we will comment on the impact of object oriented technology
on the various phases of the software life cycle.
Further, an account is given of the three major computation paradigms
underlying parallel/distributed programming:
communicating sequential processes, object-based concurrency
and concurrent logic programming.
We will conclude this chapter by looking at these distinct paradigms from a software engineering perspective,
in order to establish the benefits and shortcomings of these paradigms of programming
with respect to the actual development of software.
We will then raise the question what contribution a combination of these
paradigms might make to the practice of programming.