
The Four
Principles
Summary
table
Specialization
in
computing
Polymorphic Messaging
in
computing
Loading code
Interpreted code
in
biology
Stigmergy
and
"self"
in
computing
in
the Internet
Cell
Suicide
(Apoptosis)
in
computing
Intertwined principles
Complexity
The problem
Out of control
Characterizing
complexity
Dynamic complexity
Why the Biology Metaphor
Parallels
with computing
Information
processing
Encapsulation
Emergence
Example emergent systems
Multi-level
emergence
in computing
in biology
Scale and
emergence
Evolution
of computing
of
multicellularity
Conclusions
Discussion & Comments
|
Complex
systems inevitably evolve multiple levels of complexity which make the
systems difficult to understand and make their behavior even more
difficult to predict.
In complex, dynamic, adaptive systems, sets of elements tend to form
stable, mutually
reinforcing (i.e., autocatalytic) interactions. As Stuart Kauffman has
shown, the emergence of such
sets is virtually inevitable. And the process seldom stops with the
formation of just one additional level of interaction.
Soon after autocatalytic sets emerge at one level, the sets themselves tend to begin interacting with
one
another. These higher-level interactions tend to form because each
autocatalytic set changes the environment
of the others, for example by changing the relative abundance of the
elements that participate in the autocatalytic sets. Moreover, a
species of lower level atomic element may play roles
in more than
one set. For example, individual humans participate in many
higher-level social sets, e.g., families, companies, clubs, markets,
tribes, nations, etc. Each social group is distinct and relies on
different kinds of human interaction. Yet the groups have subtle
linkages due to sharing individuals who act as bridges between
them. In general, participation in multiple sets creates linkages
between the sets.
As the
autocatalytic sets themselves begin to interact with one another, they
begin to play the
role of atomic
elements at a higher level of abstraction. As such, they begin to form
new autocatalytic interactions within that higher level. And so
forth.
This phenomenon
of ever increasing levels of complexity/abstraction arises in all
sorts of complex systems: physical,
chemical, biological, social, economic, computational, etc.
Multi-level complex systems are inherently unpredictable
Multi-level emergence is
especially
important
to understanding both multi-level
digital and multi-level
biological systems because multi-level
emergence poses
severe, sometimes insurmountable, challenges for the predictability and
manageability of the resulting systems.
Cause and effect in multi-level
complex systems
does not
necessarily
reach across levels in a simple way. Both evolved and
designed systems tend to use encapsulation
mechanisms to
restrict unwanted interactions that tend
to
devolve
to chaos. But encapsulation
fundamentally cannot tame all "unwanted" interactions. Most of
the
biomolecules inside
a living cell are isolated from the external environment by cell walls
and
often also isolated within internal cellular organelles. Yet some
biomolecules must
be able to pass through the membranes for the cell to function and the
behavior of these molecules once they have crossed the barrier is not
always straightforward. Similarly, modern
computers are designed to prevent the inappropriate
reading, writing, or execution of memory contents. Yet some data
must
be allowed to pass. Firewalls seek to
prevent
inappropriate interactions
between
computers over Internet connections. But it is not always
possible to determine what is or is not appropriate.
And
so forth. In the world of software, Joel
Spolsky's Law
of Leaky Abstractions points out that levels of abstraction in computing
are never foolproof.
Nonetheless, in
order to predict and manage the
behavior
of
multi-level
complex systems, we must be able to reason about how cause-and-effect
crosses
the levels -- because it almost always does.
However, tracking cause
and effect
through multiple levels is exceedingly difficult and
often
impossible. The details of a hurricane
or tornado are fundamentally not explainable by invoking the
physics of
individual air and water molecules. Nor can a computer be understood by
pondering the behavior of electrons, or logic gates.
Similarly, the behavior of even a single cell cannot yet
be
predicted by understanding its chemistry at a molecular level. We
intuitively recognize these limits,
and
their
consequences for predictability, in business, social, economic and
ecological
spheres as well as biology and computing.
Occasionally, multi-level
phenomena become explicit and our inability to manage them has profound
consequences. For example,
pharmaceutical drug discovery is a biological area in which we face
many levels
of complexity between the “cause” and the “effect.”
We seek to find a small-molecule, i.e., drug, that
modulates some
intracellular chemical pathway in a way that desirably affects the
human body
(or even the human mind) yet does not affect any other cellular process
in a
deleterious manner. The major reason it
is so difficult to find drugs and even more difficult to determine that
they
are safe and effective is that there are so many levels of complexity
between
cellular chemical reactions and whole-body effects and side-effects. Similarly, in the computing realm,
multi-level problems account for some of the most recalcitrant bugs we
face. Perhaps the most egregious
example in computing is the prevalence of buffer-overrun exploits in
Windows. A buffer-overrun takes place,
essentially, at the machine language level, i.e., the necessary code
for
array-bounds checking translates to perhaps a dozen extra machine
instructions. Yet the effects of
buffer-overruns can be Internet-wide. The
“SQL Slammer” denial of service worm that slowed or
blocked
80% of
all Internet traffic for a few hours January 25th, 2003, was
due to a buffer-overrun
in Microsoft SQL Server software. And today, the third
largest viral botnet in the world, known as Bobax, "...bores open a
back door and downloads files onto the infected machine, and lowers its
security settings. It spreads via a buffer overflow vulnerability
in Windows, and inserts the spam code into the IE browser so that each
time the browser runs, the virus is activated." (see here)
So much of the spam that bedevils the entire Internet is due to a few
incompetently-written machine instructions in Windows that allow a
buffer overflow.
The “three-level rule”
There are
cognitive, and even physical, limits to our ability to trace
cause-and-effect
through multiple levels. We can focus on the elements of one particular
level
and contemplate the “part/whole” relationships in two directions. For example, we can think about how the
elements, say molecules or machine instructions, are made up of atoms
or
orchestrated gates and how the properties of those atoms or gates
affect the
properties of the molecules or instructions. With
a switch of cognitive repertoire, we can also
contemplate
how the
molecules interact with other molecules to form crystals or various
chemical
reactions or how machine instructions cooperate to carry out a function
or
subroutine. A skilled practitioner – a
chemist or programmer – may be able to think about interactions in both
directions at once. That is, a skilled
practitioner may be able to reason simultaneously about three levels of
abstraction. But it is quite difficult
and seldom even useful to do so. Reasoning
about four levels of abstraction at one time is,
arguably,
beyond the ability of the human mind.
Multiple levels place constraints on the freedom to evolve
As we have seen repeatedly in the evolution of computing,
interactions
between levels can constrain the possible
evolutionary paths of adjacent levels.
Every level other than the “highest” (i.e., most recently evolved)
level of
abstraction is at least somewhat
constrained to
evolve more slowly because changes that invalidate an implicit
“contract” with
the higher level tend not to survive long. In biology,
single-cell
organisms and viruses can mutate rapidly
because
their behavior is free from a higher-level constraint.
Individual cells within multi-cell organisms
are not so free to explore new behavior.
Similarly, unconnected digital devices, PDAs or cell phones for
example,
change at a dizzying pace whereas PCs become more powerful and cheaper
but must
generally retain the ability to run almost all applications from the
prior
generation. In multicellular computing,
we see most innovations happening at the highest level where new kinds
of
collaboration emerge -- new programming practices such as AJAX, new
mashups in Web2.0, Google's AdSense
ecology, etc.
These innovations seldom require changes to the underlying
ecology of
computers, operating systems, or Internet/Web protocols.
Those that do, tend to fail.
So, now, while multicellular computing is in its relatively early
stages is the time for
rampant innovation. Also it is the time when architectural
decisions -- good or bad -- will have the most effect in steering the future evolution of
multicellular computing. The architectural principles
upon which new systems are based will tend to settle into accepted
patterns. Those systems that already support the winning
principles will be more likely to prevail.
|
|