In my spare time (between all twenty other books I am reading), I thought I would glance at The Evolution of Lisp by Guy L. Steele Jr. and Richard P. Gabriel. Most of it is fairly Lisp focussed, but there are some parts (and I have only gotten through the first third) which are of interest to the programmer in general.
I sincerely recommend that everyone read part I. It discusses, in some depth, the manner whereby a dialect of Lisp will begin, develop, and then either thrive or perish. It is, in short, a brief, On the Origin of Programming Languages and I mean that in a very Darwinian sense.
It does seem of interest that each language established is created to address some problem or set of problems which has, to the best of the founder’s knowledge, no better known solution. In many cases the problems are technical, Lisp was originally created as a means of applying lambda calculus to create a unified inter-architecture interface for programmers, but sometimes they are aesthetic, Python and Ruby were created so that programmers would have fun, and sometimes simply because someone wanted to better understand something (Io and Scheme come to mind).
The point that this paper makes (in those two pages) is that this life-cycle can be thought of in terms of social dynamics. These dynamics and the subsequent developments related to them, can perhaps explain, justify, and perhaps event warrants, the excessive linguistic diversity which has evolved over the past half-century.
This is hardly a just treatment of the topic, after all, they spent several pages developing this topic, and this post is less than 300 words. But, I hope, at least, that this will provide some food for the mind.