The Next 7000 Programming Languages, by Chatley, Donaldson, and Mycroft, appears in a book marking 10,000 volumes of LNCS. Though they riff on Landin's title, the authors consider something quite different: Darwinian evolution in the context of programming languages. I've long thought we need a theory of the economics of programming languages, to explain why the most popular language is not always that one might consider best suited to a task. But, until now, it's not been clear to me what such a theory might consist of, other than the observation that network effects apply to programming languages. This paper points in the direction of a theory of programming languages as a whole, drawing on evolutionary theory and with a potential grounding in empirical measures, such as scraping Github to measure which languages are more or less popular.
It is useful here to distinguish between the
success of a species of plant (or a programming language) and that of a
gene (or programming language concept). For example, while pure
functional languages such as Haskell have been successful in certain
programming niches the idea (gene) of passing side-effect-free functions
to map, reduce,
and similar operators for data processing, has recently been acquired
by many mainstream programming languages and systems; we later ascribe
this partly to the emergence of multi-core processors.
This
last example highlights perhaps the most pervasive form of competition
for niches (and for languages, or plants, to evolve in response):
climate change. Ecologically, an area becoming warmer or drier might
enable previously non-competitive species to get a foothold. Similarly,
even though a given programming task has not changed, we can see changes
in available hardware and infrastructure as a form of climate
change—what might be a great language for solving a programming problem
on a single-core processor may be much less suitable for multi-core
processors or data-centre solutions.
Amusingly,
other factors which encourage language adoption (e.g. libraries, tools,
etc.) have a plant analogy as symbiotes—porting (or creating) a wide
variety of libraries for a language enhances its prospects.