2009-12-29

booking oop with Cardelli

. oop has extremely poor modularity properties
with respect to class extension and modification.
For example, it is easy to override a method
that should not be overridden,
or to reimplement a class in a way that
causes problems in subclasses.
Other large-scale development problems include
the confusion between classes and object types,
which limits the construction of abstractions,
and the fact that subtype polymorphism
is not good enough for expressing container classes .

Here are some things that could or should
be done to sofware engineering with respect to oop:

* Economy of execution.
Much can be done to improve the efficiency of method invocation
We also need to design type systems that can
statically check many of the conditions that now require
dynamic subclass checks.
* Economy of compilation.
the separate compilation of (sub)classes,
without resorting to recompilation of superclasses
and without relying on "private" information in interfaces.
* Economy of small-scale development.
improve error detection and the expressiveness of interfaces.
* Economy of large-scale development.
formulating and enforcing inheritance interfaces:
the contract between a class and its subclasses
(as opposed to the instantiation interface
which is essentially an object type).
Parametric polymorphism is beginning to appear
and its interactions with object-oriented features
need to be better understood.
Subtyping and subclassing must be separated.
Similarly, classes and interfaces must be separated.
* Economy of language features.
Prototype-based languages [provide simpler,
more composable features with orthogonality] .
How can we design powerful engineering
but also simple and reliable engineering?

No comments:

Post a Comment