Recognizing the parallels.
We, humans, try to write and design programs for them to work the way we would, if we were much faster and made no mistakes of our own. I then reason, that programs are an attempt to reflect how humans work and think. So, should it come as a surprise that there is an undeniable parallel between a software system/program and a human brain?
A software system and a human brain are not nearly the same thing. However, for me, there is that undeniable parallel between the two, that i later enumerate in this post.
As mentioned, I do concede the vast difference between software and the human brain; the lack of conscience or emotion in software/computers/machines is one stark example. Cognition is another example that comes to mind.
I do, however, surmise that such differences, between a program and a brain, are a direct reflection of how (little) we understand of our own brain. For instance, our understanding of conscience, emotions and cognition is very limited. If we understood them enough, we would have found a way to program them. We did so with memory and, to a certain extent, learning.
Can we then understand our own brain completely? That is a question for more able and interested minds to answer. There has been a lot of scientific work published in this area, not to mention some interesting writing outside of academic publications.
I, however, am interested in recognizing that there is this parallel between our mind and what it produces; and the impact that such a recognition could have on engineering software, concerns me.
For now, i simply enumerate below the parallels as i recognize them.
- Processing Unit. Both, a software system and a brain, are computational units, i.e. they process information in some fashion in order to produce a result.
- Response to Stimuli. Software systems, no matter how small (single function programs) or big (ultra-large, mutually interacting systems), produce output or cause an external event/effect when they are provided with inputs, or in other words respond to stimuli. This is a basic similarity that software shares with a living brain.
- Subsystems with Explicit Functions. Software systems typically contain subsystems, that tend to be responsible for specific functionality that serves the overall purpose of the product that they belong to. In a similar vein, the human brain has its own sub-parts that are responsible for different things.
- Learning. While not all software is designed to learn, recent surges in the widespread use of machine learning algorithms suggest that modern software does carry out some degree and nature of learning. It is arguable however, as to how (dis)similar it might be to that of a brain (human or otherwise). However, context aware mobile applications and number crunching software used by the big data houses in the tech-industry, are glaring examples of software that is capable of learning from its own execution, just as a brain.
- Memorizing. While principally different, this is yet another important function that we associate our brain with. It so happens that computer programs and algorithms have been designed for ages with this idea as their corner-stone. Prominent examples include programs using the Dynamic Programming algorithmic design paradigm and software interfacing with databases. That said, all software use a transient memory that perishes after the software program is done executing; in a sense attributing most programs as being “amnesic”.

Leave a comment