Thursday, March 18, 2010

The First Digitally-Controlled Designs

Since the discovery of DNA and RNA and the Genetic Code, it is indisputably clear to biologists that the structure and function of all living things is determined by the information stored in the DNA. The interpretation of the DNA information according to the Genetic Code creates a enormous set of specific proteins and other complex organic molecules that implement the structure and function of a particular organism. (See The Genetic Code - how to read the DNA record and More About the Genetic Code.) Some of these complex molecules are building blocks of the living structure; some are the tools or 'workmen' that build the structure; other organic molecules function more like supervisors that control when and where and how this work of construction is done. Still others supervise various functions of the living structure, such as digestion, breathing. sight, growth, etc. All of these complex functions are guided not exclusively by chemical laws, but also by the information from the DNA. (See Life is more than chemistry and Can Chemical Evolution Work?) This is true of all living things, whether a single-celled organism or a much larger plant or animal such as an oak tree or an elephant. Such a complex, coordinated interplay of material and function at multiple levels is clearly DESIGN.

I ought to explain that I understand and appreciate this from experience. I worked for 43 years as a designer and inventor of computers and other digital systems, acquiring 45 patents in that time; and in my retirement years, I have been studying organic chemistry. When I started my career, a typical computer was a roomful of refrigerator-sized cabinets. but less powerful than today's pocket calculator; and I have seen the technology grow functionally and shrink physically since then. In between then and now, the Quintrel computer that I designed, one of the first to do speech processing (like speech recognition) in real time (that is, as fast as you can talk) was the size of a cookie baking pan. Inside all GPS satellites, the computer system that controls all the signals is my design. So I know a design when I see one.

I especially appreciate the advantages of a digitally-controlled design over a design that is just digital. The old-fashioned mechanical adding machines did digital calculation, but the control was manual; that is, the operator had to select the sequence of operations as well as the input data. I remember the company used to have one with a typewriter-like shifting carriage so that it could do multiplication and division; but it was still manually controlled.

In human history, digitally controlled designs started with things like the 'player piano', where the keyboard was controlled by a roll of paper with punched holes to specify the sequence and timing of the notes, and the Jacquard loom, where punched holes caused threads to be raised or lowered to create intricate designs such as brocade and damask. Herman Hollerith adapted the punched cards of the weaving industry for data input for his Tabulating Machines, and Charles Babbage planned to use punched cards for his Analytical Engine, which began the age of computers. (See The Development of Information Processing.)

Let me tell a story that illustrates how "I especially appreciate the advantages of a digitally-controlled design" as I said earlier.

There was a period in my career when we designed digital devices for communication of digital messages. No calculation in the ordinary sense of the word was needed, but the digital logic needed to be 'smart'. For example, before sending a piece of a message (called a packet), an error-checking code needed to be generated and attached to the message, along with a packet number. When receiving a packet, the error-checking code needed to be checked to see if the packet had any errors. (Most errors were detectable.) If the packet had no errors, an 'ack' (acknowledgement) message was returned to the sender; but if errors were detected, a 'nak' (no-acknowledgement) message was returned. Both ack and nak messages included the number of the good or bad packet that had been checked. A nak message was a request to resend the packet (hoping to get it right on the next try), and an ack message told the sender that it no longer needed to keep a copy of the packet. A communication protocol like this was controlled by logic hardware similar to that used to construct a computer, but there was no computer and no software involved. The designs were digital, but not digitally-controlled as computers are controlled by software.

A major problem with this style of design was that if a design error needed to be corrected, or a new design feature added, new parts would need to be added, and the layout and wiring of the parts modified. The parts might not fit, so even the mechanical design might need to be redone.

An obvious solution to this problem is to include an 'embedded' computer in the design, so that software can define the functions of the design, because software is far more easily changed than the hardware. Once the software is thoroughly tested and no longer needs to be changed, it is typically embedded in read-only memory (ROM) and is called 'firmware'. This tactic is commonplace today, with embedded computers in automobiles and in nearly every electrical household appliance. That's easy today, because electronic circuits have shrunk enough for small computers, including all memory and other supporting logic, to be placed in one small, low-cost chip. But back then, electronics had shrunk only enough for simple circuits such a counter to fit in one chip. An embedded computer would require at least several chips.

We couldn't buy a general-purpose computer chip (they didn't exist then), but had to design a computer made of several chips. But this gave us the freedom to design a smaller 'custom' computer with only the functions actually needed. For example, we didn't need to add, subtract, multiply or divide; the only 'arithmetic' needed was to count the bits of a packet. Mostly, the computer needed to make decisions based on a specialized set of conditions. If such a design primarily controlled not a sequence of calculations, but a sequence of other operations (such as those needed for a communications protocol), it was usually called a 'controller' rather than a computer. Often, such a simplified computer / controller could be made with only a half-dozen parts. This 'custom' controller would thus have a 'custom' set of instructions that it could execute. (Each instruction is a group of binary codes and data that tell the computer / controller what to do for each step of its actions.)

Theoretically, a programmer (software writer) could write out the sequence of instructions (the software, or program) in the form of the ones and zeros that the hardware actually reads. But this would be very error-prone, because it is hard for people to memorize these codes, or even to copy them from a list without making mistakes. So, instead, equivalent codes that look more like English are invented, thus creating a special language that is much easier to learn and understand. Then a program called an 'assembler' is used to translate the semi-English to the ones and zeros that the hardware uses. (Also, decimal numbers are translated to binary numbers.)

Thus, almost every computer / controller design would have a different instruction set, and a correspondingly different 'assembly language', and a different assembler program. The assembler is what connected the software design to the hardware design.

Mostly, there were two kinds of designers: hardware logic designers that knew at least how to design parts of the computer hardware, and software designers that knew how to write software. A third kind of designer was a relative minority: the 'system designer', who understood both hardware and software -- the whole system, or the 'big picture'. (See The Start of System Engineering.) A few of these, who also knew the theory of formal languages, were able to write assembler programs, and even 'compilers', which can translate more abstract software languages. With my insatiable curiosity and willingness to self-educate myself in related fields on my own time, I became part of that minority.

The engineering supervisors resisted the idea of embedding computers in a design. Their reasoning was that we had hardware designers and software designers, but nobody that knew how to make a custom assembler. We would have to give such a job to outside specialists, which would be too expensive and troublesome.

It irked me that this judgement was hindering us from making compact and flexible designs. So, on my own time, I designed what I called the "General-Purpose Assembler". It was a step beyond a custom assembler, because before assembling a program, it first read a "language table", which defined the custom assembly language. So, the next time that a supervisor tried to veto a proposal for a design with an embedded computer / controller, I explained that I "happened to have" an assembler that could do the job. I did the extra work on my own time because I knew that digital control of a design was an optimum design paradigm.

I wrote an instruction manual for how to construct a "language table" and how to use the "General-Purpose Assembler", and soon other departments and projects were using it. A few years later, I estimated that about two dozen language tables had been written, creating that many custom assemblers for that many different embedded controllers. The "General-Purpose Assembler" also became a component of the assembler for the Quintrel processor that I mentioned earlier. These were all digitally-controlled designs.

Now, this story may seem like an utter digression from my initial discussion of DNA and RNA and the Genetic Code, but it was all to underscore and emphasize the following point:

I used to think of digitally-controlled designs as a modern phenomena -- but this is true only if you are limited to designs made by humans. But when I started to study organic chemistry and the workings of the Genetic Code, I soon realized that the greatest Engineer of all, God, got there first. For indeed, all living things of all kinds are digitally-controlled designs. The DNA is the read-only memory (ROM) that holds the genome, which is the software (firmware) that controls the chemistry that plays the role of 'hardware'. Each unit of DNA (nucleotide) is equivalent to two bits, having one of four values, and each codon (three DNA units) is equivalent to six bits, with one of 64 values. It compels one to ask "Where did all that DNA-software come from?" (See In The Beginning Was Information .) The reason why there is only one universal genetic code, and why so many life-forms share common design structures is not because all descended from a single common ancestor (unlikely if evolution is inevitable, as Richard Dawkins claims), but because all have a single Creator.

I know that some readers will dismiss my comparison of life designs to man-made designs as mere analogy. But my argument rests on more than analogy. It involves what in category theory is called isomorphisms. Rather than getting too technical, I will illustrate the principles involved by a simple example:

If two species have sufficient similarities (putting them in the same category), we can expect them to have similar locomotion. For example, cats and dogs both have four legs of nearly equal lengths, and the knees bend in the same directions; so we can expect them to walk and run in similar ways. Frogs, kangaroos, and apes also have four legs, but not all four of equal length, so the locomotion is different. There is greater similarity of function when there is greater similarity of structure.

With similar logic methods, we can show that DNA-controlled life forms are more similar to embedded controllers than personal computers. For example, in both, the completed design has no capability of loading new software (not true for PCs). In both computers and controllers, the same hardware with completely different software will have completely different functionality. In life, the same chemical laws, chemical resources (food, air, water, etc) and same genetic code with a completely different genome will have completely different functionality.

As an experienced designer, I not only know a design when I see one, I know a digitally-controlled design when I see one; and I appreciate that it is an optimum design paradigm. No wonder that people are using the term "Intelligent Design" to describe living things.

For more on this subject, see The Digital Control of Life.


Anonymous said...

Hi Jim,
Interesting posts! You might enjoy the Creation Safaris news blog... they have stuff about recent discoveries about codons, etc.
With esteem, Tim

Anonymous said...

Oops, forgot the link -