Hardware, Software, and Wetware
We compare our brains to advanced computers because this simple parallel helps us understand functionality of the brain. The similarities, however, go a bit deeper than that. To understand the connections between the two, we need to talk about the evolution of electronic devices into computers concepts known to but not often used in the IT industry.
Not so long ago, most electronic devices were analog and had a singular purpose. They were sets of small electronic parts soldered to printed circuit boards (PCBs). The most common consumer electronics were radio and TV , tape players, turntables, phones, and calculators. When a company wanted to develop new models or devices, its engineers had to design hundreds of electronic parts, plot their positions on a PCB, and solder prototypes for testing. Once the engineers and stakeholders were satisfied with the results, the company had to set up a manufacturing process to start mass production.
The first milestone in the evolution of electronic devices was the product of people like Charles Babbage, Alan Turing, and John von Neumann , who envisioned a universal machine that could emulate any other machine out there. This concept came to fruition with the invention of modern computers. Today, we use them not only for scientific computations but also for communication and consuming online radio, TV, and online media.
In theory, the companies that invented computers had to produce only one type device that users could use to accomplish a variety of tasks that were the specialties of other devices . The magical medium enabling this multifunctionality was and is software. To imbue a device with business value, engineers had to shift their focus from hardware to software. From then on, business value was written as a text in the form of source code instead of the laborious manufacturing process . This shift allowed faster development cycles and reduced the number of people involved. Since software is written, engineers’ ideas is much closer to realization than when manual work is involved.
To code rather than manufacture functionality was the main benefit of the universal machine concept. However, there was a problem associated with the concept of a universal machine, and with it, we come to the second significant milestone.
Then as now, we perceived computers as fast because of central processing units’ (CPU) ingenious architecture, which consists of millions of small electronic parts called transistors. Yet, computers were slow. Indeed, in contrast to what we may think, they were slower than their single-purpose analog siblings. Though there were many technical reasons, the main issue was the digitalization of signal. Because of this speed limitation, it turned out that the universal machine was not suitable for high-performance tasks.
Engineers used a technique called hardware acceleration to overcome the speed limitations of modern computer design. Hardware engineers created specialized circuitry capable of high performance in a few cases, though this came with the penalty of losing the universal machine’s flexibility, as hardware acceleration was only capable of a limited set of operations. A very common vehicle for hardware acceleration was and is the graphics card. The CPU does not handle graphics; rather, this is the job of the graphics processing unit, which is capable of high-performance matrix operations. Without these specialized chips, we would be not able to play our modern, speed demanding computer games or watch 4K movies.
This leads us to the third milestone in the development of electronic devices, and to understand it, the concept of the universal machine must be temporarily abandoned. Engineers began asking whether by writing source code they could produce hardware instead of software. This concept is known as hardware compilation. The compilation is a process of translating source code written by developers into code the computers can understand. In most cases the source code is translated into software – the machine instructions. In case of hardware compilation the source code is translated to physical hardware. Imagine a very sophisticated printer, which by using some kind of computer language prints an electronic device that includes the necessary circuitry. In this scenario, we still have the benefit of writing the functionality, and we regain the speed of dedicated circuitry. You can read about it here and here.
However, as always, there were drawbacks. Each time we deal with the physical world, the speed of development gets in the way. Compiling such functionality takes plenty of time. Whenever developers find a bug in the functionality, which happens often , they have to recompile the hardware, and the compilation of hardware took much longer than that of software.
The solution is the use an emulator before the final step of hardware compilation. An emulator runs on the universal machine and tries as carefully as possible to emulate other electronic devices. The functionality of the final product can then be simulated in a virtual environment. The better we emulate the basic elements of a final product, the closer to reality that final product becomes. Once we successfully test a new product with an emulator, we can compile the final hardware product.
Each described step is an attempt to resolve the limitations of a previous one, and each resolution introduces new challenges. This leads us to the fourth and final step in the evolution of electronic devices: the emulation of functionality.
The only way we can enjoy the benefits of all the described approaches is to combine them into a highly functional universal system, which is not to be confused with the universal machine. A universal machine is a machine that can emulate any other machine. A universal system is a system that combines the flexibility of the universal machine and the speed of dedicated circuitry. In this scenario, the two main components of a universal system are the universal machine, which can emulate any functionality, and the hardware compiler, which creates dedicated physical circuitry for each emulated functionality. As it turns out, we already have a name for such a system—the “brain,” or “wetware.”
The two describer principles—the dedicated high-performance circuitry and the all-purpose universal machine—are both present in our brains in the form of the consciousness, with all its intellectual capabilities, and the all-powerful unconsciousness. Of course, the primordial learning system acts as the universal printer responsible for growing dedicated circuitry.
Anything related to consciousness serves the purpose of the universal machine. All our intellectual work offers nothing more than a simulation of reality and a simulation of the possible outcomes. Consciousness is the emulator of reality. The more we know about the world and its components, the better we simulate reality. We then take advantage of our intellects and manipulate situations as we search for optimal results.
However, our quotidian life must not depend on conscious thinking. Thinking is a slow, energy-intensive process. Our intellects are good at directing our learning and thoughts, but they are horrible when it comes to everyday tasks. To overcome these limitations, our brains automate our lives, which is the purpose of the primordial learning system. When our intellects produce outcomes, our primordial learning systems try to reverse integrate this knowledge into our brains in the form of dedicated circuitry. This dedicated circuitry forms our unconsciousness.
Just after our brains grow new synapses, our lives become fast and energy efficient. This is the state of being in the moment that we often read about. This requires not only valuable intellectual stimuli, but of course, it takes time. Regardless of whether we print dedicated electronic circuitry or grow new synapses, we deal with the real world and must accept its limitations. Learning is slow. It takes time to grow synapses.
Much as there are pros and cons in computer design, there are pros and cons to each part of our brain. To achieve the best of all worlds, our brain combines the two main approaches: the universal machine’s flexibility and the speed of dedicated circuitry.
There is an interesting concept that describes the evolution of species. It is convergent evolution, and I quote the following from a Wikipedia page exploring the idea: “The convergent evolution is the independent evolution of similar features in species of different periods or epochs in time. Convergent evolution creates analogous structures that have similar form or function but were not present in the last common ancestor of those groups.”
Even though the definition is scoped to biological structures, similar examples of convergent evolution can be observed in technical fields as well. One of the similarities is in the organization of the brain and the way modern computers and software are designed . Why is this important? Because understanding that evolution of different systems is constrained by similar physical limitations which leads to similar system design and functionality.