The following is an excerpt of a rough draft of the soon-to-be-published book, A Brief History of Computing: The GNU Story.
As previously mentioned, software is the context in which a computer functions. Without it, a computer is an inert hunk of metal. At it’s most fundamental, software is just a stream of zeroes and ones called the Binary Number System. When binary digits (bits) are combined in a particular manner meant to communicate information to a computer, we call that a programming language, or more specifically a machine language. There are other, higher level, computer languages in use as well. They have different applications. Some are designed to implement operating systems, some for creating applications, some to automate system administration tasks, as well as many other uses.