This site is concerned with the idea-historical treatment of the development of programming languages as a means of human expression and creation.
In 1976, at the History of Computing Conference in Los Alamos, Richard Hamming described why we might be interested in the history of computing: "we would know what they thought when they did it".
We need to know why the people who designed programming languages thought the way they did. When they designed languages, they made conscious choices, which we have to live with. And they made those choices for a wide variety of reasons, as many as the reasons for which they felt the need to create a language in the first place.
Sometimes this happened as a result of individuals with specific problems looking for a solution to them and finding in a programming language an answer: Forth, APL, Rexx, Perl, E, dBase are instances of this type.
Sometimes it is the opposite case - committees meet to decide on a solution - Algols 60 and 68, COBOL, PACT, Ada, CHILL, SQL are examples of these. Minutes and anecdotes show how the outcomes of these committees are compromise efforts that are the result of often bitter acrimony - witness the outbursts by the members of the IFIP 2.1 committee on Algol.
Once languages are implemented and in use, they take on a life of their own: languages can't be changed when in use because programs are already written in them. Design flaws come to light through use, and are rectified through what Niklaus Wirth calls language loopholes. As a result of these occurrences language communities fork and fragment until they become mutually unrecognizable.
Sometimes they are reunited again in a standard (as were LISP, COBOL, FORTRAN, C) - which has the effect of making older programs incompatible. Sometimes languages are abandoned by their designers who start again from basics (Wirth, Backus, Iverson all did this).
Each new language design is done in the context of the prior existence of others. Sometimes there is a strong family resemblance carried on - for example all Algol languages are more or less mutually comprehensible and intertranslatable; sometimes (as in the case of the functional and logical languages) there has been an intentional break with all precedents. To draw on languages cited above, both Algol and PACT were born of an expressed dissatisfaction with existing systems.
Above all they incorporate earlier design decisions. Even processes of rationalisation incorporate them either by acceptance or refutation. This is because they are cultural artefacts with a tradition and context like all cultural artefacts, subject to the vicissitudes of fashion trends, political embranglements and economic tides. We find that far from being created as pure scientific theoretical constructs, they are built for a variety of reasons and often in the most pressing of circumstances.
As the world becomes increasingly and overwhelmingly dependent on software, we find that the core of that software - programming languages and systems - remain a mystery to even their users, the programmers. By paying attention to the origin, rise and fall of each of the languages we may learn why they made their decisions.
"...Progress, far from consisting in change, depends on retentiveness. When change is absolute there remains no being to improve and no direction is set for possible improvement: and when experience is not retained, as among savages, infancy is perpetual. Those who cannot remember the past are condemned to repeat it. In the first stage of life the mind is frivolous and easily distracted, it misses progress by failing in consecutiveness and persistence. This is the condition of children and barbarians, in which instinct has learned nothing from experience...."
George Santayana, The Life of Reason, Volume 1, 1905