I would like to thank all who replied to my previous post, regarding complexity.
As I said in that post, my interest in cognitive psychology is motivated by
engineering (SE). I agree that abstraction, as well as language/tool support
is generally considered the way to tackle complexity. There is even a workshop
dedicated to the topic (The Role of Abstraction in Software Engineering
However, there seem to be very few studies of abstraction from the side of
I've also tried, without much success, to find out material on what cognitive
psychology has to say about abstraction as a mechanism of the human mind. In
particular, I'm interested in studying the connection between abstraction and
hierarchical nature of mental models.
It may be useful to distinguish between abstraction and generalisation, though
interested in both. I refer to abstraction as an information filtering process
extracts the properties of an object according to some focus, leaving aside all
properties deemed not relevant to the focus. In SE, this seems to be often
with generalisation, an information increasing process through which information
about a number of objects is collected and used to yield a single description
applies to a larger set of objects.
>From what I could learn, both abstraction and generalisation seem to be ways to
"navigate" through hierarchical structures of concepts. These are useful to
information in an efficient way: a concept at one level can subsume all
lower levels (I suppose this is abstraction). In addition, different levels of
hierarchy support different inferences. An inference about a concept at one
does not necessarily apply to a concept at a more abstract level. This seems to
related to generalisation.
Representations of the world tend to be set-subset hierarchical structures, one
example being the taxonomy proposed by classical physics, which decomposes
into molecules, atoms, subatomic particles. Traditional programming languages
another example, by organizing the modules into hierarchical structures,
to a given decomposition criterion. In fact, the choice of decomposition
defines the programming paradigm.
For instance, a very successful decomposition criterion is that of
programming (OOP). However, no single decomposition is adequate for problems and
systems: some concerns do not align well with the chosen decomposition. In the
of OOP the so-called non-functional requirements are cause of problems. The
than hierarchical" nature of problems in modern SE provides the motivation for
specific field of research - aspect-oriented software development (AOSD).
AOSD focuses on systems and problems whose concerns map to more than one
decomposition criteria. When a problem or system is "more than hierarchical",
includes concerns that map to distinct decompositions, not all concepts can be
cleanly represented within the modules provided by the chosen paradigm, whatever
that is. AOSD strives to obtain and manage modularity in the presence of such
complex problems and systems.
One thing that I recently realised is that though it is true that the human mind
tends to build hierarchical structures, it also able to manage _multiple_
hierarchies, by relating a given concept from one hierarchy to a concept from a
different hierarchy. This seems to happen when we deal with different subjective
views of the same concept. One example is the concept of tree, which may
woodsman from the point of view of its height, caloric consumption and yielded
fruits. The woodsman may also build a hierarchy of trees based on this
tax assessor, by contrast, may approach the concept of tree from the point of
of estimated value, tax value and cost of cutting it down. The tax assessor may
build a different hierarchy of trees along these different criteria.
The human mind seems capable of taking a view of a concept and polymorphically
switch to another view of the same concept, and proceed "navigation" from that
point, along the different conceptual hierarchy. Unfortunately, most programming
languages do not provide support for such kind of "multi-dimensional
My aim is to have a more precise and complete notion of mental models and its
capabilities and limitations, in the hope of using this knowledge to build a
to which programming languages and paradigms can be assessed.
Thanks for any pointers,
Miguel P. Monteiro | cell phone +351 96 700 35 45
Departamento de Informatica | Phone +351 21 294 8536 ext. 10708
Faculdade Ciencias e Tecnol.| Fax: +351 21 294 8541
Universidade Nova de Lisboa | URL: http://ctp.di.fct.unl.pt/~mpm
2829-516 Caparica, PORTUGAL | Skype: miguel.p.monteiro