Monday, June 23, 2003

The Dual Nature of Biology

We -- meaning all of us software futurism geekoids -- often talk about borrowing inspiration, or more, from biology. This is a good idea, and I'm in favor of it, but I often think that people think it's going to be easier than it will be. Borrowing from nature is actually quite hard (I've recommended Steve Vogel's Cat's Paws and Catapults, haven't I?), and I think it will be even harder in software.

Here's one reason: in biology, every "component" (and of course that is a flawed metaphor) can serve many roles at once. Carrying nutrients and carrying away waste. Taking in oxygen and food. Sexual reproduction and waste elimination. It's even more true on a molecular scale. This seems to be a prime design technique in nature. Why? Partly it's just the slow-but-very-fine mill of evolution; partly it's the very nature of evolution starting with existing materials - it's easier, apparantly, to add a new function to an existing system than to evolve a new system.

Software, on the other hand, tends to be very singular: it is in fact considered a good design that each function has a single, authoritative point of responsibility. It would be an interesting experiment to try to write a piece of software where objects or components were required to have multiple independent functions.