But by your logic software doesn't exist because it can't exist without hardware. Software is the information in form of electrical pulses that controls the system.
Whether software can exist without hardware is a fun question.
Like practically any question expressed in informal, natural language, it’s a semantic one, dependent on the meaning of the terms “software” and “hardware”.
Since I’ve been a computer programmer for about 40 years, the last 30 as a 40 hours/week profession, but was in school long enough to be inculcated with some of the central ideal of computing theory, my personal definitions is that “hardware” is a real physical machine Turing equivalent
to a universal Turing machine
with a finite tape. Note that I include the tape as hardware.
“Software”, by my personal definition, is the entirety of tape, which is to say, the part of the UTM that can change. It’s tempting, and I started this post stating that “software” is the part of that tape that containing the symbols on the tape that encode the specific Turing machine the UTM is simulating, but by this definition, much of what I intuitively think of as software isn’t, because much of the software I work with is interpreted rather than compiled. In the UTM model, this “interpreted code” is part of the input section of the tape, not the coding of the emulated Tmachine. In more common terms, this address of this code is never contained in a CPUs program counter, only in its other address registers.
My definition of software is purposefully inclusive and too large, because it includes symbols that I don’t effect the state of the UTM – in common terms, it includes both data and software. I don’t find this very bothersome.
Since any Von Neumann architecture
computer is a UTM (or, to be correct, an extension of a TMachine where the tape can be not just be moved by one cell, but to any cell – let’s call this an XTM), and most actual computers are single or collections of Von Neumann architecture computers, this means that I consider software to be physical, actual electric electrons in the memory of the computer, or electrons or atoms in the storage it can access. I include storage because, intuitively, I don’t really mean a Von Neuman architecture machine in the usual sense, in that I think of its randomly accessible non-volatile storage to be part of its memory, not something accessed via an input/output device. This avoids complications arising from situations where the software is never fully copied from storage into true memory, which is the case in most present day computers.
By these definitions, “software that exists without hardware” can’t exist. Both are simply identical to the tape of an actual, physically realized XTM.
These definitions stated, I can consider what might be a definition of “software” that could exist without hardware. When I do,Ada Lovelace
come to mind.
For the reader not computer geek enough to immediately understand,
let me explain. Ada Lovelace, by some accounts the patron goddess of computer programmers, was a British child prodigy mathematician and writer who, in 1833, at age 17, met mathematician and engineer Charles Babbage, saw a prototype of his non-Turing complete Difference Engine mechanical computer, then in 1842-43, translated and expanded on an Italian mathematician’s description of Turing’s proposed Turing-complete Analytical engine
. Part of her paper
– its famous section G – included a description of a program for computing Bernoulli Numbers.
The Analytical engine was never built. So, by my definition, neither Ada’s paper’s section G not the ideas in it are software. Because of this paper, however, many people consider Ada “the first computer programmer”. If we define “software” as “what computer programmers write”, then, section G is software.This dive into the distinction between computer hardware and software
wanders far, and I think, perilously, off the topic of the human brain, mind, and the distinction between them. I don’t think the human brain is a Turing equivalent computer, so we shouldn’t draw too close an analogy between human brain and a TEquiv computer, or the human mind and software.