History and Development of Programming
In the beginning of the Information Age, computers were programmed by wiring instructions into the circuitry. One of various calculations was selected using switches or making connections to different logical units by wires.
The wiring of the switch boards became a thing of the past with the invention of vacuum tubes, and then the transistors.
Claude Shannon demonstrated the application of binary logic in computing to complete the software concept of modern computing.
Meanwhile, John Von Neumann’s concepts of shared-program technique and conditional control transfer, decoupled machine (hardware) from their execution (software), re-locatable code, and later subroutines and flow control.
At first, programming was done by typing in 1's or 0's that were stored on different information carriers, like paper tapes, punched hole cards, later magnetic drums, and much later magnetic and optical discs.Jaquard (1804, France) designed a loom that performed predefined tasks through feeding punched cards into a reading contraption
The next development was to combine groups of instruction into so called words, and written in shorthand as opcodes (Hopper 1948). The opcode was translated by another program into zeroes and ones, which formed machine instructions. These formed the modern day machine languages.
Programming in initial crude languages generated a lot of what was called, "spaghetti code", which still exists today, but only in much larger projects. Subroutines were developed to avoid this pitfall by climbing up the abstraction level.
Then IBM created FORmula TRANslator (1952), which was much more intuitive for computation. Fortran programs were then translated to machine readable format. It was the first major programming language as we know today.
In the meantime hardware developments made live for programmers a lot easier. But programs still had to be rewritten for each type of processor.
All machine specific tasks were delegated to a common module called Operating System (OS). The first fully portable language, C, was developed. Now, programs could be written independent of the underlying hardware, using libraries to perform all machine specific instructions. SourceCode could be reused, only to be recompiled when it had to run on other machines.
After Portability, came the problem of Reusability, and Object Oriented Programming was introduced with the development of Smalltalk. GUI’s were created to expedite the creation of software.
References:
1. Introduction to Software History – http://www.thocp.net/software/software_reference/introduction