Topic: Software engineering
Programming language evolution is sometimes claimed to be a search for greater abstraction.
This is wrong, and mirrors the misunderstanding of biological evolution. There is no end-goal, no such thing as progress or improvement. It is about adaptation.
There are different kinds of models and different kinds of environmental factors, such as machine constraints, and how ignorant of mathematics and past programming languages the designers of a programming language are.
A good example of this is Google MapReduce. The programming paradigm goes back to APL. Limited support for parallelism was added in the form of vector co-processors on IBM mainframes. The first massively parallel implementation of the idea was StarLisp.
Another example is Objective C. Brad Cox claims that the only reason he developed Objective C was because at the time Xerox would not sell Smalltalk (Masterminds of Programming, p. 258).
The same thing can be said about C and Algol 68.