The history and development of computer software date back to the 1800s, when Countess Ada Lovelace wrote the first algorithm for Charles Babbage's Analytical Engine. Neither the device nor the algorithm that she wrote was implemented at the time, but they did spark interest in developing more advanced computers and software.
A computer scientist named Alan Turing developed the first theory regarding software design in a 1936 essay titled, "Computable Numbers With an Application to the Entscheidungsproblem." His essay resulted in the establishment of the concept of computer science and software design. It was at this point that people began to formally study these subjects in an academic setting, and the software engineering industry began to take form.
In the beginning, computer software did not exist as code. Computers used fixed programs that were hard-wired, and programming a computer required rewiring and redesigning or even rebuilding the machines entirely. The Electronic Numerical Integrator and Computer, or ENIAC, the first electronic programmable computer, for instance, was programmable but used switches and plugboard wiring instead of software.
Turing's 1936 essay proposed that a "Universal Machine" could be made that would be capable of running a program stored on a medium such as a tape, enabling it to fulfill any purpose. A physicist named John von Neumann proposed a design for computers that called for the use of a processing unit and memory that was capable of containing both instruction code and data. According to the von Neumann model, this machine would also store data externally via mass storage and have functionality for data input and output.
In 1948, the Small Scale Experimental Machine, or the "Manchester Baby," successfully loaded into memory a program written by Tom Kilburn and executed it. The Manchester Baby was the world's first computer capable of storing actual programs and was considered the first modern computer. It is credited with ushering in the age of software.
Computer software first came in binary format that was machine-readable but difficult for humans to read or design. These first languages, called machine languages or assembly languages, were loaded into computers using punched cards, a form of data medium first pioneered in the 1700s by Basile Bouchon, a French textile worker. In time, programming languages came into existence with syntax that was easier for humans to read and understand. Autocode was a name given to the earliest group of high-level languages, the first of which was developed by Alick Glennie in 1952, and they depended upon a compiler to translate it into machine-readable code.
The first major programming language was "Formula Translation" or FORTRAN, which was developed at IBM in 1954 by John Backus for the purpose of scientific applications. Grace Hopper, a computer scientist and U.S. naval officer, developed FLOW-MATIC in 1955, which became a predecessor to Common Business-Oriented Language, or COBOL. Lisp appeared in 1958 and became popular for use in artificial intelligence research.
In 1964, a language known as Beginner's All-purpose Symbolic Instruction Code, or BASIC, simplified the world of software development for access by the public. It first appeared on expensive microcomputers but was then shipped with cheaper personal computers such as the Altair 8800, Commodore PET, Apple II, TRS-80, and Commodore VIC-20/64 in the 1970s and 1980s. BASIC and personal computers worked together to bring both computers and software design into mainstream culture, resulting in the explosive growth of public interest in both computers and programming.
The programming language known as C was developed by Ken Thompson and Dennis Ritchie in the 1970s and gave rise to the language known as C++, which first appeared in the 1980s and remains one of the top languages for software development across the computer industry. An interpreted language, Perl, was developed by Larry Wall and first appeared in 1987, becoming popular as a language used on Unix and Linux systems.
The age of the Internet also made popular the concept of free and open-source software, a philosophy that says that a user should be free to download and run software as well as see its code and make changes to the code without having to pay for it. The free software movement was formally founded by Richard Stallman in 1983 and has led to the lowering of barriers to computer ownership due to the production of free operating systems such as Linux. In turn, this has opened up new opportunities for those seeking not only to own a computer but also to develop programs. Free and open-source software development environments, such as the GNU Compiler Collection or GCC, has provided many aspiring programmers the opportunity to learn their craft and to transition into the commercial market. This, in turn, has made the world of software development more open to curious individuals in even the poorest parts of the world.
To read more about the history and technology behind computer software, click on any of the following links: