In the 1930s, Alan Turing developed the concept of a universal Turing machine that could simulate any other Turing machine by reading the description of that machine from its tape. This established the idea that computer programs are just descriptions of logic that can be run on any universal machine. Thus, in developing this concept to formalize the limits of mechanical computation, Turing accidentally invented the fundamental idea of software as a set of instructions that can be run on different hardware platforms.