Modern Software and Biological Organisms: Object-Oriented Design
In my last post, I discussed the problem with “bad design” arguments. I also offered a defense of design theory by demonstrating the exceeding intricacy and detail of the vertebrate eye as compared to any visual device crafted by even the brightest of human minds. In fact, when we examine the various kinds of eyes in higher animals, we see the same modern object-oriented software design principles that computer programmers use to build the applications we use every day. That includes the executing code of the browser that displays this article. Formal object-oriented programming, as a method used by humans, has only been around since the 1950s. Yet it is clearly represented in the biological world going back to the appearance of the first single-celled organisms 3.5 billion years ago (in the form of organelles such as the nucleus, ribosome, mitochondria, Golgi apparatus, etc.).
The Eye in Higher Animals
Let’s consider the eye, which is but one of many subsystems (along with the brain, heart, liver, lungs, etc.) in higher animals that coordinate their tasks to keep an organism alive. I discussed as much in a previous article comparing the code of modern computer operating systems to the DNA code that is executed to build and maintain biological organisms. In computer programming, it is a very bad practice to write code willy-nilly and expect it to perform a useful function. Highly complex computer programs are always specified by a set of requirements that outline the functionality, presentation, and user interaction of the program. Each of these is generally called a functional specification. (Modern agile software development techniques many teams use now are more of an evolutionary process, but still require working from a backlog of requirements through progressive short iterations.)
With respect to the eye in organisms such as chordates, molluscs, and arthropods, the functional requirements (or backlog, in agile terms) might, at a high level, look like this:
- Collect available light
- Regulate light intensity through a diaphragm
- Focus light through lenses to form an image
- Convert images into electrical signals
- Transmit signals to the visual processing center of the brain
- Process visual detail, building a representation of the surrounding environment
This set of specifications should not be taken lightly. To presume that blind, undirected processes can generate novel functionality solving a highly complex engineering problem, as we see above, is highly fanciful. These specifications call for an appropriate interface of the eye (in this case, the optic nerve) that connects it with the visual cortex. They call for a visual cortex that will process the images, which must then interface with a brain that can subsequently direct the whole of the organism to respond to its environment.
Human designers can only crudely approximate any of this. Yet, as complex as the eye might be, it is one small but critical component of the entire system that makes up a higher biological organism. What’s more, in the design of complex systems, the set of requirements must map to an architecture that defines the high-level structure of the system in terms of its form and function, promoting reuse of component parts across different software projects. We see such component reuse in biological organisms, with different eye types as a potent example.
A Range of Eye Layouts
Scientists believe there are basically ten different eye layouts (designs) that occur in nature. From a computational perspective, we can view this generally as a three-level, object-oriented hierarchy that can describe animal eyes, as seen in the class diagram below.
At the top level, we have the Eye class which, for the sake of simplicity, is composed minimally of a collection of one or more photoreceptors and an optic nerve that transmits images to the visual cortex. (Note the filled diamond shape that represents composition in relationships between whole and part.) The Eye class itself is “abstract” in the sense that it cannot be instantiated itself, but provides the properties needed by all its subclasses that at some level will be instantiated as an eye of some given type. On the second level, we have the Simple and Compound eye types which have an inheritance relationship with the Eye class. This means these two eye types inherit all the properties of the abstract Eye base class, along with its necessary components. These classes are abstract as well. On the third level, we have class objects that inherit all the properties of either the Simple or Compound classes. At this level we still have abstract classes which will have all the properties or components necessary to exist in any given higher animal but require further differentiation at the species level to be properly instantiated.
Now let’s take a closer look at the Refractive Cornea eye layout, which is present in most mammals, birds, and reptiles. The Refractive Cornea class diagram below shows the major components of which it is composed, which are a lens, sclera, iris, cornea, uvea, and retina.
Humans and Falcons
What is important is not just the particular parts, but structurally how these parts are uniquely instantiated in animal species with refinements based on the requirements specific to the habitat in which they live. For example, even though humans and falcons have the same basic components of the refractive cornea eye type, structurally they are quite different, as seen here.
The requirements of a falcon’s refractive cornea eye type include that it be able to find its prey over great distances. This means that, as compared to humans, it needs a larger lens, more aqueous humor to nourish the cornea, a more convex retina, and a higher concentration of light-gathering cones. To aid high speed hunting dives, which can surpass 200 miles per hour, the falcon eye also sports a translucent nictitating membrane (third eyelid) to clear any debris on dives and also keep the eye moist. At the component level of the refractive cornea, though humans and falcons share similar components in the abstract, there are significantly different architectural properties and functions that must be implemented by direction of the DNA code possessed by each organism.
So, let’s now look at the simplified class hierarchy for human and falcon eyes. At the level of instantiation, where we find the Human Eye and Falcon Eye classes below, they must implement the component interfaces of the Eye and Refractive Cornea specific to their species. In the case of the Falcon Eye class, it also aggregates the Nictitating Membrane class that is associated with it as a species (and other species of birds as well, such as the bald eagle).
I’m certain Darwinian evolutionists will argue that this class diagram construction is simply one that comes after the fact, and only supports what is described as convergent evolution across species, where unrelated organisms evolve similar traits based on having to adapt to the habitats in which they find themselves. Indeed, evolutionary biologists believe the eye, which they admit is precisely engineered, has evolved independently more than fifty times.
Yet, when we compare highly complex computer software programs to biological organisms, even the most complex software programs designed by literally the best PhD minds on the planet pale in comparison with the simplest of biological organisms. To say that evolution, which is blind, undirected, and counts fully on fortuitous random mutations, will solve the same engineering problem multiple times through what is essentially mutational luck is unrealistic given statistically vanishing probabilities over the short timelines of even hundreds of millions of years. However, when we look at the various eye designs as discussed here, it is clear they each meet a set of specific requirements, following principles of object-oriented design we would expect from a master programmer.
Photo: A falcon’s eye, by Oussama dzlion [CC BY-SA 4.0 ], from Wikimedia Commons.