« Beating Like A Heart | Main | The Environment and the Election »

Biomorphic Software Explained

We talk quite a bit about biomimicry here at WC. It's not simple tree-hugging biophilia; it's all about complexity. Nature has a lot of experience with building interconnected complex systems able to last for generations, adapting to changing circumstances and taking advantage of new niches. Building a 21st century economy and society based on principles gleaned from the workings of natural systems is an approach to sustainability with a great deal of potential. It is, however, sometimes a little difficult to understand.

ACM Queue -- the journal on "tomorrow's computing" from the venerable Association for Computing Machinery -- has in its June issue a non-specialist-friendly essay describing a biomimetic approach to programming, how it works, and why it has the potential to produce results that traditional approaches can't touch. The essay, entitled "Hitchhiker's Guide to Biomorphic Software," includes a straightforward list of characteristics of biomorphic designs (which need not include all of the bullet points):

  • Collective interaction. Behavior results from the collective interaction of similar, multiple, independent units, such as in a swarm.
  • Autonomous action. Individuals act autonomously; there is no one "master" individual controlling the behavior of the others.
  • Emergence. Behavior results—emerges—from the interaction of members, rather than being explicitly designed into the individuals.
  • Local information and interaction. Individuals tend to operate from only local information and interactions. Their scope of view is spatially local, rather than global.
  • Birth and death. The addition and removal of individuals into the group (i.e., birth and death) are expected events.
  • Adaptation. Individuals have the ability to adapt to changing goals, information, or environmental conditions.
  • Evolution. Individuals have the ability to evolve over time.
  • The essay then goes on to describe a simplified example of "multicellular" software which includes characteristics which cover this list.

    As an introduction to the software side of biomimicry, the essay is terrific. It doesn't touch the application of biomorphic principles to other sorts of design, however. Nonetheless, its checklist of the advantages and disadvantages of biomorphic software applies across the spectrum of approaches which seek to echo nature:

    The desirable characteristics of the biologically inspired architectures are evident:

  • They are robust. Failure of one or more individuals does not generally fault the group.
  • They are adaptable. Biomorphic software can adapt to its environment in a number of ways, including evolving, learning, or swapping DNA.
  • They can self-organize.
  • They are distributed and parallel.
  • They are built from simple units.

    But there are problems in designing biomorphic architectures:

  • They can be difficult to scale.
  • They can be difficult to engineer.
  • They can be difficult to control.
  • They can be difficult to comprehend. Approaches such as genetic algorithms produce solutions that can be so convoluted and obscure that we are forced to accept that "it works by magic."
  • (Thanks, Ben Hunt!)

    Comments (2)

    Ben Hunt:

    dude, i commented this link six posts ago . . . do i even get a hey how are ya?

    Jamais Cascio:

    That you did. Sorry -- I don't get always get a chance to read the comments in posts done by other contributors (comments in my own posts get forwarded to me in email). I'll make a note of it.

    About

    This page contains a single entry from the blog posted on July 19, 2004 3:21 PM.

    The previous post in this blog was Beating Like A Heart.

    The next post in this blog is The Environment and the Election.

    Many more can be found on the main index page or by looking through the archives.

    Powered by
    Movable Type 3.34