Object structure -- efficient mapping
C++
struct A { ... } == class A { public: ... }
class A { ... } == struct A { private: ... }
slide: The equivalence between class and struct
This interpretation allows an efficient mapping
of object structures to the memory of a computer,
provided that the compiler is clever enough.
Nevertheless, the efficiency of C++ comes
at a price. C++ does support micro-efficiency
but does not necessarily lead to the design of
efficient code.
In particular, hand-crafted memory management
will not necessarily offer the most efficient
solution when compared with built-in support,
but is almost certainly detrimental to the quality of the code.
Prolog-based extensions
A quite different class of object-oriented extensions,
used primarily in research laboratories,
consists of attempts to incorporate object-oriented
features in (high-level) logic-based languages, such as Prolog.
Among these are languages such as SPOOL (developed
in the context of the Japanese fifth-generation computing
project, see [Fukanaga]),
Vulcan (that provides a preprocessor giving syntactic support for embedding objects in
concurrent logic programming languages, see [Kahn])
and DLP (a language combining logic programming
with object-oriented features and parallelism developed by the author,
see appendix [DLP]).
The list of research articles covering the subject of combining
logic programming and object-oriented programming
is quite extensive.
An overview and discussion of the various approaches
is given in [Davison93] and also in [Eliens92].