The history of software has a long history, compared to hardware there were fewer novelties since the development of both was parallel or overlapped.
Some historians credit the Muslim mechanical engineer and inventor Al-Jazari with the first example of programming. During the 13th century, many of the machines that Al-Jazari designed and built could be altered or modified by changing his instructions. This is the concept of modern computer programming.
In 1804, Joseph Marie Jacquard, a French weaver and merchant, created the oldest practical form of programming. He designed a loom that performs predefined tasks through feeding punched cards into a reading contraption.
During the 18th century, Charles Babbage, English mathematician and scientist; Known as the father of modern computing , he designed machines capable of performing complex mathematical operations. Babbage’s designs and inventions included the basis for adding machines and other mechanical calculating devices that became common business tools in the late 19th and early 20th centuries. In 1843, Ada Lovelace wrote a rudimentary program for the Analytical Engine, designed by Charles Babbage in 1827, but the machine never worked.
In 1847, George Boole (1815-1864), a British mathematician, demonstrated the relationship between mathematics and logic with his algebra of logic (Boolean algebra or binary logic). Boole was the first to show that logic is part of mathematics, not philosophy.
In 1939, William Shockley worked on the theory of tiny semiconductors to replace vacuum tubes. Semiconductors could handle electronic impulses at a rate of billions of times per second, rather than the 10,000-times-persecond rate of vacuum tubes. In 1945, John Von Neumann developed two important concepts that directly affected the path of programming languages:
- The first concept is known as “shared-program technique”. This technique indicates that the computer hardware must be simple and does not need to be wired for each program. Instead, complex instructions must be used to control the hardware, allowing it to be reprogrammed much more quickly.
- The second concept was also very important for the development of programming languages. Von Neumann called it “conditional control transfer”. This idea gave rise to subroutines, or small blocks of code that could be executed or jumped in any order, rather than a single set of steps arranged chronologically. The second part of the idea held that such code should be able to execute an action based on the result of an expression, defining the logical state of the command IF (expression), then (if… then) . Neuman also defined the loop as a FOR statement.. “Conditional transfer control” gave rise to the idea of ”libraries,” which are blocks of code that can be reused over and over again.
From the 1930s to the 1950s, punch cards became the driving force for business, being used in virtually all office accounting machines. The cards were created with programming languages such as FORTRAN from IBM and COBOL from the US Department of Defense. The term “software” was created in the late 1950s and was soon adopted throughout the industry. Dividing the software into two main types: system software and program applications. System software includes the general processes of program execution, such as compilers and disk operating system. Program applications include games and office applications.
The Algol language was created by a scientific committee for use in 1958. Algol is the basis for languages such as Pascal, C, C++, and Java. Pascal was created in 1968 by Niklaus Wirth. Its development is mainly due to the need for a good teaching tool. Pascal was designed with a very neat approach, combining many of the best features of the languages in use at the time, COBOL, FORTRAN, and ALGOL.
BASIC was developed in 1964 by John Kemeny and Kurtz Thomas. Currently Visual Basic is taught as the first programming language since it is based on the BASIC language. In the late 1970s and early 1980s, the Object Oriented Programming or OOP method was created. Objects are pieces of data that can be packaged and manipulated by the programmer. This set of extensions developed in the full-featured language of C++, which was released in 1983.
In the early 1990s, Sun Microsystems invented Java. A special portable language that can work with many types of machines. Perl was developed by Larry Wall in 1987. Wall searched for a language that combined all the best features of C, awk, and the Bourne Shell.
Software is constantly evolving and will follow as technology advances.