  Programming languages are engineered languages that allow to instruct a
machine and share algorithmic information; they have a great influence on the
society since they underlie almost every information technology artefact, and
they are at the core of the current explosion of software technology. The
history of programming languages is marked by innovations, diversifications,
lateral transfers and social influences; moreover, it represents an
intermediate case study between the evolution of human languages and the
evolution of technology. In this paper we study the application of the
Darwinian explanation to the programming languages evolution by discussing to
what extent the evolutionary mechanisms distinctive of biology can be applied
to this area. We show that a number of evolutionary building blocks can be
recognised in the realm of computer languages, but we also identify critical
issues. Far from being crystal clear, this fine-grained study shows to be a
useful tool to assess recent results about programming languages phylogenies.
Finally, we show that rich evolutionary patterns, such as co-evolution,
macro-evolutionary trends, niche construction and exaptation, can be
effectively applied to programming languages and provide for interesting
explanatory tools.
