Friday, September 9, 2011

Hardware and software

Hardware and software

I thought of comparing hardware and software from a philosophical point of view in order to determine the supremacy of one over the other. Although this has been a longstanding debate, I am adding my contribution by putting across some key points.

To a superficial observer, it might seem that hardware and software are pretty interdependent entities. For instance hardware is pretty useless without any software and software always needs hardware to exist. Also, one finds that software development always makes use of hardware (pc, laptop, punched cards, etc) making it seem that hardware is the fundamental element and software is only a derived element.

To get a deeper understanding, one has to draw parallels with life on earth itself! It then is quickly apparent that hardware represents the body and software being the soul! You can crush the hardware into pieces and render it useless just like the body becomes lifeless if it is physically harmed beyond a threshold. The soul according to philosophers being immortal is literally indestructible. You can burn down a pc or a laptop but how do you destroy the software in it? Software like the soul can move from one hardware to another bringing in life to it. Software is massless, dimensionless like the soul and no one can see or touch it either! Any philosopher will tell you that the body is just a container while the soul reigns supreme.

For high fidelity systems like aircraft and industrial controllers, engineers calculate reliability and availability for hardware. Do you know why they dont bother doing it for software? You guessed it right! Software is infinitely reliable and available and never undergoes wear like hardware. It works for a million years as  good as it worked on the day of release. One might then argue that software crashes are an indication of poor reliability. From a philosophical standpoint, software crash is just another form of execution which might not be desirable to some people (like users, ceos etc.). You should see the beam in the eyes of a developer when a particularly difficult to reproduce crash gets reproduced ; sheer ecstacy! If you dont like crashes, its your problem.

Long ago, most things used to get implemented at hardware level itself. Hardware engineers dared to implement multiplication, differentiation etc using opamps. But history has shown that the world lost confidence with such gimmicks and started relying on software for most things. Software being highly malleable like the soul, can be changed and improved upon very quickly. A donkey soul can be quickly changed into human soul since fundamentally it is the same soul. (i am authoritatively saying this after watching a "reality"show on tv that proved that a person had donkey soul in the previous birth!). My hypothesis is that this could be the reason why human population is increasing and animals are going extinct (postulate: the number of souls in this universe is a constant). Coming back to our argument, it is fairly easy to modify and recompile donkey class dumb software into something more intelligent. Try that with hardware and you will spend the rest of your life in such a project and in the end pray that you be reborn as a donkey so that you will not need to work on such projects!

No comments: