What is software?

What do you mean when you say "software"?

A word with (at least) two meanings

The term "software" is nowadays widespread, even in everyday speech. Many people tend to think about computer programs when they hear or read this term. And many people refer to computer programs when they use this term. Is this the correct meaning? Is it the only meaning?

Today there are two main meanings for "software":

  • in a strict sense, computer programs;
  • in a broad sense, all the information that can be automatically processed (i.e. treated with a computer system).

The second, broad, meaning is opposed to "hardware". That is to say, it includes everything in a computer system that is not hardware: programs, associated documentation and data.

The word "software" dates back to the early 1950s, when it was coined as a term opposed to "hardware" in order to distinguish the logical part of a computer from the physical one. At that time, computers had very limited storage, and hence they used to only store the necessary programs and very few data. As a consequence, when the term was born, it basically had both today's meanings at the same time. On the other hand, the situation is quite different today: computers can and do normally store and process any kind of digital information, i.e. programs, online documentation, texts, documents, images, sounds, animations, movies, ... Hence, we must decide if we refer to all these categories when we use the term "software", or rather to programs only.

Why I prefer the broad meaning

Personally, I use the term "software" in its broadest sense.

There are a number of reasons for this choice.

First off, there already is the term "programs" to refer to the first meaning, while no other appropriate (concise) term besides "software" is available for the second meaning.

Moreover, the various categories of works covered by the broad meaning of "software" (programs, documentation, documents, images, sounds, animations, and so forth) have no clear-cut boundaries. Actually, the distinction between them is blurred and there are many overlapping areas. Hence, failing to have a single term to refer to all these categories would be inconvenient. Examples of overlaps between the above mentioned categories may be:

  1. literate programming (in the TeX sense), where code and documentation are merged together in a consistent work;
  2. programs whose documentation is extracted from specially crafted code comments (e.g. with Doxygen);
  3. documents written in PostScript, which is actually a full-featured programming language (having even conditional statements and loops);
  4. so-called SID tunes, which are music files that consist of code executed by a SID chip emulator;
  5. many more...

For these reasons, I think that the broadest meaning of "software" is the most appropriate to be adopted.


You say that a document is software: what if this document is printed out on paper? Does it become hardware?

Not anymore than a program becomes hardware, when it is stored on a physical medium (hard disk, CD-ROM, DVD-ROM, USB stick, floppy disk, ROM chip, ...).

In my opinion, when a document (which is software) is printed on paper, it becomes software stored on a physical medium (paper, in the present case). The physical support is hardware, the information stored on it is still software (that is to say, information that can be treated with a computer system).

Please note that software always needs a physical support in order to be stored. Even when software is loaded in main memory: well, main memory is a physical medium!

Francesco Poli

This work is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2. It comes with absolutely no warranty. See the license text for details.